VR-Forces 5.0.2 Developer's Guide
 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,
54 };
55 
58 {
60 };
61 
63 struct DtEnumInfo
64 {
65  DtEnumInfo(const DtString& d, const DtString& s = DtString::nullString(), bool dep = false)
66  : description(d), fileSource(s), deprecated(dep) {};
67 
68  int operator==(const DtEnumInfo &other) const
69  {
70  return (description == other.description);
71  }
72 
73  int operator!=(const DtEnumInfo &other) const
74  {
75  return !operator==(other);
76  }
77 
80  bool deprecated;
81 };
82 
99 {
100 public:
101 
103  static const unsigned theMakUidRangeStart = 1000000;
105  static const unsigned theMakUidRangeEnd = 2000000;
106 
108  static const unsigned theVrfUidRangeStart = 2000000;
110  static const unsigned theVrfUidRangeEnd = 3000000;
111 
114  static const unsigned theAssignedUidRangeStart = 10000000;
115 
116  typedef std::map<int, DtEnumInfo> EnumMap;
117  typedef std::map<DtEntityType, DtString> EntityTypeDescriptionMap;
118 
121 
123  virtual ~DtEnumDictionary();
124 
127 
128 
136  virtual EnumMap entityTypeEnumValues(DtEntityTypeField fieldLevel,
137  const DtEntityType& higherLevelFields = DtEntityType::defaultType()) const;
138 
142  virtual int entityTypeValueFromName(DtEntityTypeField fieldLevel, const DtString& name,
143  const DtEntityType& higherLevelFields = DtEntityType::defaultType()) const;
144 
147  virtual DtString entityTypeNameFromValue(DtEntityTypeField fieldLevel,
148  const DtEntityType& entityType) const;
149 
152  virtual DtString displayName(const DtEntityType&, bool includeKind = true,
153  int stopAt = DtSubcategoryField, bool* isDeprecated = 0);
154 
156  virtual void findEntriesContaining(const DtString& text, EntityTypeDescriptionMap& results,
157  int maxResults);
158 
160  virtual bool isDeprecatedEntityTypeValue(DtEntityTypeField fieldLevel,
161  const DtEntityType& entityType) const;
162 
166  virtual void addEntityTypeEnum(DtEntityTypeField fieldLevel, const EnumMap& enums,
168 
172  virtual void addEntityTypeEnumWithUid(DtEnumUid uid, DtEntityTypeField fieldLevel,
173  const EnumMap& enums, const DtEntityTypeRange& applic = DtEntityTypeRange::AllEntityTypes());
174 
176 
179 
180 
183  virtual void addEnum(DtEnumUid uid, const EnumMap& list, const DtString& name);
184 
186  virtual const EnumMap& enumValues(DtEnumUid uid) const;
187 
189  virtual DtString enumName(DtEnumUid uid) const;
190 
193  virtual std::vector<DtEnumUid> enumUid(const DtString& name) const;
194 
196  virtual int enumValueFromName(DtEnumUid uid, const DtString& n) const;
197 
199  virtual DtString enumNameFromValue(DtEnumUid uid, int v) const;
200 
202  virtual bool isDeprecatedValue(DtEnumUid uid, int val) const;
203 
205 
207  virtual void print(std::ostream& strm) const;
208 
209 protected:
210 
212  typedef std::multimap<DtString, DtEnumUid> NameToUidMap;
213  typedef std::map<DtEnumUid, DtString> UidToNameMap;
214  typedef std::map<DtEnumUid, EnumMap> UidEnumMap;
215  typedef std::vector<EnumMap> UidEnumList;
216  typedef std::map<DtEntityTypeRange, DtEnumUid> TypeRangeUidMap;
217  typedef std::vector<TypeRangeUidMap> EntityTypeUidList;
219  typedef std::multimap<DtString, std::pair<DtEntityType, DtString> > DescriptionEntityTypeMap;
220 
222  virtual void mergeEnumMap(EnumMap& dest, const EnumMap& src) const;
223 
226  virtual DtEnumUid getAssignedUid();
227 
229  virtual void printMap(const EnumMap& enumMap, std::ostream& strm, unsigned indentLvl) const;
230 
232  virtual void printMap(const TypeRangeUidMap& enumMap, std::ostream& strm, unsigned indentLvl) const;
233 
235  static void setEntityTypeField(DtEntityType& entityType, DtEntityTypeField field, int val);
236 
238  static int getEntityTypeField(const DtEntityType& entityType, DtEntityTypeField field);
239 
240 protected:
241 
243 
244 
248 
253 
256 
258 
260 
261 
265 
268 
271 
273 
276 
277  static const EnumMap theEmptyMap;
278 };
279 
280 
static const EnumMap theEmptyMap
Definition: enumDictionary.h:277
Definition: enumDictionary.h:40
Definition: enumDictionary.h:37
Definition: enumDictionary.h:47
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:212
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:117
int operator==(const DtEnumInfo &other) const
Definition: enumDictionary.h:68
std::vector< TypeRangeUidMap > EntityTypeUidList
Definition: enumDictionary.h:217
NameToUidMap myNameToUidMap
Map of descriptive enumeration names to their uids.
Definition: enumDictionary.h:267
DtString description
Definition: enumDictionary.h:78
Definition: enumDictionary.h:24
Definition: enumDictionary.h:38
Definition: enumDictionary.h:48
Maintains a list of enumerations read in from files. The dictionary supports two different types of e...
Definition: enumDictionary.h:98
std::map< DtEnumUid, EnumMap > UidEnumMap
Definition: enumDictionary.h:214
UidToNameMap myUidToNameMap
Map of uids to their descriptive enumeration names.
Definition: enumDictionary.h:270
Definition: enumDictionary.h:23
Definition: enumDictionary.h:49
UidEnumMap myEntityTypeEnums
All of the defined entity type enumerations, mapped by uid, where uids are assigned when not defined ...
Definition: enumDictionary.h:247
Definition: enumDictionary.h:53
Definition: enumDictionary.h:50
Definition: enumDictionary.h:51
std::map< DtEnumUid, DtString > UidToNameMap
Definition: enumDictionary.h:213
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:43
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:252
Contains basic information about a single enumerated value.
Definition: enumDictionary.h:63
Definition: enumDictionary.h:42
Definition: enumDictionary.h:27
int operator!=(const DtEnumInfo &other) const
Definition: enumDictionary.h:73
bool deprecated
Definition: enumDictionary.h:80
DtEnumUid myNextAssignedUid
The next uid that can be assigned to an entity type enumeration without a uid defined.
Definition: enumDictionary.h:275
DtEntityTypeField
The different fields of an entity type.
Definition: enumDictionary.h:17
DtSisoEnumUid
Well known uids from the SISO enumerations document. There are many others, but these are the uids fo...
Definition: enumDictionary.h:35
UidEnumMap myEnums
All of the defined general enumerations mapped by uid. uid must be defined when added to this diction...
Definition: enumDictionary.h:264
Definition: enumDictionary.h:45
Definition: enumDictionary.h:52
Definition: enumDictionary.h:44
Definition: enumDictionary.h:22
std::vector< EnumMap > UidEnumList
Definition: enumDictionary.h:215
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:79
Definition: enumDictionary.h:21
std::map< int, DtEnumInfo > EnumMap
Definition: enumDictionary.h:116
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:219
std::map< DtEntityTypeRange, DtEnumUid > TypeRangeUidMap
Definition: enumDictionary.h:216
Definition: enumDictionary.h:59
Definition: enumDictionary.h:19
Definition: enumDictionary.h:46
DescriptionEntityTypeMap myEntityTypeDescriptions
Map of entity type descriptions to their enumerated types.
Definition: enumDictionary.h:255
char * dest
Definition: lz4.h:440
DtVrfEnumUid
uids from the VRF enumerations file.
Definition: enumDictionary.h:57
void print(double **a, int r, int c, char *str)

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)