EvEmu  0.8.4
11 September 2021
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Generator.h
Go to the documentation of this file.
1 /*
2  ------------------------------------------------------------------------------------
3  LICENSE:
4  ------------------------------------------------------------------------------------
5  This file is part of EVEmu: EVE Online Server Emulator
6  Copyright 2006 - 2021 The EVEmu Team
7  For the latest information visit https://evemu.dev
8  ------------------------------------------------------------------------------------
9  This program is free software; you can redistribute it and/or modify it under
10  the terms of the GNU Lesser General Public License as published by the Free Software
11  Foundation; either version 2 of the License, or (at your option) any later
12  version.
13 
14  This program is distributed in the hope that it will be useful, but WITHOUT
15  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16  FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
17 
18  You should have received a copy of the GNU Lesser General Public License along with
19  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
20  Place - Suite 330, Boston, MA 02111-1307, USA, or go to
21  http://www.gnu.org/copyleft/lesser.txt.
22  ------------------------------------------------------------------------------------
23  Author: Zhur
24 */
25 
26 #ifndef __GENERATOR_H_INCL__
27 #define __GENERATOR_H_INCL__
28 
37 class Generator
38 : public XMLParserEx
39 {
40 public:
46  Generator( FILE* outputFile = NULL );
47 
53  void SetOutputFile( FILE* outputFile ) { mOutputFile = outputFile; }
54 
55 protected:
57  void RegisterProcessors();
58 
59  virtual bool ProcessElementDef( const TiXmlElement* field ) = 0;
60  virtual bool ProcessElement( const TiXmlElement* field ) = 0;
61  virtual bool ProcessElementPtr( const TiXmlElement* field ) = 0;
62 
63  virtual bool ProcessRaw( const TiXmlElement* field ) = 0;
64  virtual bool ProcessInt( const TiXmlElement* field ) = 0;
65  virtual bool ProcessLong( const TiXmlElement* field ) = 0;
66  virtual bool ProcessReal( const TiXmlElement* field ) = 0;
67  virtual bool ProcessBool( const TiXmlElement* field ) = 0;
68  virtual bool ProcessNone( const TiXmlElement* field ) = 0;
69  virtual bool ProcessBuffer( const TiXmlElement* field ) = 0;
70 
71  virtual bool ProcessString( const TiXmlElement* field ) = 0;
72  virtual bool ProcessStringInline( const TiXmlElement* field ) = 0;
73  virtual bool ProcessWString( const TiXmlElement* field ) = 0;
74  virtual bool ProcessWStringInline( const TiXmlElement* field ) = 0;
75  virtual bool ProcessToken( const TiXmlElement* field ) = 0;
76  virtual bool ProcessTokenInline( const TiXmlElement* field ) = 0;
77 
78  virtual bool ProcessObject( const TiXmlElement* field ) = 0;
79  virtual bool ProcessObjectInline( const TiXmlElement* field ) = 0;
80  virtual bool ProcessObjectEx( const TiXmlElement* field ) = 0;
81 
82  virtual bool ProcessTuple( const TiXmlElement* field ) = 0;
83  virtual bool ProcessTupleInline( const TiXmlElement* field ) = 0;
84  virtual bool ProcessList( const TiXmlElement* field ) = 0;
85  virtual bool ProcessListInline( const TiXmlElement* field ) = 0;
86  virtual bool ProcessListInt( const TiXmlElement* field ) = 0;
87  virtual bool ProcessListLong( const TiXmlElement* field ) = 0;
88  virtual bool ProcessListStr( const TiXmlElement* field ) = 0;
89  virtual bool ProcessDict( const TiXmlElement* field ) = 0;
90  virtual bool ProcessDictInline( const TiXmlElement* field ) = 0;
91  virtual bool ProcessDictRaw( const TiXmlElement* field ) = 0;
92  virtual bool ProcessDictInt( const TiXmlElement* field ) = 0;
93  virtual bool ProcessDictStr( const TiXmlElement* field ) = 0;
94 
95  virtual bool ProcessSubStreamInline( const TiXmlElement* field ) = 0;
96  virtual bool ProcessSubStructInline( const TiXmlElement* field ) = 0;
97 
105  static const char* GetEncodeType( const TiXmlElement* element );
106 
108  FILE* mOutputFile;
109 
110 private:
112  static void LoadEncTypes();
113 
115  static bool smEncTypesLoaded;
117  static std::map<std::string, std::string> smEncTypes;
118 };
119 
120 #endif
virtual bool ProcessList(const TiXmlElement *field)=0
virtual bool ProcessDictInt(const TiXmlElement *field)=0
virtual bool ProcessDictStr(const TiXmlElement *field)=0
virtual bool ProcessBuffer(const TiXmlElement *field)=0
virtual bool ProcessSubStructInline(const TiXmlElement *field)=0
virtual bool ProcessWStringInline(const TiXmlElement *field)=0
void RegisterProcessors()
Definition: Generator.cpp:44
virtual bool ProcessObject(const TiXmlElement *field)=0
virtual bool ProcessDictRaw(const TiXmlElement *field)=0
virtual bool ProcessElementDef(const TiXmlElement *field)=0
virtual bool ProcessElementPtr(const TiXmlElement *field)=0
virtual bool ProcessDictInline(const TiXmlElement *field)=0
virtual bool ProcessLong(const TiXmlElement *field)=0
void SetOutputFile(FILE *outputFile)
Sets output file.
Definition: Generator.h:53
virtual bool ProcessTokenInline(const TiXmlElement *field)=0
virtual bool ProcessWString(const TiXmlElement *field)=0
virtual bool ProcessListInline(const TiXmlElement *field)=0
virtual bool ProcessInt(const TiXmlElement *field)=0
virtual bool ProcessTuple(const TiXmlElement *field)=0
virtual bool ProcessObjectInline(const TiXmlElement *field)=0
virtual bool ProcessElement(const TiXmlElement *field)=0
virtual bool ProcessObjectEx(const TiXmlElement *field)=0
virtual bool ProcessRaw(const TiXmlElement *field)=0
virtual bool ProcessListLong(const TiXmlElement *field)=0
FILE * mOutputFile
Definition: Generator.h:108
virtual bool ProcessListStr(const TiXmlElement *field)=0
A somewhat extended version of XMLParser.
Definition: XMLParserEx.h:37
virtual bool ProcessString(const TiXmlElement *field)=0
static bool smEncTypesLoaded
Definition: Generator.h:115
virtual bool ProcessStringInline(const TiXmlElement *field)=0
Generator(FILE *outputFile=NULL)
Primary constructor.
Definition: Generator.cpp:38
static void LoadEncTypes()
Definition: Generator.cpp:95
static std::map< std::string, std::string > smEncTypes
Definition: Generator.h:117
virtual bool ProcessBool(const TiXmlElement *field)=0
virtual bool ProcessNone(const TiXmlElement *field)=0
static const char * GetEncodeType(const TiXmlElement *element)
Obtains encode type of given element.
Definition: Generator.cpp:86
virtual bool ProcessListInt(const TiXmlElement *field)=0
virtual bool ProcessReal(const TiXmlElement *field)=0
virtual bool ProcessToken(const TiXmlElement *field)=0
Generic class for eve-xmlpktgen's generators.
Definition: Generator.h:37
virtual bool ProcessSubStreamInline(const TiXmlElement *field)=0
virtual bool ProcessTupleInline(const TiXmlElement *field)=0
virtual bool ProcessDict(const TiXmlElement *field)=0