VR-Link API Documentation for HLA Evolved
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
enumDictionary.h
Go to the documentation of this file.
1 /****************************************************************************
2  * Copyright (c) 2024 MAK Technologies, Inc.
3  * All rights reserved.
4  ****************************************************************************/
5 
8 
9 #pragma once
10 
11 #include <vlpi/entityTypeRange.h>
12 #include <vlutil/vlMachineTypes.h>
13 #include <vlutil/vlPrint.h>
14 
15 
18 {
28 };
29 
31 typedef unsigned DtEnumUid;
32 
36 {
37  DtKindUid = 7,
54 };
55 
58 {
59  DtVrfRangeRingUid = 2000000,
63 };
64 
66 struct DtEnumInfo
67 {
68  DtEnumInfo() {};
69  DtEnumInfo(const DtString& d, const DtString& s = DtString::nullString(), bool dep = false)
70  : description(d), fileSource(s), deprecated(dep) {};
71 
72  int operator==(const DtEnumInfo &other) const
73  {
74  return (description == other.description);
75  }
76 
77  int operator!=(const DtEnumInfo &other) const
78  {
79  return !operator==(other);
80  }
81 
84  bool deprecated = false;
85 };
86 
103 {
104 public:
105 
107  static const unsigned theMakUidRangeStart = 1000000;
109  static const unsigned theMakUidRangeEnd = 2000000;
110 
112  static const unsigned theVrfUidRangeStart = 2000000;
114  static const unsigned theVrfUidRangeEnd = 3000000;
115 
118  static const unsigned theAssignedUidRangeStart = 10000000;
119 
120  typedef std::map<int, DtEnumInfo> EnumMap;
121  typedef std::map<DtEntityType, DtString> EntityTypeDescriptionMap;
122 
125 
127  virtual ~DtEnumDictionary();
128 
131 
132 
140  virtual EnumMap entityTypeEnumValues(DtEntityTypeField fieldLevel,
141  const DtEntityType& higherLevelFields = DtEntityType::defaultType()) const;
142 
146  virtual int entityTypeValueFromName(DtEntityTypeField fieldLevel, const DtString& name,
147  const DtEntityType& higherLevelFields = DtEntityType::defaultType()) const;
148 
151  virtual DtString entityTypeNameFromValue(DtEntityTypeField fieldLevel,
152  const DtEntityType& entityType) const;
153 
156  virtual DtString displayName(const DtEntityType&, bool includeKind = true,
157  int stopAt = DtSubcategoryField, bool* isDeprecated = 0) const;
158 
160  virtual void findEntriesContaining(const DtString& text, EntityTypeDescriptionMap& results,
161  int maxResults);
162 
164  virtual bool isDeprecatedEntityTypeValue(DtEntityTypeField fieldLevel,
165  const DtEntityType& entityType) const;
166 
170  virtual void addEntityTypeEnum(DtEntityTypeField fieldLevel, const EnumMap& enums,
172 
176  virtual void addEntityTypeEnumWithUid(DtEnumUid uid, DtEntityTypeField fieldLevel,
177  const EnumMap& enums, const DtEntityTypeRange& applic = DtEntityTypeRange::AllEntityTypes());
178 
180 
183 
184 
187  virtual void addEnum(DtEnumUid uid, const EnumMap& list, const DtString& name, const DtString& description = "");
188 
190  virtual void merge(const DtEnumDictionary&);
191 
193  virtual const EnumMap& enumValues(DtEnumUid uid) const;
194 
197  virtual int nextId(DtEnumUid uid, bool startFromUser = true) const;
198 
199  virtual DtString enumName(DtEnumUid uid) const;
200  virtual DtString enumDescription(DtEnumUid uid) const;
201 
204  virtual std::vector<DtEnumUid> enumUid(const DtString& name) const;
205 
207  virtual int enumValueFromName(DtEnumUid uid, const DtString& n) const;
208 
210  virtual DtString enumNameFromValue(DtEnumUid uid, int v) const;
211 
213  virtual bool hasNameFromValue(DtEnumUid uid, int val) const;
214 
216  virtual bool removeValue(DtEnumUid uid, int val);
217 
219  virtual bool isDeprecatedValue(DtEnumUid uid, int val) const;
220 
222 
224  virtual void print(std::ostream& strm) const;
225 
227  {
228  EnumInformation(const DtString& n, const DtString& d) : name(n), description(d) {};
229 
230  DtString name;
232  };
233 
234  typedef std::map<DtEnumUid, EnumInformation> UidToNameMap;
235  const UidToNameMap& uidToNameMap() const
236  {
237  return myUidToNameMap;
238  }
239 
240 protected:
241 
242  // Needs to be a multimap because there is no guarantee text is unique.
243  typedef std::multimap<DtString, DtEnumUid> NameToUidMap;
244  typedef std::map<DtEnumUid, EnumMap> UidEnumMap;
245  typedef std::vector<EnumMap> UidEnumList;
246  typedef std::map<DtEntityTypeRange, DtEnumUid> TypeRangeUidMap;
247  typedef std::vector<TypeRangeUidMap> EntityTypeUidList;
248  // Needs to be a multimap because items on different entity type branches may have matching names.
249  typedef std::multimap<DtString, std::pair<DtEntityType, DtString> > DescriptionEntityTypeMap;
250 
252  virtual void mergeEnumMap(EnumMap& dest, const EnumMap& src) const;
253 
256  virtual DtEnumUid getAssignedUid();
257 
259  virtual void printMap(const EnumMap& enumMap, std::ostream& strm, unsigned indentLvl) const;
260 
262  virtual void printMap(const TypeRangeUidMap& enumMap, std::ostream& strm, unsigned indentLvl) const;
263 
265  static void setEntityTypeField(DtEntityType& entityType, DtEntityTypeField field, int val);
266 
268  static int getEntityTypeField(const DtEntityType& entityType, DtEntityTypeField field);
269 
270 protected:
271 
273 
274 
278 
283 
286 
288 
290 
291 
295 
298 
301 
303 
306 
307  static const EnumMap theEmptyMap;
308 };
309 
310 
static const EnumMap theEmptyMap
Definition: enumDictionary.h:307
Definition: enumDictionary.h:40
DtString description
Definition: enumDictionary.h:231
Definition: enumDictionary.h:37
const UidToNameMap & uidToNameMap() const
Definition: enumDictionary.h:235
static const DtString & nullString()
a Null representation of a string, which is the same as an empty string
Definition: enumDictionary.h:47
Definition: enumDictionary.h:39
std::multimap< DtString, DtEnumUid > NameToUidMap
Definition: enumDictionary.h:243
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:121
int operator==(const DtEnumInfo &other) const
Definition: enumDictionary.h:72
std::vector< TypeRangeUidMap > EntityTypeUidList
Definition: enumDictionary.h:247
NameToUidMap myNameToUidMap
Map of descriptive enumeration names to their uids.
Definition: enumDictionary.h:297
DtString description
Definition: enumDictionary.h:82
Definition: enumDictionary.h:24
Definition: enumDictionary.h:38
Definition: enumDictionary.h:48
std::map< DtEnumUid, EnumInformation > UidToNameMap
Definition: enumDictionary.h:234
Maintains a list of enumerations read in from files.
Definition: enumDictionary.h:102
std::map< DtEnumUid, EnumMap > UidEnumMap
Definition: enumDictionary.h:244
UidToNameMap myUidToNameMap
Map of uids to their descriptive enumeration names.
Definition: enumDictionary.h:300
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:277
Functions in vlPrint.h provide an error and print facility for vrlink.
Definition: enumDictionary.h:53
Definition: enumDictionary.h:50
Definition: enumDictionary.h:51
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:61
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:282
DtEnumInfo()
Definition: enumDictionary.h:68
Definition: enumDictionary.h:226
Contains basic information about a single enumerated value.
Definition: enumDictionary.h:66
Definition: enumDictionary.h:42
Definition: enumDictionary.h:60
Definition: enumDictionary.h:27
int operator!=(const DtEnumInfo &other) const
Definition: enumDictionary.h:77
bool deprecated
Definition: enumDictionary.h:84
DtEnumUid myNextAssignedUid
The next uid that can be assigned to an entity type enumeration without a uid defined.
Definition: enumDictionary.h:305
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
#define DT_DLL_VLPROTIND
Definition: vlMachineTypes.h:110
Definition: enumDictionary.h:62
UidEnumMap myEnums
All of the defined general enumerations mapped by uid.
Definition: enumDictionary.h:294
Definition: enumDictionary.h:45
Definition: enumDictionary.h:52
Definition: enumDictionary.h:44
Definition: enumDictionary.h:22
std::vector< EnumMap > UidEnumList
Definition: enumDictionary.h:245
static const DtEntityTypeRange & AllEntityTypes()
Definition: enumDictionary.h:25
DtString fileSource
Definition: enumDictionary.h:83
Definition: enumDictionary.h:21
std::map< int, DtEnumInfo > EnumMap
Definition: enumDictionary.h:120
std::multimap< DtString, std::pair< DtEntityType, DtString > > DescriptionEntityTypeMap
Definition: enumDictionary.h:249
std::map< DtEntityTypeRange, DtEnumUid > TypeRangeUidMap
Definition: enumDictionary.h:246
Instances of DtString are used to represent strings.
Definition: vlString.h:36
Definition: enumDictionary.h:59
Definition: enumDictionary.h:19
Definition: enumDictionary.h:46
This file contains typedefs for machine dependant types.
DtEntityType is used to represent the type an entity object.
Definition: entityType.h:26
DescriptionEntityTypeMap myEntityTypeDescriptions
Map of entity type descriptions to their enumerated types.
Definition: enumDictionary.h:285
DtVrfEnumUid
uids from the VRF enumerations file.
Definition: enumDictionary.h:57
static const DtEntityType & defaultType()
return an instance of -1:-1:-1:-1:-1:-1:-1

Document ID: Generated on Thu Oct 16 00:12:25 EDT 2025 from SVN revision 280738
Copyright © 1992-2025 MAK Technologies. All Rights Reserved (www.mak.com)