VR-Forces Development_Version Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
xmlDisDictionary.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2012 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  {
55  };
56 
58  {
59  protected:
60 
61  typedef int SISOExtra;
62  typedef int SISOCountry;
63  typedef int SISOCategory;
64  typedef int SISOSubcategory;
65  typedef int SISOSpecific;
66  typedef int SISODomain;
67  typedef int SISOKind;
68 
69  typedef std::map<int, std::string> IntStringMap;
70  typedef std::map<SISOSpecific, std::pair<std::string, IntStringMap> > SISOSpecificMap;
71  typedef std::map<SISOSubcategory, std::pair<std::string, SISOSpecificMap> > SISOSubcategoryMap;
72  typedef std::map<SISOCategory, SISOSubcategoryMap> SISOCategoryMap;
73  typedef std::map<SISOCountry, SISOCategoryMap> SISOCountryMap;
74  typedef std::map<SISODomain, SISOCountryMap> SISODomainMap;
75  typedef std::map<SISOKind, SISODomainMap> SISOKindMap;
76 
77  public:
78 
80  virtual ~DtXmlDisDictionary();
81 
82  virtual bool loadFromFile(const std::string& filename);
83 
84  protected:
85  virtual void registerCallback(int entryType, DtSisoEntryReader cb, void* usrData);
86  virtual void unregisterCallback(int entryType, DtSisoEntryReader cb, void* usrData);
87 
88  public:
89 
90  virtual bool countryList(std::map<int, std::string>& list);
91  virtual int country(const std::string& s) const;
92  virtual std::string country(int cty) const;
93 
94  virtual bool warheadList(std::map<int, std::string>& list);
95  virtual int warhead(const std::string& s);
96  virtual std::string warhead(int wd);
97 
98  virtual bool kindList(std::map<int, std::string>& list);
99  virtual int kind(const std::string& s);
100  virtual std::string kind(int kd);
101 
102  virtual bool domainList(int kind, std::map<int, std::string>& list);
103  virtual int domain(int kind, const std::string& s);
104  virtual std::string domain(int kind, int dom);
105 
106  virtual bool categoryList(int kind, int domain, std::map<int, std::string>& list);
107  virtual int category(int kind, int domain, const std::string& s);
108  virtual std::string category(int kind, int domain, int cat);
109 
110  virtual bool subcategoryList(int kind, int domain, int country, int cat, std::map<int, std::string>& list);
111  virtual int subcategory(int kind, int domain, int country, int cat, const std::string& s);
112  virtual std::string subcategory(int kind, int domain, int country, int cat, int subcat);
113 
114  virtual bool specificList(int kind, int domain, int country, int cat, int subcat, std::map<int, std::string>& list);
115  virtual int specific(int kind, int domain, int country, int cat, int subcat, const std::string& s);
116  virtual std::string specific(int kind, int domain, int country, int cat, int subcat, int spec);
117 
118  virtual bool extraList(int kind, int domain, int country, int cat, int subcat, int specific, std::map<int, std::string>& list);
119  virtual int extra(int kind, int domain, int country, int cat, int subcat, int specific, const std::string& s);
120  virtual std::string extra(int kind, int domain, int country, int cat, int subcat, int spec, int extra);
121 
122  virtual bool extractData(DtValueDescriptionMap* map, int id, const char* type ="enum") const;
123 
125  virtual std::string displayName(const DtEntityType&);
126 
128  virtual std::string enumerationStrings(const DtEntityType&);
129 
130  public:
131 
132  static void readCountryCodesCb(xmlNodePtr node, void* usr);
133  static void readKindsCb(xmlNodePtr node, void* usr);
134  static void readDomainsPlatformCb(xmlNodePtr node, void* usr);
135  static void readCategoryPlatLandCb(xmlNodePtr node, void* usr);
136  static void readCategoryPlatAirCb(xmlNodePtr node, void* usr);
137  static void readCategoryPlatSurfaceCb(xmlNodePtr node, void* usr);
138  static void readCategoryPlatSubsurfaceCb(xmlNodePtr node, void* usr);
139  static void readCategoryPlatSpaceCb(xmlNodePtr node, void* usr);
140  static void readDomainsMunitionCb(xmlNodePtr node, void* usr);
141  static void readCategoryMunitionCb(xmlNodePtr node, void* usr);
142  static void readCategoryAggsCb(xmlNodePtr node, void* usr);
143  static void readSubcategoryAggsCb(xmlNodePtr node, void* usr);
144  static void readWarheadsCb(xmlNodePtr node, void* usr);
145  static void readAllCb(xmlNodePtr node, void* usr);
146 
147  protected:
148  virtual xmlNodePtr nodeToProcess(xmlNodePtr node) const;
149 
150  virtual void readCountryCodes(xmlNodePtr node);
151  virtual void readKinds(xmlNodePtr node);
152  virtual void readDomains(xmlNodePtr node, int kind);
153  virtual void readCategories(xmlNodePtr node, int kind, int domain);
154  virtual SISOSubcategoryMap readSubcategories(xmlNodePtr node, int kind, int domain, int country, int cat);
155  virtual void readAll(xmlNodePtr node);
156  virtual void readSubcategoriesAggs(xmlNodePtr node);
157  void readCategoryAggsInner(xmlNodePtr node, int kind,int domain);
158  void readCategoryAggs(xmlNodePtr node);
159  virtual void readWarheads(xmlNodePtr node);
160 
161  virtual int xmlChartoInt(xmlChar* c) const;
162  virtual void processSingleLevelEntry(xmlNodePtr node, std::map<int, std::string>& l) const;
163 
164  virtual void parseSpecifics(SISOSubcategoryMap::iterator, xmlNodePtr);
165 
166  protected:
167  std::map<int, std::pair<DtSisoEntryReader,void*> > myReadersMap;
168 
171 
174 
177 
178  typedef std::map<SISOKind, IntStringMap> DomainMap;
180 
181  typedef std::map<SISOKind, std::map<SISODomain, IntStringMap> > CategoryMap;
183 
185 
186  protected:
187  xmlDocPtr myDoc;
188  };
189 }

Document ID: Generated on Mon Jul 4 01:00:18 EDT 2016 from SVN revision 166489
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)