10 #pragma warning (disable:4503)
18 #include <libxml/xmlmemory.h>
19 #include <libxml/parser.h>
70 typedef std::map<SISOSpecific, std::pair<std::string, IntStringMap> >
SISOSpecificMap;
82 virtual bool loadFromFile(
const std::string&
filename);
85 virtual void registerCallback(
int entryType,
DtSisoEntryReader cb,
void* usrData);
86 virtual void unregisterCallback(
int entryType,
DtSisoEntryReader cb,
void* usrData);
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;
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);
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);
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);
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);
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);
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);
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);
125 virtual std::string displayName(
const DtEntityType&,
bool includeKind =
true);
128 virtual std::string enumerationStrings(
const DtEntityType&);
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);
148 virtual xmlNodePtr nodeToProcess(xmlNodePtr node)
const;
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);
161 virtual int xmlChartoInt(xmlChar* c)
const;
162 virtual void processSingleLevelEntry(xmlNodePtr node, std::map<int, std::string>& l)
const;
164 virtual void parseSpecifics(SISOSubcategoryMap::iterator, xmlNodePtr);
181 typedef std::map<SISOKind, std::map<SISODomain, IntStringMap> >
CategoryMap;