VR-Link API Documentation for DIS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
stateRepository.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1992-2025 MAK Technologies, Inc
3 ** All rights reserved.
4 *********************************************************************/
5 
8 
9 #pragma once
10 
12 #include <vlutil/vlMachineTypes.h>
13 #include <vl/objectId.h>
14 #include <vl/hlaObject.h>
15 
16 #ifdef DtDIS
17 #include <vl/attributeRecordSet.h>
18 #endif
19 
20 #include <iosfwd>
21 #include <map>
23 
24 typedef DtStateRepositoryExtension* (*DtSrExtCreatorFnc)();
25 
26 
27 #ifdef DtHLA
28 class DT_DLL_VL DtGenericAttributeInfo
29 {
30 public:
31 
32  DtGenericAttributeInfo() : wasUpdated(false) {}
33  DtGenericAttributeInfo(const DtGenericAttributeInfo& other)
34  : handle(other.handle)
35  , buffer(other.buffer)
36  , wasUpdated(other.wasUpdated){}
37 
38  ~DtGenericAttributeInfo() {}
39 
40  RTI::AttributeHandle handle;
41  std::vector<char> buffer;
42  bool wasUpdated;
43 };
44 #endif
45 
51 {
52 public:
53 
56 
59 
61  virtual ~DtStateRepository();
62 
64  DtStateRepository& operator=(const DtStateRepository& orig);
65 
67  virtual DtStateRepository* clone(bool copy = false) const;
68 
70  virtual void printData() const;
71 
73  virtual void printDataToStream(std::ostream& stream) const;
74 
77 #if DtHLA
78  virtual void setGlobalId(const DtString& id);
79  virtual const DtString& globalId() const;
80 #elif DtDIS
81  virtual void setGlobalId(const DtGlobalObjectDesignator& id);
82  virtual const DtGlobalObjectDesignator& globalId() const;
83 #endif
84 
85 #if DtHLA
86 
89  virtual void setLocalId(const DtObjectId& id);
90  virtual const DtObjectId& localId() const;
91 
92 #endif
93 
94 
95 #ifdef DtDIS
96 
98 
100 
101 
103  virtual void setAttributeRecords(const DtAttributeRecordSet& records);
104 
106  virtual void setAttributeRecords(const DtStandardVariableRecordPtrVector& records);
107 
109  virtual const DtAttributeRecordSet& attributeRecordSet() const;
110 
112  virtual DtAttributeRecordSet& attributeRecordSet();
113 
116  virtual const DtStandardVariableRecordPtrVector& attributeRecords() const;
117 
120  virtual const DtStandardVariableRecordPtrVector& attributeRecords(unsigned int recordType) const;
121 
124  virtual DtStandardVariableRecord* attributeRecord(unsigned int recordType) const;
125 
128  virtual int removeAttributeRecord(unsigned int recordType, bool removeAll = true);
129 
132  virtual DtStandardVariableRecordPtrVector& getAttributeRecords(unsigned int recordType,
134 
137  virtual DtStandardVariableRecordPtrVector& getAttributeRecords(DtStandardVariableRecordPtrVector& vec) const;
138 
140  virtual void addAttributeRecord( DtStandardVariableRecord* record );
141 
143  virtual void addAttributeRecord(std::unique_ptr<DtStandardVariableRecord> record);
144 
146  virtual void clearAttributeRecords();
148 #endif
149 
152  static bool addStateRepositoryExtension(DtString srExtName, DtSrExtCreatorFnc fnc);
155 
158  virtual DtStateRepositoryExtension* stateRepositoryExtension(DtString srExtName) const;
159 
161  virtual std::vector<DtString> stateRepositoryExtensionNames() const;
162 
163  virtual void setStateRepositoryExtensions(std::map<DtString, DtStateRepositoryExtension*> extensions);
164 
165  virtual const std::map<DtString, DtStateRepositoryExtension*> stateRepositoryExtensions() const;
166 
168 #ifdef DtHLA
169  // The following functions are related to unknown attribute encoding and decoding.
170 
172  virtual bool publishesAttribute(const RTI::AttributeHandle& val) const;
173 
175  virtual void setAttributeByHandle(const RTI::AttributeHandle& attrHdl, const char* attrValue, unsigned size);
176 
181  virtual const char* getAttributeByHandle(const RTI::AttributeHandle& attrHdl, unsigned& size) const;
182 
184  virtual void setAttributeByName(const DtString& attrName, const char* attrValue, unsigned size, DtHlaObject* hlaObj);
185 
188  virtual const char* getAttributeByName(const DtString& attrName, unsigned& size, DtHlaObject* hlaObj) const;
189 
190 
195  virtual const char* getAttributeByHandleIfUpdated(const RTI::AttributeHandle& attrHdl, unsigned& size) const;
196 
197 #endif
198 
199 
200 #ifdef DtDIS
201  virtual unsigned int numberOfAttributeRecords() const;
202 #endif
203 
204 #ifdef DtHLA
205  DtString myGlobalId;
206 #elif DtDIS
208 #endif
209 
210 #ifdef DtHLA
211  DtObjectId myLocalId;
212 
214  std::map<RTI::AttributeHandle, DtGenericAttributeInfo*> myAttributesByHandle;
215 #endif
216 
217 #ifdef DtDIS
220 #endif
221  typedef std::map<DtString, DtStateRepositoryExtension*> DtStateRepositoryExtensionMap;
223 
224  static std::map<DtString, DtSrExtCreatorFnc> theStateRepositoryExtensionCreatorMap;
225 };
226 
227 DT_DLL_VL std::ostream & operator << (std::ostream &str, const DtStateRepository &sr);
228 
Contains the DtObjectId class declaration.
DtStandardVariableRecordPtrVector myReturnedRecords
Definition: stateRepository.h:219
static std::map< DtString, DtSrExtCreatorFnc > theStateRepositoryExtensionCreatorMap
Definition: stateRepository.h:224
std::map< DtString, DtStateRepositoryExtension * > DtStateRepositoryExtensionMap
Definition: stateRepository.h:221
DtStateRepositoryExtension *(* DtSrExtCreatorFnc)()
Definition: stateRepository.h:24
#define DT_DLL_VL
Definition: vlMachineTypes.h:108
std::ostream & operator<<(std::ostream &os, const Dt3dChord &chord)
DtAttributeRecordSet myAttributeRecords
Definition: stateRepository.h:218
This file contains typedefs used to represent objects in a protocol neutral way.
DtGlobalObjectDesignator myGlobalId
Definition: stateRepository.h:207
std::vector< DtStandardVariableRecord * > DtStandardVariableRecordPtrVector
Definition: standardVariableRecord.h:83
DtStateRepository is an abstract base class for maintaining state for an object.
Definition: stateRepository.h:50
Instances of DtEntityIdentifier are used as a unique ID for entities in DIS.
Definition: entityIdentifier.h:31
Definition: attributeRecordSet.h:11
Definition: stateRepositoryExtension.h:22
DtStateRepositoryExtensionMap myStateRepositoryExtensionMap
Definition: stateRepository.h:222
static const xmlChar * attrValue
Definition: xmlFedTags.h:151
static const xmlChar * attrName
Definition: xmlFedTags.h:116
Definition: standardVariableRecord.h:23
Instances of DtString are used to represent strings.
Definition: vlString.h:36
This file contains typedefs for machine dependant types.

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)