VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
enumDictionary.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2021 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
12 #include <vrfutil/vrfutilDefines.h>
13 #include <vlutil/vlPrint.h>
14 
15 
18 {
28 };
29 
31 typedef unsigned DtEnumUid;
32 
36 {
37  DtKindUid = 7,
46 };
47 
50 {
52 };
53 
55 struct DtEnumInfo
56 {
57  DtEnumInfo(const DtString& d, const DtString& s = DtString::nullString(), bool dep = false)
58  : description(d), fileSource(s), deprecated(dep) {};
59 
60  int operator==(const DtEnumInfo &other) const
61  {
62  return (description == other.description);
63  }
64 
65  int operator!=(const DtEnumInfo &other) const
66  {
67  return !operator==(other);
68  }
69 
72  bool deprecated;
73 };
74 
91 {
92 public:
93 
95  static const unsigned theMakUidRangeStart = 1000000;
97  static const unsigned theMakUidRangeEnd = 2000000;
98 
100  static const unsigned theVrfUidRangeStart = 2000000;
102  static const unsigned theVrfUidRangeEnd = 3000000;
103 
106  static const unsigned theAssignedUidRangeStart = 10000000;
107 
108  typedef std::map<int, DtEnumInfo> EnumMap;
109  typedef std::map<DtEntityType, DtString> EntityTypeDescriptionMap;
110 
113 
115  virtual ~DtEnumDictionary();
116 
119 
120 
128  virtual EnumMap entityTypeEnumValues(DtEntityTypeField fieldLevel,
129  const DtEntityType& higherLevelFields = DtEntityType::defaultType()) const;
130 
134  virtual int entityTypeValueFromName(DtEntityTypeField fieldLevel, const DtString& name,
135  const DtEntityType& higherLevelFields = DtEntityType::defaultType()) const;
136 
139  virtual DtString entityTypeNameFromValue(DtEntityTypeField fieldLevel,
140  const DtEntityType& entityType) const;
141 
144  virtual DtString displayName(const DtEntityType&, bool includeKind = true,
145  int stopAt = DtSubcategoryField, bool* isDeprecated = 0);
146 
148  virtual void findEntriesContaining(const DtString& text, EntityTypeDescriptionMap& results,
149  int maxResults);
150 
152  virtual bool isDeprecatedEntityTypeValue(DtEntityTypeField fieldLevel,
153  const DtEntityType& entityType) const;
154 
158  virtual void addEntityTypeEnum(DtEntityTypeField fieldLevel, const EnumMap& enums,
160 
164  virtual void addEntityTypeEnumWithUid(DtEnumUid uid, DtEntityTypeField fieldLevel,
165  const EnumMap& enums, const DtEntityTypeRange& applic = DtEntityTypeRange::AllEntityTypes());
166 
168 
171 
172 
175  virtual void addEnum(DtEnumUid uid, const EnumMap& list, const DtString& name);
176 
178  virtual const EnumMap& enumValues(DtEnumUid uid) const;
179 
181  virtual DtString enumName(DtEnumUid uid) const;
182 
185  virtual std::vector<DtEnumUid> enumUid(const DtString& name) const;
186 
188  virtual int enumValueFromName(DtEnumUid uid, const DtString& n) const;
189 
191  virtual DtString enumNameFromValue(DtEnumUid uid, int v) const;
192 
194  virtual bool isDeprecatedValue(DtEnumUid uid, int val) const;
195 
197 
199  virtual void print(std::ostream& strm) const;
200 
201 protected:
202 
204  typedef std::multimap<DtString, DtEnumUid> NameToUidMap;
205  typedef std::map<DtEnumUid, DtString> UidToNameMap;
206  typedef std::map<DtEnumUid, EnumMap> UidEnumMap;
207  typedef std::vector<EnumMap> UidEnumList;
208  typedef std::map<DtEntityTypeRange, DtEnumUid> TypeRangeUidMap;
209  typedef std::vector<TypeRangeUidMap> EntityTypeUidList;
211  typedef std::multimap<DtString, std::pair<DtEntityType, DtString> > DescriptionEntityTypeMap;
212 
214  virtual void mergeEnumMap(EnumMap& dest, const EnumMap& src) const;
215 
218  virtual DtEnumUid getAssignedUid();
219 
221  virtual void printMap(const EnumMap& enumMap, std::ostream& strm, unsigned indentLvl) const;
222 
224  virtual void printMap(const TypeRangeUidMap& enumMap, std::ostream& strm, unsigned indentLvl) const;
225 
227  static void setEntityTypeField(DtEntityType& entityType, DtEntityTypeField field, int val);
228 
230  static int getEntityTypeField(const DtEntityType& entityType, DtEntityTypeField field);
231 
232 protected:
233 
235 
236 
240 
245 
248 
250 
252 
253 
257 
260 
263 
265 
268 
269  static const EnumMap theEmptyMap;
270 };
271 
272 
static const EnumMap theEmptyMap
Definition: enumDictionary.h:269
Definition: enumDictionary.h:40
Definition: enumDictionary.h:37
Definition: enumDictionary.h:39
std::multimap< DtString, DtEnumUid > NameToUidMap
Needs to be a multimap because there is no guarantee text is unique.
Definition: enumDictionary.h:204
Definition: enumDictionary.h:41
unsigned DtEnumUid
DtEnumUid represents a uid used in SISO-REF-010 or any of the MAK enumerations files.
Definition: enumDictionary.h:31
std::map< DtEntityType, DtString > EntityTypeDescriptionMap
Definition: enumDictionary.h:109
int operator==(const DtEnumInfo &other) const
Definition: enumDictionary.h:60
std::vector< TypeRangeUidMap > EntityTypeUidList
Definition: enumDictionary.h:209
NameToUidMap myNameToUidMap
Map of descriptive enumeration names to their uids.
Definition: enumDictionary.h:259
DtString description
Definition: enumDictionary.h:70
Definition: enumDictionary.h:24
Definition: enumDictionary.h:38
Definition: enumDictionary.h:42
Maintains a list of enumerations read in from files.
Definition: enumDictionary.h:90
std::map< DtEnumUid, EnumMap > UidEnumMap
Definition: enumDictionary.h:206
UidToNameMap myUidToNameMap
Map of uids to their descriptive enumeration names.
Definition: enumDictionary.h:262
Definition: enumDictionary.h:23
Definition: enumDictionary.h:43
UidEnumMap myEntityTypeEnums
All of the defined entity type enumerations, mapped by uid, where uids are assigned when not defined ...
Definition: enumDictionary.h:239
Definition: enumDictionary.h:44
Definition: enumDictionary.h:45
std::map< DtEnumUid, DtString > UidToNameMap
Definition: enumDictionary.h:205
Specifies a range of entity types, where each individual field can match a a range of values or a sin...
Definition: entityTypeRange.h:19
Definition: enumDictionary.h:26
Definition: enumDictionary.h:20
EntityTypeUidList myEntityTypeApplicabilityList
A map to provide lookups from entity type applicability in higher level fields to the uid of the avai...
Definition: enumDictionary.h:244
Contains basic information about a single enumerated value.
Definition: enumDictionary.h:55
Definition: enumDictionary.h:27
int operator!=(const DtEnumInfo &other) const
Definition: enumDictionary.h:65
bool deprecated
Definition: enumDictionary.h:72
DtEnumUid myNextAssignedUid
The next uid that can be assigned to an entity type enumeration without a uid defined.
Definition: enumDictionary.h:267
DtEntityTypeField
The different fields of an entity type.
Definition: enumDictionary.h:17
DtSisoEnumUid
Well known uids from the SISO enumerations document.
Definition: enumDictionary.h:35
UidEnumMap myEnums
All of the defined general enumerations mapped by uid.
Definition: enumDictionary.h:256
Definition: enumDictionary.h:22
std::vector< EnumMap > UidEnumList
Definition: enumDictionary.h:207
static const DtEntityTypeRange & AllEntityTypes()
#define DT_DLL_vrfutil
This file is used to determine how to build Disable inconsistent dll linkage warning Visual Studio 6...
Definition: vrfutilDefines.h:34
Definition: enumDictionary.h:25
DtString fileSource
Definition: enumDictionary.h:71
Definition: enumDictionary.h:21
std::map< int, DtEnumInfo > EnumMap
Definition: enumDictionary.h:108
std::multimap< DtString, std::pair< DtEntityType, DtString > > DescriptionEntityTypeMap
Needs to be a multimap because items on different entity type branches may have matching names...
Definition: enumDictionary.h:211
std::map< DtEntityTypeRange, DtEnumUid > TypeRangeUidMap
Definition: enumDictionary.h:208
Definition: enumDictionary.h:51
Definition: enumDictionary.h:19
DescriptionEntityTypeMap myEntityTypeDescriptions
Map of entity type descriptions to their enumerated types.
Definition: enumDictionary.h:247
char * dest
Definition: lz4.h:440
DtVrfEnumUid
uids from the VRF enumerations file.
Definition: enumDictionary.h:49
void print(double **a, int r, int c, char *str)

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)