- }
- return _rtiObjectInstance->getDataElement(index);
-}
-
-class HLAObjectInstance::DataElementFactoryVisitor : public HLADataTypeVisitor {
-public:
- DataElementFactoryVisitor(const HLAPathElementMap& pathElementMap) :
- _pathElementMap(pathElementMap)
- { }
- DataElementFactoryVisitor(const HLADataElement::Path& path, const HLAPathElementMap& pathElementMap) :
- _pathElementMap(pathElementMap),
- _path(path)
- { }
- virtual ~DataElementFactoryVisitor() {}
-
- virtual void apply(const HLADataType& dataType)
- {
- _dataElement = createDataElement(_path, dataType);
- if (_dataElement.valid())
- return;
-
- SG_LOG(SG_NETWORK, SG_ALERT, "HLA: Can not find a suitable data element for data type \""
- << dataType.getName() << "\"");
- }
-
- virtual void apply(const HLAInt8DataType& dataType)
- {
- _dataElement = createDataElement(_path, dataType);
- if (_dataElement.valid())
- return;
-
- _dataElement = new HLASCharDataElement(&dataType);
- }
- virtual void apply(const HLAUInt8DataType& dataType)
- {
- _dataElement = createDataElement(_path, dataType);
- if (_dataElement.valid())
- return;
-
- _dataElement = new HLAUCharDataElement(&dataType);
- }
- virtual void apply(const HLAInt16DataType& dataType)
- {
- _dataElement = createDataElement(_path, dataType);
- if (_dataElement.valid())
- return;
-
- _dataElement = new HLAShortDataElement(&dataType);
- }
- virtual void apply(const HLAUInt16DataType& dataType)
- {
- _dataElement = createDataElement(_path, dataType);
- if (_dataElement.valid())
- return;
-
- _dataElement = new HLAUShortDataElement(&dataType);
- }
- virtual void apply(const HLAInt32DataType& dataType)
- {
- _dataElement = createDataElement(_path, dataType);
- if (_dataElement.valid())
- return;
-
- _dataElement = new HLAIntDataElement(&dataType);
- }
- virtual void apply(const HLAUInt32DataType& dataType)
- {
- _dataElement = createDataElement(_path, dataType);
- if (_dataElement.valid())
- return;
-
- _dataElement = new HLAUIntDataElement(&dataType);
- }
- virtual void apply(const HLAInt64DataType& dataType)
- {
- _dataElement = createDataElement(_path, dataType);
- if (_dataElement.valid())
- return;
-
- _dataElement = new HLALongDataElement(&dataType);
- }
- virtual void apply(const HLAUInt64DataType& dataType)
- {
- _dataElement = createDataElement(_path, dataType);
- if (_dataElement.valid())
- return;
-
- _dataElement = new HLAULongDataElement(&dataType);
- }
- virtual void apply(const HLAFloat32DataType& dataType)
- {
- _dataElement = createDataElement(_path, dataType);
- if (_dataElement.valid())
- return;
-
- _dataElement = new HLAFloatDataElement(&dataType);
- }
- virtual void apply(const HLAFloat64DataType& dataType)
- {
- _dataElement = createDataElement(_path, dataType);
- if (_dataElement.valid())
- return;