VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
xmlDisDictionary.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2016 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 #pragma warning (disable:4503)
11 
12 #include <vrfGuiCore/vrfGuiCore.h>
14 
15 #include <stdio.h>
16 #include <string.h>
17 #include <stdlib.h>
18 #include <libxml/xmlmemory.h>
19 #include <libxml/parser.h>
20 #include <fstream>
21 #include <sstream>
22 #include <map>
23 #include <string>
24 
25 namespace makVrf
26 {
27  typedef std::map<int, std::string> DtValueDescriptionMap;
28  typedef DtValueDescriptionMap::const_iterator DtValueDescriptionMapConstIterator;
29  typedef DtValueDescriptionMap::iterator DtValueDescriptionMapIterator;
30 
31  const int DtAggregate = 11;
32 
34  typedef void (*DtSisoEntryReader)(xmlNodePtr node, void* usr);
35 
37  enum
38  {
56  };
57 
59  {
60  protected:
61 
62  typedef int SISOExtra;
63  typedef int SISOCountry;
64  typedef int SISOCategory;
65  typedef int SISOSubcategory;
66  typedef int SISOSpecific;
67  typedef int SISODomain;
68  typedef int SISOKind;
69 
70  typedef std::map<int, std::string> IntStringMap;
71  typedef std::map<SISOSpecific, std::pair<std::string, IntStringMap> > SISOSpecificMap;
72  typedef std::map<SISOSubcategory, std::pair<std::string, SISOSpecificMap> > SISOSubcategoryMap;
73  typedef std::map<SISOCategory, SISOSubcategoryMap> SISOCategoryMap;
74  typedef std::map<SISOCountry, SISOCategoryMap> SISOCountryMap;
75  typedef std::map<SISODomain, SISOCountryMap> SISODomainMap;
76  typedef std::map<SISOKind, SISODomainMap> SISOKindMap;
77 
78  public:
79 
81  virtual ~DtXmlDisDictionary();
82 
83  virtual bool loadFromFile(const std::string& filename);
84 
85  protected:
86  virtual void registerCallback(int entryType, DtSisoEntryReader cb, void* usrData);
87  virtual void unregisterCallback(int entryType, DtSisoEntryReader cb, void* usrData);
88 
89  public:
90 
91  virtual bool countryList(std::map<int, std::string>& list);
92  virtual int country(const std::string& s) const;
93  virtual std::string country(int cty) const;
94 
95  virtual bool warheadList(std::map<int, std::string>& list);
96  virtual int warhead(const std::string& s);
97  virtual std::string warhead(int wd);
98 
99  virtual bool kindList(std::map<int, std::string>& list);
100  virtual int kind(const std::string& s);
101  virtual std::string kind(int kd);
102 
103  virtual bool domainList(int kind, std::map<int, std::string>& list);
104  virtual int domain(int kind, const std::string& s);
105  virtual std::string domain(int kind, int dom);
106 
107  virtual bool categoryList(int kind, int domain, std::map<int, std::string>& list);
108  virtual int category(int kind, int domain, const std::string& s);
109  virtual std::string category(int kind, int domain, int cat);
110 
111  virtual bool subcategoryList(int kind, int domain, int country, int cat, std::map<int, std::string>& list);
112  virtual int subcategory(int kind, int domain, int country, int cat, const std::string& s);
113  virtual std::string subcategory(int kind, int domain, int country, int cat, int subcat);
114 
115  virtual bool specificList(int kind, int domain, int country, int cat, int subcat, std::map<int, std::string>& list);
116  virtual int specific(int kind, int domain, int country, int cat, int subcat, const std::string& s);
117  virtual std::string specific(int kind, int domain, int country, int cat, int subcat, int spec);
118 
119  virtual bool extraList(int kind, int domain, int country, int cat, int subcat, int specific, std::map<int, std::string>& list);
120  virtual int extra(int kind, int domain, int country, int cat, int subcat, int specific, const std::string& s);
121  virtual std::string extra(int kind, int domain, int country, int cat, int subcat, int spec, int extra);
122 
123  virtual bool extractData(DtValueDescriptionMap* map, int id, const char* type ="enum") const;
124 
126  virtual std::string displayName(const DtEntityType&, bool includeKind = true, int stopAt = 5);
127 
129  virtual std::string enumerationStrings(const DtEntityType&);
130 
132  virtual DtString articulatedPart(int) const;
133 
134  public:
135 
136  static void readCountryCodesCb(xmlNodePtr node, void* usr);
137  static void readKindsCb(xmlNodePtr node, void* usr);
138  static void readDomainsPlatformCb(xmlNodePtr node, void* usr);
139  static void readCategoryPlatLandCb(xmlNodePtr node, void* usr);
140  static void readCategoryPlatAirCb(xmlNodePtr node, void* usr);
141  static void readCategoryPlatSurfaceCb(xmlNodePtr node, void* usr);
142  static void readCategoryPlatSubsurfaceCb(xmlNodePtr node, void* usr);
143  static void readCategoryPlatSpaceCb(xmlNodePtr node, void* usr);
144  static void readDomainsMunitionCb(xmlNodePtr node, void* usr);
145  static void readCategoryMunitionCb(xmlNodePtr node, void* usr);
146  static void readCategoryAggsCb(xmlNodePtr node, void* usr);
147  static void readSubcategoryAggsCb(xmlNodePtr node, void* usr);
148  static void readWarheadsCb(xmlNodePtr node, void* usr);
149  static void readArticulatedPartsCb(xmlNodePtr node, void* usr);
150  static void readAllCb(xmlNodePtr node, void* usr);
151 
152  protected:
153  virtual xmlNodePtr nodeToProcess(xmlNodePtr node) const;
154 
155  virtual void readCountryCodes(xmlNodePtr node);
156  virtual void readKinds(xmlNodePtr node);
157  virtual void readDomains(xmlNodePtr node, int kind);
158  virtual void readCategories(xmlNodePtr node, int kind, int domain);
159  virtual SISOSubcategoryMap readSubcategories(xmlNodePtr node, int kind, int domain, int country, int cat);
160  virtual void readAll(xmlNodePtr node);
161  virtual void readSubcategoriesAggs(xmlNodePtr node);
162  void readCategoryAggsInner(xmlNodePtr node, int kind,int domain);
163  void readCategoryAggs(xmlNodePtr node);
164  virtual void readWarheads(xmlNodePtr node);
165  virtual void readArticulatedParts(xmlNodePtr node);
166 
167  virtual int xmlChartoInt(xmlChar* c) const;
168  virtual void processSingleLevelEntry(xmlNodePtr node, std::map<int, std::string>& l) const;
169 
170  virtual void parseSpecifics(SISOSubcategoryMap::iterator, xmlNodePtr);
171 
172  protected:
173  std::map<int, std::pair<DtSisoEntryReader,void*> > myReadersMap;
174 
177 
180 
183 
184  typedef std::map<SISOKind, IntStringMap> DomainMap;
186 
187  typedef std::map<SISOKind, std::map<SISODomain, IntStringMap> > CategoryMap;
189 
191 
194 
195  protected:
196  xmlDocPtr myDoc;
197  };
198 }

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)