-// Copyright (C) 2009 - 2010 Mathias Froehlich - Mathias.Froehlich@web.de
+// Copyright (C) 2009 - 2012 Mathias Froehlich - Mathias.Froehlich@web.de
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
#include "HLADataTypeVisitor.hxx"
#include "HLAEnumeratedDataType.hxx"
#include "HLAFixedRecordDataType.hxx"
-#include "HLAVariantDataType.hxx"
+#include "HLAVariantRecordDataType.hxx"
namespace simgear {
if (dataType.valid())
return dataType;
- dataType = getVariantDataType(dataTypeName, dataTypeMap);
+ dataType = getVariantRecordDataType(dataTypeName, dataTypeMap);
if (dataType.valid())
return dataType;
}
arrayDataType->setElementDataType(elementDataType.get());
+ // Check if this should be a string data type
+ if (elementDataType->toBasicDataType()) {
+ if (dataTypeName == "HLAopaqueData") {
+ arrayDataType->setIsOpaque(true);
+ } else if (dataTypeName.find("String") != std::string::npos || dataTypeName.find("string") != std::string::npos) {
+ arrayDataType->setIsString(true);
+ }
+ }
+
return arrayDataType;
}
return dataType;
}
-SGSharedPtr<HLAVariantDataType>
-HLAOMTXmlVisitor::getVariantDataType(const std::string& dataTypeName, HLAOMTXmlVisitor::StringDataTypeMap& dataTypeMap) const
+SGSharedPtr<HLAVariantRecordDataType>
+HLAOMTXmlVisitor::getVariantRecordDataType(const std::string& dataTypeName, HLAOMTXmlVisitor::StringDataTypeMap& dataTypeMap) const
{
VariantRecordDataMap::const_iterator i = _variantRecordDataMap.find(dataTypeName);
if (i == _variantRecordDataMap.end())
return 0;
- SGSharedPtr<HLAVariantDataType> dataType = new HLAVariantDataType(dataTypeName);
+ SGSharedPtr<HLAVariantRecordDataType> dataType = new HLAVariantRecordDataType(dataTypeName);
dataTypeMap[dataTypeName] = dataType;
SGSharedPtr<HLAEnumeratedDataType> enumeratedDataType = getEnumeratedDataType(i->second._dataType);
throw sg_exception("enumeratedDataTypes tag outside dataTypes!");
pushMode(EnumeratedDataTypesMode);
- Enumerator enumerator;
- enumerator._name = getAttribute("name", atts);
- enumerator._values = getAttribute("values", atts);
- _enumeratedDataMap[_enumeratedDataName]._enumeratorList.push_back(enumerator);
-
} else if (strcmp(name, "arrayData") == 0) {
if (getCurrentMode() != ArrayDataTypesMode)
throw sg_exception("arrayData tag outside arrayDataTypes!");