Aegis  4.25.D505
/home/archives/aegis/branch.4/branch.25/delta28933.505/libaegis/xml_node/iso_639_3.h
Go to the documentation of this file.
00001 //
00002 // aegis - project change supervisor
00003 // Copyright (C) 2012 Peter Miller
00004 //
00005 // This program is free software; you can redistribute it and/or modify
00006 // it under the terms of the GNU General Public License as published by
00007 // the Free Software Foundation; either version 3 of the License, or (at
00008 // your option) any later version.
00009 //
00010 // This program is distributed in the hope that it will be useful,
00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013 // General Public License for more details.
00014 //
00015 // You should have received a copy of the GNU General Public License along
00016 // with this program. If not, see <http://www.gnu.org/licenses/>.
00017 //
00018 
00019 #ifndef LIBAEGIS_XML_NODE_ISO_639_3_H
00020 #define LIBAEGIS_XML_NODE_ISO_639_3_H
00021 
00022 #include <common/config.h>
00023 #include <map>
00024 
00025 #include <common/nstring.h>
00026 #include <libaegis/xml_node.h>
00027 
00032 class xml_node_iso_639_3:
00033     public xml_node
00034 {
00035 public:
00039     virtual ~xml_node_iso_639_3();
00040 
00044     xml_node_iso_639_3();
00045 
00046     bool need_setup(void);
00047 
00048     bool is_a_valid_code(const nstring &text) const;
00049 
00050 protected:
00051     // See base class for documentation.
00052     void element_begin(const nstring &name);
00053 
00054     // See base class for documentation.
00055     void attribute(const nstring &name, const nstring &value);
00056 
00057     // See base class for documentation.
00058     void element_end(const nstring &name);
00059 
00060 private:
00061     typedef std::map<nstring, nstring> codes_t;
00062 
00067     codes_t codes;
00068 
00073     nstring id;
00074 
00080     nstring part1_code;
00081 
00087     nstring part2_code;
00088 
00098     void assign(const nstring &key, const nstring &value);
00099 
00103     xml_node_iso_639_3(const xml_node_iso_639_3 &);
00104 
00108     xml_node_iso_639_3 &operator=(const xml_node_iso_639_3 &);
00109 };
00110 
00111 // vim: set ts=8 sw=4 et :
00112 #endif // LIBAEGIS_XML_NODE_ISO_639_3_H