hla: Make HLAFixedRecordDataElement work with delayed data type setting.

This commit is contained in:
Mathias Froehlich
2012-07-21 12:55:53 +02:00
parent 1212109c03
commit 07d1358e08
2 changed files with 19 additions and 0 deletions

View File

@@ -96,24 +96,32 @@ HLAAbstractFixedRecordDataElement::setDataType(const HLAFixedRecordDataType* dat
unsigned
HLAAbstractFixedRecordDataElement::getNumFields() const
{
if (!_dataType.valid())
return 0;
return _dataType->getNumFields();
}
unsigned
HLAAbstractFixedRecordDataElement::getFieldNumber(const std::string& name) const
{
if (!_dataType.valid())
return ~0u;
return _dataType->getFieldNumber(name);
}
const HLADataType*
HLAAbstractFixedRecordDataElement::getFieldDataType(unsigned i) const
{
if (!_dataType.valid())
return 0;
return _dataType->getFieldDataType(i);
}
const HLADataType*
HLAAbstractFixedRecordDataElement::getFieldDataType(const std::string& name) const
{
if (!_dataType.valid())
return 0;
return getFieldDataType(getFieldNumber(name));
}
@@ -129,6 +137,15 @@ HLAFixedRecordDataElement::~HLAFixedRecordDataElement()
clearStamp();
}
bool
HLAFixedRecordDataElement::setDataType(const HLADataType* dataType)
{
if (!HLAAbstractFixedRecordDataElement::setDataType(dataType))
return false;
_fieldVector.resize(getNumFields());
return true;
}
bool
HLAFixedRecordDataElement::decodeField(HLADecodeStream& stream, unsigned i)
{

View File

@@ -58,6 +58,8 @@ public:
HLAFixedRecordDataElement(const HLAFixedRecordDataType* dataType);
virtual ~HLAFixedRecordDataElement();
virtual bool setDataType(const HLADataType* dataType);
virtual bool decodeField(HLADecodeStream& stream, unsigned i);
virtual bool encodeField(HLAEncodeStream& stream, unsigned i) const;