EvEmu  0.8.4
11 September 2021
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
ClassDumpGenerator Class Reference

#include "DumpGenerator.h"

Inheritance diagram for ClassDumpGenerator:
Collaboration diagram for ClassDumpGenerator:

Public Member Functions

 ClassDumpGenerator (FILE *outputFile=NULL)
 
- Public Member Functions inherited from Generator
 Generator (FILE *outputFile=NULL)
 Primary constructor. More...
 
void SetOutputFile (FILE *outputFile)
 Sets output file. More...
 
- Public Member Functions inherited from XMLParserEx
template<typename T >
void AddMemberParser (const char *name, T &instance, bool(T::*method)(const TiXmlElement *))
 Adds a member parser. More...
 
template<typename T >
void AddValueParser (const char *name, T &value)
 Adds a value parser. More...
 
- Public Member Functions inherited from XMLParser
 XMLParser ()
 Primary constructor. More...
 
virtual ~XMLParser ()
 A destructor. More...
 
bool ParseFile (const char *file)
 Parses file using registered parsers. More...
 
bool ParseElement (const TiXmlElement *element) const
 Parses element using registered parsers. More...
 
bool ParseElementChildren (const TiXmlElement *element, size_t max=0) const
 Parses element's children using registered parsers. More...
 
void AddParser (const char *name, ElementParser *parser)
 Adds a parser. More...
 
void RemoveParser (const char *name)
 Removes a parser. More...
 
void ClearParsers ()
 Clears all parsers. More...
 

Protected Member Functions

void RegisterProcessors ()
 
bool ProcessElementDef (const TiXmlElement *field)
 
bool ProcessElement (const TiXmlElement *field)
 
bool ProcessElementPtr (const TiXmlElement *field)
 
bool ProcessRaw (const TiXmlElement *field)
 
bool ProcessInt (const TiXmlElement *field)
 
bool ProcessLong (const TiXmlElement *field)
 
bool ProcessReal (const TiXmlElement *field)
 
bool ProcessBool (const TiXmlElement *field)
 
bool ProcessNone (const TiXmlElement *field)
 
bool ProcessBuffer (const TiXmlElement *field)
 
bool ProcessString (const TiXmlElement *field)
 
bool ProcessStringInline (const TiXmlElement *field)
 
bool ProcessWString (const TiXmlElement *field)
 
bool ProcessWStringInline (const TiXmlElement *field)
 
bool ProcessToken (const TiXmlElement *field)
 
bool ProcessTokenInline (const TiXmlElement *field)
 
bool ProcessObject (const TiXmlElement *field)
 
bool ProcessObjectInline (const TiXmlElement *field)
 
bool ProcessObjectEx (const TiXmlElement *field)
 
bool ProcessTuple (const TiXmlElement *field)
 
bool ProcessTupleInline (const TiXmlElement *field)
 
bool ProcessList (const TiXmlElement *field)
 
bool ProcessListInline (const TiXmlElement *field)
 
bool ProcessListInt (const TiXmlElement *field)
 
bool ProcessListLong (const TiXmlElement *field)
 
bool ProcessListStr (const TiXmlElement *field)
 
bool ProcessDict (const TiXmlElement *field)
 
bool ProcessDictInline (const TiXmlElement *field)
 
bool ProcessDictInlineEntry (const TiXmlElement *field)
 
bool ProcessDictRaw (const TiXmlElement *field)
 
bool ProcessDictInt (const TiXmlElement *field)
 
bool ProcessDictStr (const TiXmlElement *field)
 
bool ProcessSubStreamInline (const TiXmlElement *field)
 
bool ProcessSubStructInline (const TiXmlElement *field)
 
- Protected Member Functions inherited from Generator
void RegisterProcessors ()
 
- Protected Member Functions inherited from XMLParserEx
template<typename T >
void AddMemberParser (const char *name, bool(T::*method)(const TiXmlElement *))
 Adds a member parser, assuming that instance is this. More...
 

Additional Inherited Members

- Public Attributes inherited from XMLParser
std::unique_ptr< TiXmlDocument > m_pXML_Document
 
- Static Protected Member Functions inherited from Generator
static const char * GetEncodeType (const TiXmlElement *element)
 Obtains encode type of given element. More...
 
- Protected Attributes inherited from Generator
FILE * mOutputFile
 

Detailed Description

Definition at line 31 of file DumpGenerator.h.

Constructor & Destructor Documentation

ClassDumpGenerator::ClassDumpGenerator ( FILE *  outputFile = NULL)

Definition at line 34 of file DumpGenerator.cpp.

References RegisterProcessors().

35 : Generator( outputFile )
36 {
38 }
Generator(FILE *outputFile=NULL)
Primary constructor.
Definition: Generator.cpp:38

Here is the call graph for this function:

Member Function Documentation

bool ClassDumpGenerator::ProcessBool ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 197 of file DumpGenerator.cpp.

References Generator::mOutputFile.

198 {
199  const char* name = field->Attribute( "name" );
200  if (name == nullptr) {
201  std::cout << std::endl << "name field at line " << field->Row() << " is missing the name attribute, skipping.";
202  return false;
203  }
204 
205  fprintf( mOutputFile,
206  " _log( l_type, \"%%s%s=%%s\", pfx, %s ? \"true\" : \"false\" );\n"
207  "\n",
208  name, name
209  );
210 
211  return true;
212 }
FILE * mOutputFile
Definition: Generator.h:108
bool ClassDumpGenerator::ProcessBuffer ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 219 of file DumpGenerator.cpp.

References Generator::mOutputFile.

220 {
221  const char* name = field->Attribute( "name" );
222  if (name == nullptr) {
223  std::cout << std::endl << "name field at line " << field->Row() << " is missing the name attribute, skipping.";
224  return false;
225  }
226 
227  fprintf( mOutputFile,
228  " _log( l_type, \"%%s%s: \", pfx );\n"
229  "\n"
230  " std::string %s_n( pfx );\n"
231  " %s_n += \" \";\n"
232  " %s->Dump( l_type, %s_n.c_str() );\n"
233  "\n",
234  name, name, name,
235  name, name
236  );
237 
238  return true;
239 }
FILE * mOutputFile
Definition: Generator.h:108
bool ClassDumpGenerator::ProcessDict ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 540 of file DumpGenerator.cpp.

References Generator::mOutputFile.

541 {
542  const char* name = field->Attribute( "name" );
543  if (name == nullptr) {
544  std::cout << std::endl << "name field at line " << field->Row() << " is missing the name attribute, skipping.";
545  return false;
546  }
547 
548  fprintf( mOutputFile,
549  " _log( l_type, \"%%s%s:\", pfx );\n"
550  "\n"
551  " std::string %s_n( pfx );\n"
552  " %s_n += \" \";\n"
553  " if (%s != nullptr)\n"
554  " %s->Dump( l_type, %s_n.c_str() );\n"
555  " else\n"
556  " _log( l_type, \"%%sERROR: dict = nullptr.\", %s_n.c_str() );\n"
557  "\n",
558  name, name, name,
559  name, name, name, name
560  );
561 
562  return true;
563 }
FILE * mOutputFile
Definition: Generator.h:108
bool ClassDumpGenerator::ProcessDictInline ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 565 of file DumpGenerator.cpp.

References XMLParser::ParseElementChildren().

566 {
567  //do we want to display the dict in the dump?
568  return ParseElementChildren( field );
569 }
bool ParseElementChildren(const TiXmlElement *element, size_t max=0) const
Parses element's children using registered parsers.
Definition: XMLParser.cpp:72

Here is the call graph for this function:

bool ClassDumpGenerator::ProcessDictInlineEntry ( const TiXmlElement *  field)
protected

Definition at line 571 of file DumpGenerator.cpp.

References key(), and XMLParser::ParseElementChildren().

Referenced by RegisterProcessors().

572 {
573  //we dont really even care about this...
574  const char* key = field->Attribute( "key" );
575  if (key == nullptr) {
576  std::cout << std::endl << "<dictInlineEntry> at line " << field->Row() << " is missing the key attribute, skipping.";
577  return false;
578  }
579 
580  return ParseElementChildren( field, 1 );
581 }
bool ParseElementChildren(const TiXmlElement *element, size_t max=0) const
Parses element's children using registered parsers.
Definition: XMLParser.cpp:72
typeID Spawn an NPC with the specified type text Search for items matching the specified query() type() key(value)-Send an OnRemoteMessage" ) COMMAND( setbpattr

Here is the call graph for this function:

Here is the caller graph for this function:

bool ClassDumpGenerator::ProcessDictInt ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 628 of file DumpGenerator.cpp.

References Generator::mOutputFile.

629 {
630  const char* name = field->Attribute( "name" );
631  if (name == nullptr) {
632  std::cout << std::endl << "name field at line " << field->Row() << " is missing the name attribute, skipping.";
633  return false;
634  }
635 
636  fprintf( mOutputFile,
637  " _log( l_type, \"%%s%s: Dictionary with %%lu entries\", pfx, %s.size() );\n"
638  "\n"
639  " for (auto cur : %s) {\n"
640  " _log( l_type, \"%%s Key: %%u\", pfx, cur.first );\n"
641  " std::string n( pfx );\n"
642  " n += \" \";\n"
643  " cur.second->Dump( l_type, n.c_str() );\n"
644  " }\n"
645  "\n",
646  name, name, name
647  );
648 
649  return true;
650 }
FILE * mOutputFile
Definition: Generator.h:108
bool ClassDumpGenerator::ProcessDictRaw ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 583 of file DumpGenerator.cpp.

References key(), and Generator::mOutputFile.

584 {
585  const char* name = field->Attribute( "name" );
586  if (name == nullptr) {
587  std::cout << std::endl << "name field at line " << field->Row() << " is missing the name attribute, skipping.";
588  return false;
589  }
590 
591  const char* key = field->Attribute( "key" );
592  if (key == nullptr) {
593  std::cout << std::endl << "field at line " << field->Row() << " is missing the key attribute, skipping.";
594  return false;
595  }
596  const char* pykey = field->Attribute( "pykey" );
597  if (pykey == nullptr) {
598  std::cout << std::endl << "field at line " << field->Row() << " is missing the pykey attribute, skipping.";
599  return false;
600  }
601  const char* value = field->Attribute( "value" );
602  if (value == nullptr) {
603  std::cout << std::endl << "field at line " << field->Row() << " is missing the value attribute, skipping.";
604  return false;
605  }
606  const char* pyvalue = field->Attribute( "pyvalue" );
607  if (pyvalue == nullptr) {
608  std::cout << std::endl << "field at line " << field->Row() << " is missing the pyvalue attribute, skipping.";
609  return false;
610  }
611 
612  //TODO: un-kludge this with respect to printf placeholders/types
613  //could make PyRep's out of them and use ->Dump, but thats annoying
614 
615  fprintf( mOutputFile,
616  " _log( l_type, \"%%s%s: Dictionary with %%lu entries\", pfx, %s.size() );\n"
617  "\n"
618  " /* total crap casting here since we do not know the correct printf format */\n"
619  " for (auto cur : %s)\n"
620  " _log( l_type, \"%%s Key: %%u -> Value: %%u\", pfx, uint32(cur.first), uint32(cur.second));\n"
621  "\n",
622  name, name, name
623  );
624 
625  return true;
626 }
FILE * mOutputFile
Definition: Generator.h:108
typeID Spawn an NPC with the specified type text Search for items matching the specified query() type() key(value)-Send an OnRemoteMessage" ) COMMAND( setbpattr

Here is the call graph for this function:

bool ClassDumpGenerator::ProcessDictStr ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 652 of file DumpGenerator.cpp.

References Generator::mOutputFile.

653 {
654  const char* name = field->Attribute( "name" );
655  if (name == nullptr) {
656  std::cout << std::endl << "name field at line " << field->Row() << " is missing the name attribute, skipping.";
657  return false;
658  }
659 
660  fprintf( mOutputFile,
661  " _log( l_type, \"%%s%s: Dictionary with %%lu entries\", pfx, %s.size() );\n"
662  "\n"
663  " for (auto cur : %s) {\n"
664  " _log( l_type, \"%%s Key: %%s\", pfx, cur.first.c_str() );\n"
665  " std::string n( pfx );\n"
666  " n += \" \";\n"
667  " cur.second->Dump( l_type, n.c_str() );\n"
668  " }\n"
669  "\n",
670  name, name, name
671  );
672 
673  return true;
674 }
FILE * mOutputFile
Definition: Generator.h:108
bool ClassDumpGenerator::ProcessElement ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 74 of file DumpGenerator.cpp.

References Generator::mOutputFile.

75 {
76  const char* name = field->Attribute( "name" );
77  if (name == nullptr) {
78  std::cout << std::endl << "name field at line " << field->Row() << " is missing the name attribute, skipping.";
79  return false;
80  }
81 
82  fprintf( mOutputFile,
83  " _log( l_type, \"%%s%s:\", pfx );\n"
84  "\n"
85  " std::string %s_n( pfx );\n"
86  " %s_n += \" \";\n"
87  " %s.Dump( l_type, %s_n.c_str() );\n"
88  "\n",
89  name, name, name,
90  name, name
91  );
92 
93  return true;
94 }
FILE * mOutputFile
Definition: Generator.h:108
bool ClassDumpGenerator::ProcessElementDef ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 47 of file DumpGenerator.cpp.

References Generator::mOutputFile, and XMLParser::ParseElementChildren().

48 {
49  const char* name = field->Attribute( "name" );
50  if (name == nullptr) {
51  std::cout << std::endl << "name field at line " << field->Row() << " is missing the name attribute, skipping.";
52  return false;
53  }
54 
55  fprintf( mOutputFile,
56  "void %s::Dump( LogType l_type, const char* pfx ) const\n"
57  "{\n"
58  " _log( l_type, \"%%s%s\", pfx );\n"
59  "\n",
60  name, name
61  );
62 
63  if( !ParseElementChildren( field ) )
64  return false;
65 
66  fprintf( mOutputFile,
67  "}\n"
68  "\n"
69  );
70 
71  return true;
72 }
FILE * mOutputFile
Definition: Generator.h:108
bool ParseElementChildren(const TiXmlElement *element, size_t max=0) const
Parses element's children using registered parsers.
Definition: XMLParser.cpp:72

Here is the call graph for this function:

bool ClassDumpGenerator::ProcessElementPtr ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 96 of file DumpGenerator.cpp.

References Generator::mOutputFile.

97 {
98  const char* name = field->Attribute( "name" );
99  if (name == nullptr) {
100  std::cout << std::endl << "name field at line " << field->Row() << " is missing the name attribute, skipping.";
101  return false;
102  }
103 
104  fprintf( mOutputFile,
105  " _log( l_type, \"%%s%s:\", pfx );\n"
106  "\n"
107  " std::string %s_n( pfx );\n"
108  " %s_n += \" \";\n"
109  " if (%s != nullptr)\n"
110  " %s->Dump( l_type, %s_n.c_str() );\n"
111  " else\n"
112  " _log( l_type, \"%%sERROR: ElementPtr = nullptr.\", %s_n.c_str() );\n"
113  "\n",
114  name, name, name, name,
115  name, name, name
116  );
117 
118  return true;
119 }
FILE * mOutputFile
Definition: Generator.h:108
bool ClassDumpGenerator::ProcessInt ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 146 of file DumpGenerator.cpp.

References Generator::mOutputFile.

147 {
148  const char* name = field->Attribute( "name" );
149  if (name == nullptr) {
150  std::cout << std::endl << "name field at line " << field->Row() << " is missing the name attribute, skipping.";
151  return false;
152  }
153 
154  fprintf( mOutputFile,
155  " _log( l_type, \"%%s%s=%%u\", pfx, %s );\n"
156  "\n",
157  name, name
158  );
159 
160  return true;
161 }
FILE * mOutputFile
Definition: Generator.h:108
bool ClassDumpGenerator::ProcessList ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 447 of file DumpGenerator.cpp.

References Generator::mOutputFile.

448 {
449  const char* name = field->Attribute( "name" );
450  if (name == nullptr) {
451  std::cout << std::endl << "name field at line " << field->Row() << " is missing the name attribute, skipping.";
452  return false;
453  }
454 
455  fprintf( mOutputFile,
456  " _log( l_type, \"%%s%s:\", pfx );\n"
457  "\n"
458  " std::string %s_n( pfx );\n"
459  " %s_n += \" \";\n"
460  " if (%s != nullptr)\n"
461  " %s->Dump( l_type, %s_n.c_str() );\n"
462  " else\n"
463  " _log( l_type, \"%%sERROR: list = nullptr.\", %s_n.c_str() );\n"
464  "\n",
465  name, name, name,
466  name, name, name, name
467  );
468 
469  return true;
470 }
FILE * mOutputFile
Definition: Generator.h:108
bool ClassDumpGenerator::ProcessListInline ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 472 of file DumpGenerator.cpp.

References XMLParser::ParseElementChildren().

473 {
474  //do we want to display the list in the dump?
475  return ParseElementChildren( field );
476 }
bool ParseElementChildren(const TiXmlElement *element, size_t max=0) const
Parses element's children using registered parsers.
Definition: XMLParser.cpp:72

Here is the call graph for this function:

bool ClassDumpGenerator::ProcessListInt ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 478 of file DumpGenerator.cpp.

References Generator::mOutputFile.

479 {
480  const char* name = field->Attribute( "name" );
481  if (name == nullptr) {
482  std::cout << std::endl << "name field at line " << field->Row() << " is missing the name attribute, skipping.";
483  return false;
484  }
485 
486  fprintf( mOutputFile,
487  " _log( l_type, \"%%s%s: Integer list with %%lu entries\", pfx, %s.size() );\n"
488  "\n"
489  " std::vector<int32>::const_iterator cur = %s.begin();\n"
490  " for (int index = 0; cur != %s.end(); ++cur, ++index )\n"
491  " _log( l_type, \"%%s [%%02d] %%d\", pfx, index, (*cur) );\n"
492  "\n",
493  name, name, name, name
494  );
495 
496  return true;
497 }
FILE * mOutputFile
Definition: Generator.h:108
bool ClassDumpGenerator::ProcessListLong ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 499 of file DumpGenerator.cpp.

References Generator::mOutputFile.

500 {
501  const char* name = field->Attribute( "name" );
502  if (name == nullptr) {
503  std::cout << std::endl << "name field at line " << field->Row() << " is missing the name attribute, skipping.";
504  return false;
505  }
506 
507  fprintf( mOutputFile,
508  " _log( l_type, \"%%s%s: Integer list with %%lu entries\", pfx, %s.size() );\n"
509  "\n"
510  " std::vector<int64>::const_iterator cur = %s.begin();\n"
511  " for (int index = 0; cur != %s.end(); ++cur, ++index )\n"
512  " _log( l_type, \"%%s [%%02d] %%li\", pfx, index, (*cur) );\n"
513  "\n",
514  name, name, name, name
515  );
516 
517  return true;
518 }
FILE * mOutputFile
Definition: Generator.h:108
bool ClassDumpGenerator::ProcessListStr ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 520 of file DumpGenerator.cpp.

References Generator::mOutputFile.

521 {
522  const char* name = field->Attribute( "name" );
523  if (name == nullptr) {
524  std::cout << std::endl << "name field at line " << field->Row() << " is missing the name attribute, skipping.";
525  return false;
526  }
527 
528  fprintf( mOutputFile,
529  " std::vector<std::string>::const_iterator %s_cur = %s.begin(), %s_end = %s.end();\n"
530  " for (int index = 0; %s_cur != %s_end; ++%s_cur, ++index )\n"
531  " _log( l_type, \"%%s [%%02d] %%s\", pfx, index, ( *%s_cur ).c_str() );\n"
532  "\n",
533  name, name, name, name,
534  name, name, name, name
535  );
536 
537  return true;
538 }
FILE * mOutputFile
Definition: Generator.h:108
bool ClassDumpGenerator::ProcessLong ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 163 of file DumpGenerator.cpp.

References Generator::mOutputFile.

164 {
165  const char* name = field->Attribute( "name" );
166  if (name == nullptr) {
167  std::cout << std::endl << "name field at line " << field->Row() << " is missing the name attribute, skipping.";
168  return false;
169  }
170 
171  fprintf( mOutputFile,
172  " _log( l_type, \"%%s%s=%%\" PRId64, pfx, %s );\n"
173  "\n",
174  name, name
175  );
176 
177  return true;
178 }
FILE * mOutputFile
Definition: Generator.h:108
bool ClassDumpGenerator::ProcessNone ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 214 of file DumpGenerator.cpp.

215 {
216  return true;
217 }
bool ClassDumpGenerator::ProcessObject ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 351 of file DumpGenerator.cpp.

References Generator::mOutputFile.

352 {
353  const char* name = field->Attribute( "name" );
354  if (name == nullptr) {
355  std::cout << std::endl << "name field at line " << field->Row() << " is missing the name attribute, skipping.";
356  return false;
357  }
358 
359  fprintf( mOutputFile,
360  " _log( l_type, \"%%s%s:\", pfx );\n"
361  "\n"
362  " std::string %s_n( pfx );\n"
363  " %s_n += \" \";\n"
364  " if (%s != nullptr)\n"
365  " %s->Dump( l_type, %s_n.c_str() );\n"
366  " else \n"
367  " _log( l_type, \"%%s nullptr\", pfx );\n"
368  "\n",
369  name, name, name,
370  name, name, name
371  );
372 
373  return true;
374 }
FILE * mOutputFile
Definition: Generator.h:108
bool ClassDumpGenerator::ProcessObjectEx ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 386 of file DumpGenerator.cpp.

References Generator::mOutputFile.

387 {
388  const char* name = field->Attribute( "name" );
389  if (name == nullptr) {
390  std::cout << std::endl << "name field at line " << field->Row() << " is missing the name attribute, skipping.";
391  return false;
392  }
393  const char* type = field->Attribute( "type" );
394  if (type == nullptr) {
395  std::cout << std::endl << "field at line " << field->Row() << " is missing the type attribute, skipping.";
396  return false;
397  }
398 
399  fprintf( mOutputFile,
400  " _log( l_type, \"%%s%s (%s):\", pfx );\n"
401  "\n"
402  " std::string %s_n( pfx );\n"
403  " %s_n += \" \";\n"
404  " if (%s != nullptr)\n"
405  " %s->Dump( l_type, %s_n.c_str() );\n"
406  " else\n"
407  " _log( l_type, \"%%s nullptr\", pfx );\n"
408  "\n",
409  name, type, name,
410  name, name, name, name
411  );
412 
413  return true;
414 }
FILE * mOutputFile
Definition: Generator.h:108
bool ClassDumpGenerator::ProcessObjectInline ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 376 of file DumpGenerator.cpp.

References Generator::mOutputFile, and XMLParser::ParseElementChildren().

377 {
378  fprintf( mOutputFile,
379  " _log( l_type, \"%%sObject:\", pfx );\n"
380  "\n"
381  );
382 
383  return ParseElementChildren( field, 2 );
384 }
FILE * mOutputFile
Definition: Generator.h:108
bool ParseElementChildren(const TiXmlElement *element, size_t max=0) const
Parses element's children using registered parsers.
Definition: XMLParser.cpp:72

Here is the call graph for this function:

bool ClassDumpGenerator::ProcessRaw ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 121 of file DumpGenerator.cpp.

References Generator::mOutputFile.

122 {
123  const char* name = field->Attribute( "name" );
124  if (name == nullptr) {
125  std::cout << std::endl << "name field at line " << field->Row() << " is missing the name attribute, skipping.";
126  return false;
127  }
128 
129  fprintf( mOutputFile,
130  " _log( l_type, \"%%s%s:\", pfx );\n"
131  "\n"
132  " std::string %s_n( pfx );\n"
133  " %s_n += \" \";\n"
134  " if (%s != nullptr)\n"
135  " %s->Dump( l_type, %s_n.c_str() );\n"
136  " else\n"
137  " _log( l_type, \"%%sERROR: raw = nullptr.\", %s_n.c_str() );\n"
138  "\n",
139  name, name, name, name,
140  name, name, name
141  );
142 
143  return true;
144 }
FILE * mOutputFile
Definition: Generator.h:108
bool ClassDumpGenerator::ProcessReal ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 180 of file DumpGenerator.cpp.

References Generator::mOutputFile.

181 {
182  const char* name = field->Attribute( "name" );
183  if (name == nullptr) {
184  std::cout << std::endl << "name field at line " << field->Row() << " is missing the name attribute, skipping.";
185  return false;
186  }
187 
188  fprintf( mOutputFile,
189  " _log( l_type, \"%%s%s=%%.13f\", pfx, %s );\n"
190  "\n",
191  name, name
192  );
193 
194  return true;
195 }
FILE * mOutputFile
Definition: Generator.h:108
bool ClassDumpGenerator::ProcessString ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 241 of file DumpGenerator.cpp.

References Generator::mOutputFile.

242 {
243  const char* name = field->Attribute( "name" );
244  if (name == nullptr) {
245  std::cout << std::endl << "name field at line " << field->Row() << " is missing the name attribute, skipping.";
246  return false;
247  }
248 
249  fprintf( mOutputFile,
250  " _log( l_type, \"%%s%s='%%s'\", pfx, %s.c_str() );\n"
251  "\n",
252  name, name
253  );
254 
255  return true;
256 }
FILE * mOutputFile
Definition: Generator.h:108
bool ClassDumpGenerator::ProcessStringInline ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 258 of file DumpGenerator.cpp.

References Generator::mOutputFile.

259 {
260  const char* value = field->Attribute( "value" );
261  if (value == nullptr) {
262  std::cout << std::endl << "string element at line " << field->Row() << " has no value attribute, skipping.";
263  return false;
264  }
265 
266  fprintf( mOutputFile,
267  " _log( l_type, \"%%sString '%s'\", pfx );\n"
268  "\n",
269  value
270  );
271 
272  return true;
273 }
FILE * mOutputFile
Definition: Generator.h:108
bool ClassDumpGenerator::ProcessSubStreamInline ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 676 of file DumpGenerator.cpp.

References XMLParser::ParseElementChildren().

677 {
678  //do we want to display the substream in the dump?
679  return ParseElementChildren( field, 1 );
680 }
bool ParseElementChildren(const TiXmlElement *element, size_t max=0) const
Parses element's children using registered parsers.
Definition: XMLParser.cpp:72

Here is the call graph for this function:

bool ClassDumpGenerator::ProcessSubStructInline ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 682 of file DumpGenerator.cpp.

References XMLParser::ParseElementChildren().

683 {
684  return ParseElementChildren( field, 1 );
685 }
bool ParseElementChildren(const TiXmlElement *element, size_t max=0) const
Parses element's children using registered parsers.
Definition: XMLParser.cpp:72

Here is the call graph for this function:

bool ClassDumpGenerator::ProcessToken ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 309 of file DumpGenerator.cpp.

References Generator::mOutputFile.

310 {
311  const char* name = field->Attribute( "name" );
312  if (name == nullptr) {
313  std::cout << std::endl << "name field at line " << field->Row() << " is missing the name attribute, skipping.";
314  return false;
315  }
316 
317  fprintf( mOutputFile,
318  " _log( l_type, \"%%s%s:\", pfx );\n"
319  "\n"
320  " std::string %s_n( pfx );\n"
321  " %s_n += \" \";\n"
322  " if (%s != nullptr)\n"
323  " %s->Dump( l_type, %s_n.c_str() );\n"
324  " else\n"
325  " _log( l_type, \"%%sERROR: token = nullptr.\", %s_n.c_str() );\n"
326  "\n",
327  name, name, name, name,
328  name, name, name
329  );
330 
331  return true;
332 }
FILE * mOutputFile
Definition: Generator.h:108
bool ClassDumpGenerator::ProcessTokenInline ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 334 of file DumpGenerator.cpp.

References Generator::mOutputFile.

335 {
336  const char* value = field->Attribute( "value" );
337  if (value == nullptr) {
338  std::cout << std::endl << "token element at line " << field->Row() << " has no value attribute, skipping.";
339  return false;
340  }
341 
342  fprintf( mOutputFile,
343  " _log( l_type, \"%%sToken '%s'\", pfx );\n"
344  "\n",
345  value
346  );
347 
348  return true;
349 }
FILE * mOutputFile
Definition: Generator.h:108
bool ClassDumpGenerator::ProcessTuple ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 416 of file DumpGenerator.cpp.

References Generator::mOutputFile.

417 {
418  const char* name = field->Attribute( "name" );
419  if (name == nullptr) {
420  std::cout << std::endl << "name field at line " << field->Row() << " is missing the name attribute, skipping.";
421  return false;
422  }
423 
424  fprintf( mOutputFile,
425  " _log( l_type, \"%%s%s:\", pfx );\n"
426  "\n"
427  " std::string %s_n( pfx );\n"
428  " %s_n += \" \";\n"
429  " if (%s != nullptr)\n"
430  " %s->Dump( l_type, %s_n.c_str() );\n"
431  " else\n"
432  " _log( l_type, \"%%sERROR: tuple = nullptr.\", %s_n.c_str() );\n"
433  "\n",
434  name, name, name,
435  name, name, name, name
436  );
437 
438  return true;
439 }
FILE * mOutputFile
Definition: Generator.h:108
bool ClassDumpGenerator::ProcessTupleInline ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 441 of file DumpGenerator.cpp.

References XMLParser::ParseElementChildren().

442 {
443  //do we want to display the tuple in the dump?
444  return ParseElementChildren( field );
445 }
bool ParseElementChildren(const TiXmlElement *element, size_t max=0) const
Parses element's children using registered parsers.
Definition: XMLParser.cpp:72

Here is the call graph for this function:

bool ClassDumpGenerator::ProcessWString ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 275 of file DumpGenerator.cpp.

References Generator::mOutputFile.

276 {
277  const char* name = field->Attribute( "name" );
278  if (name == nullptr) {
279  std::cout << std::endl << "name field at line " << field->Row() << " is missing the name attribute, skipping.";
280  return false;
281  }
282 
283  fprintf( mOutputFile,
284  " _log( l_type, \"%%s%s='%%s'\", pfx, %s.c_str() );\n"
285  "\n",
286  name, name
287  );
288 
289  return true;
290 }
FILE * mOutputFile
Definition: Generator.h:108
bool ClassDumpGenerator::ProcessWStringInline ( const TiXmlElement *  field)
protectedvirtual

Implements Generator.

Definition at line 292 of file DumpGenerator.cpp.

References Generator::mOutputFile.

293 {
294  const char* value = field->Attribute( "value" );
295  if (value == nullptr) {
296  std::cout << std::endl << "wstring element at line " << field->Row() << " has no value attribute, skipping.";
297  return false;
298  }
299 
300  fprintf( mOutputFile,
301  " _log( l_type, \"%%sWString '%s'\", pfx );\n"
302  "\n",
303  value
304  );
305 
306  return true;
307 }
FILE * mOutputFile
Definition: Generator.h:108
void ClassDumpGenerator::RegisterProcessors ( )
protected

Definition at line 40 of file DumpGenerator.cpp.

References XMLParserEx::AddMemberParser(), ProcessDictInlineEntry(), and Generator::RegisterProcessors().

Referenced by ClassDumpGenerator().

41 {
43 
45 }
bool ProcessDictInlineEntry(const TiXmlElement *field)
void RegisterProcessors()
Definition: Generator.cpp:44
void AddMemberParser(const char *name, T &instance, bool(T::*method)(const TiXmlElement *))
Adds a member parser.
Definition: XMLParserEx.h:55

Here is the call graph for this function:

Here is the caller graph for this function:


The documentation for this class was generated from the following files: