00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _C_XML_PARSER_H_
00021 #define _C_XML_PARSER_H_
00022
00023 #include "C_XmlData.hpp"
00024
00025 #include "string_t.hpp"
00026 #include "vector_t.hpp"
00027 #include <cstdio>
00028
00029 class C_XmlParser {
00030
00031 public:
00032 C_XmlParser();
00033 ~C_XmlParser();
00034
00035
00036 int lex_string_value_update (char) ;
00037 void lex_string_value_reset () ;
00038 char *get_lex_string_value () ;
00039
00040 void lex_integer_update (char*) ;
00041 int get_lex_integer ();
00042
00043
00044 void new_xml_data (char *P_name) ;
00045 void new_xml_field (char *P_name) ;
00046 void add_xml_field (char *P_value) ;
00047 void save_xml_data () ;
00048 void retrieve_xml_data () ;
00049 void add_sub_xml_data () ;
00050 bool check_xml_data_name (char *P_name, int P_line) ;
00051
00052 C_XmlData * parse (int P_nb, string_t *P_fileName, int *P_error);
00053
00054 string_t& get_current_file_name() ;
00055 FILE* next_file () ;
00056
00057 private:
00058
00059 char* m_lex_string_value ;
00060 int m_lex_string_index ;
00061 int m_lex_max_string_size ;
00062
00063 int m_lex_integer ;
00064
00065
00066 C_XmlData *m_pCurrentXmlData, *m_pXmldata ;
00067 vector_t<C_XmlData*> m_vector ;
00068 vector_t<C_XmlData*>::reverse_iterator m_vector_rit ;
00069 C_XmlData::C_XmlField *m_pXmlfield ;
00070
00071
00072
00073 string_t *m_file_name_table ;
00074 int m_current_file ;
00075 int m_nb_file ;
00076
00077 void init () ;
00078
00079
00080 } ;
00081
00082 #endif // _C_XML_PARSER_H