12 #include <vlutil/vlString.h>
15 #include <tbb/spin_mutex.h>
47 template <
typename KeyType>
53 void setRegistryIterator(std::vector<DtReaderWriterRegistryData*>::iterator iter);
55 std::vector<DtReaderWriterRegistryData*>::iterator registryIterator()
const;
60 std::vector<DtReaderWriterRegistryData*>::iterator
myRegIter;
92 template <
typename KeyType>
98 void setRegistryIterator(std::vector<DtReaderWriterRegistryData*>::const_iterator iter);
100 std::vector<DtReaderWriterRegistryData*>::const_iterator registryIterator()
const;
105 std::vector<DtReaderWriterRegistryData*>::const_iterator
myRegIter;
160 virtual unsigned size()
const;
191 virtual void getSelf(DtlObjPtr args,
195 virtual DtlObjPtr
getData(DtlObjPtr args,
213 virtual char *
encode(
char *)
const override;
217 virtual const char *
decode(
const char *)
override;
226 static void cleanupPropertyFactory();
244 virtual int count()
const;
268 const std::set<DtString> &ignore = std::set<DtString>())
override;
328 virtual void reset()
override;
337 virtual void invalidateCache();
340 virtual void invalidateCacheForProperty(
const DtString& propName);
360 virtual bool setWritePrototypeHeader(
bool);
361 virtual bool writePrototypeHeader()
const;
373 virtual void filterIgnoredProperties(
DtReaderWriter* rw,
const std::set<DtString>& ignore);
380 virtual void writeSelf(std::string &fp,
int indentLevel,
381 bool writeUnspecified,
382 const DtFilename &path)
override;
383 virtual void writeData(std::string& fp,
int indentLevel,
bool writeUnspecified,
const DtFilename& path);
385 virtual void putData(std::string &,
int indentLevel = 0)
override;
404 virtual void writePrototypeHeader(std::string& fp,
const DtReaderWriter* rw,
int indentLevel)
const;
407 virtual void writePropertyData(
DtReaderWriter* rw, std::string& fp,
int indentLevel,
bool writeUnspecified,
const DtFilename& path);
411 virtual void getSortedProperties(
const DtRwVariableBindings& varBindings, std::vector<const DtReaderWriter*>& propertyList)
const;
412 virtual void getSortedProperties(
DtRwVariableBindings& varBindings, std::vector<DtReaderWriter*>& propertyList);
454 template <
typename KeyType>
458 <<
"\", to the specified type." << std::endl;
464 inline int DtPropertiesIterator::key<int>()
const
467 DtString keyStr(property()->propertyName().
string());
468 int result = keyStr.toInt(&ok);
472 DtWarn <<
"Could not convert key, \"" << property()->propertyName()
473 <<
"\", to an int." << std::endl;
480 inline double DtPropertiesIterator::key<double>()
const
483 DtString keyStr(property()->propertyName().
string());
484 int result = keyStr.toDouble(&ok);
488 DtWarn <<
"Could not convert key, \"" << property()->propertyName()
489 <<
"\", to an double." << std::endl;
496 inline DtString DtPropertiesIterator::key<DtString>()
const
498 return property()->propertyName().string();
502 inline std::string DtPropertiesIterator::key<std::string>()
const
504 return property()->propertyName().string();
507 template <
typename KeyType>
511 <<
"\", to the specified type." << std::endl;
515 inline int DtPropertiesConstIterator::key<int>()
const
518 DtString keyStr(property()->propertyName().
string());
519 int result = keyStr.toInt(&ok);
523 DtWarn <<
"Could not convert key, \"" << property()->propertyName()
524 <<
"\", to an int." << std::endl;
531 inline double DtPropertiesConstIterator::key<double>()
const
534 DtString keyStr(property()->propertyName().
string());
535 int result = keyStr.toDouble(&ok);
539 DtWarn <<
"Could not convert key, \"" << property()->propertyName()
540 <<
"\", to an double." << std::endl;
547 inline DtString DtPropertiesConstIterator::key<DtString>()
const
549 return property()->propertyName().string();
553 inline std::string DtPropertiesConstIterator::key<std::string>()
const
555 return property()->propertyName().string();
virtual DtTime updateClockTime() const =0
Returns the current time on the update clock. Can be used to pass into a future call to hasReceivedUp...
DtString myPreviousParentPropFullName
Definition: rwProperties.h:451
virtual void setName(const DtString &)
Set the name of the object. Uses the myName variable. Only set if you understand that this could have...
tbb::spin_mutex * myCacheMutex
Definition: rwProperties.h:428
int mySizeAtLastCheck
Stores the number of items in the last at the last time it was discovered the size changed...
Definition: rwProperties.h:438
#define DT_DLL_readerWriter
This file is used to determine how to build Disable inconsistent dll linkage warning Visual Studio 6...
Definition: readerWriterDefines.h:34
This class allows one to collect and compare strings using an index number instead of having to do st...
Definition: symbolString.h:27
DtPropertiesConstIterator const_iterator
Definition: rwProperties.h:131
virtual void writePublishInformation(std::string &fp, int indentLevel)
Writes information specific to publishing on the network.
virtual void getSelf(DtlObjPtr args, const std::vector< DtFilename > &searchPaths=std::vector< DtFilename >(), const DtVariableBindingsList &variableBindings=nullVariableReference()) override
Reads in items, using the factory to read the correct types.
virtual DtString stringRep(const DtString &root="") const =0
virtual void unrecognizedItem(const DtEnvironmentSP env, const DtEnvValueSP root, const SearchPaths &searchPaths, const DtVariableBindingsList &varBindings)
Called when the xml reader tries to parse an unknown reader/writer item. Default is a no-op...
virtual void copy(const DtPropertyInterface &rhs)=0
Copies the given property into the current one as long as the types are the same. The details of how ...
const DtPropertyInterface * property() const
virtual void setKeepPublishingSettings(bool keep)=0
Specifies whether the publishing settings for this property should be retained when it is updated fro...
DtRwVariableBindings & operator=(const DtRwVariableBindings &orig)
std::vector< DtReaderWriterRegistryData * >::iterator myRegIter
Definition: rwProperties.h:60
virtual const char * decode(const char *)=0
Decodes the property from the specified buffer. Assumes buffer is the start of the property and prece...
virtual DtSymbolString propertyName() const override
The name of this property.
Definition: rwProperties.h:294
DtClock myClock
Definition: rwProperties.h:430
virtual void writeSelf(std::string &fp, int indentLevel=0, bool writeUnspecified=false, const DtFilename &path=DtFilename::nullFilename()) override
Writes out registry data, but includes the type strings when writing.
virtual void setIsPublished(bool isPub)=0
Whether this property should be published.
bool myIsPublished
Definition: rwProperties.h:442
voidpf void uLong size
Definition: ioapi.h:39
virtual void setDebugEnabled(bool en)=0
Enables debug output. Generally this should be left off.
DT_DLL_terrainCS bool operator==(const DtDegMinSec &lhs, const DtDegMinSec &rhs)
Definition: readerWriter.h:85
virtual void removeVariable(DtReaderWriter *)
bool myWritePrototypeHeader
Definition: rwProperties.h:444
virtual bool isDebugEnabled() const =0
Enables debug output. Generally this should be left off.
Definition: readerWriterRegistry.h:39
std::multimap< DtString, DtReaderWriter * > myRwPropertyCache
Definition: rwProperties.h:427
DtPropertiesIterator iterator
Definition: rwProperties.h:130
bool myKeepPublishingSettingsOnCopy
Definition: rwProperties.h:448
virtual bool removeProperty(const DtString &propertyName)
Definition: propertyInterface.h:245
DtTime myLastTimeSizeChanged
Stores the last time at which it was discovered that the size of the list changed.
Definition: rwProperties.h:434
voidpf void * buf
Definition: ioapi.h:39
virtual int hlaAlignment() const =0
Returns alignment necessary to encode this item in HLA.
Iterator for traversing DtRwProperties or its subclasses.
Definition: rwProperties.h:65
virtual DtlObjPtr getData(DtlObjPtr args, const DtReaderWriter::SearchPaths &searchPaths, const DtVariableBindingsList &variableBindings)=0
Override to allow a variable to be assigned to a property of derived type.
Interface class used to define minimal interface for a property. The DtPropertyInterface class provid...
Definition: propertyInterface.h:53
virtual char * encode(char *) const =0
Encodes the property into the supplied buffer. Does not align the property. Buffer must already be al...
ReaderWriter object that maintains a list of reader-writer variable bindings. It keeps a list of name...
Definition: rwVariableBindings.h:27
static DtReaderWriterPropertyFactory * thePropertyFactory
Definition: rwProperties.h:425
bool myDebugEnabled
Definition: rwProperties.h:446
virtual bool addProperty(DtPropertyInterface *property)
Adds an existing property to the properties container. The container will take ownership of the given...
Definition: propertyInterface.h:223
virtual void clearVariables()
Removes and deletes all variable items.
unsigned myDisRecordType
Definition: rwProperties.h:440
virtual void copyVariables(const DtRwVariableBindings &other)
Copies all variable items from another bindings list and adds them to the local one.
virtual bool merge(const DtPropertyInterface &target, MergeFlags, const DtMergePath &path=DtMergePath(), const std::set< DtString > &ignore=std::set< DtString >())=0
Takes the contents of the supplied properties and merges with the following rules if replace is false...
const DtRwProperties * myProperties
Definition: rwProperties.h:104
virtual const char * readerWriterType() const override
Used to supply a string type that this reader writer type is. This can be used in place of dynamic-ca...
Specialized type of reader/writer factory that supports properties.
Definition: readerWriterFactory.h:187
std::list< const DtRwVariableBindings * > DtVariableBindingsList
Definition: readerWriterRegistry.h:29
DtRwProperties * myProperties
Definition: rwProperties.h:59
bool isReadonly() const
Definition: readerWriter.h:214
const DtReaderWriter * findPropertyRw(const DtReaderWriter &properties, const DtString &propertyName)
Contains utility functions to make it easier to find and extract data from a set of extended properti...
std::vector< DtFilename > SearchPaths
Definition: readerWriter.h:92
KeyType key() const
Definition: rwProperties.h:455
int getSize() const
Returns the network size of this item in bytes. This does not include any upfront padding for alignme...
virtual void setPropertyName(const DtString &propertyName) override
Sets name of this property. Should generally only be called when initially created.
Definition: rwProperties.h:297
std::vector< DtMergePathStruct > DtMergePath
Definition: readerWriterFactory.h:181
virtual DtPropertyInterface * property()
Returns a PropertyInterface pointer of the ReaderWriter. Returns 0 by default, must by overridden by ...
virtual bool hasReceivedUpdateSince(DtTime t) const =0
Returns true if an update was received remotely since the specified time.
const char * source
Definition: lz4.h:442
virtual DtReaderWriter * readerWriter()=0
Returns a ReaderWriter pointer of the property. If property is not a ReaderWriter, this should be overridden to return 0.
virtual bool isPublished() const =0
Whether this property should be published.
static const DtVariableBindingsList & nullVariableReference()
virtual void setDisRecordType(unsigned recType)=0
If this property is published, which DIS record type should it use. Default is 0, which indicates tha...
DtPropertyInterface * property()
Defines the DtPropertyInterface class, the interface for all property classes.
virtual unsigned disRecordType() const =0
If this property is published, which DIS record type should it use. Default is 0, which indicates tha...
virtual void putData(std::string &fp, int indentLevel=0)
Deriving class overrides these to get/put class specific data.
KeyType key() const
Definition: rwProperties.h:508
virtual DtSymbolString propertyName() const =0
The name of this property.
std::vector< DtReaderWriterRegistryData * >::const_iterator myRegIter
Definition: rwProperties.h:105
DtPropertyInterface * myPreviousParentProp
Definition: rwProperties.h:450
Definition: rwProperties.h:21
virtual const DtPropertyInterface * findPropertyInterface(const DtString &propertyName) const
Definition: propertyInterface.h:124
A list of properties. A DtPropertyInterface object that is a specialized version of DtRwVariableBindi...
Definition: rwProperties.h:122
DT_DLL_terrainCS bool operator!=(const DtDegMinSec &lhs, const DtDegMinSec &rhs)
virtual const char * propertyType() const =0
Typically returns reader/writer type.
virtual bool isUpdateNeeded(DtTime t) const =0
Returns true if the value has been updated since the specified time and needs to be sent on the netwo...
DT_DLL_readerWriter std::shared_ptr< DtEnvironment > DtEnvironmentSP
Definition: readerWriter.h:30
virtual DtSymbolString name() const
Accessor for name of this readable/writable object.
virtual bool keepPublishingSettings() const =0
virtual void reset()=0
Override to clear out variable value.
MergeFlags
Determines how two lists of properties will be merged by the merge function.
Definition: propertyInterface.h:58