10 #include "mtl/environment.h"
11 #include "mtl/envXmlWriter.h"
31 #include "vlutil/vlStringUtil.h"
32 #include "vlutil/vlFilename.h"
34 #include <boost/function.hpp>
35 #include <boost/lexical_cast.hpp>
97 return XmlBindingCharToMtl(root->value());
101 DtEnvValueSP root,
const DtString& paramName = DtString::nullString())
103 FindAndRemove(env, type, paramName, root);
104 DtEnvValueSP newElement = env->addObject(type, type, root);
105 if (paramName != DtString::nullString())
116 newElement->setValue(value ?
"True" :
"False");
123 DtEnvValueSP newElement = AddElement(env,
DtXMLRealType, root, name);
124 newElement->setValue(
DtString(value));
131 DtEnvValueSP newElement = AddElement(env,
DtXMLIntType, root, name);
132 newElement->setValue(
DtString(value));
138 return env->addAttribute(name, value ?
"True" :
"False", root);
146 DtEnvValueSP newElement = AddElement(env,
DtXMLStringType, root, name);
147 newElement->setValue(MtlBindingCharToXml(value));
153 DtEnvValueSP attr = env->getAttribute(name, root);
173 static std::list<DtObjectType> additionalMatchTypes(
DtEnvironmentSP env, DtEnvValueSP root);
174 static void setAdditionalMatchTypes(
DtEnvironmentSP env, DtEnvValueSP root,
const std::list<DtObjectType>& types);
198 const DtEnvValueSP parentNode, DtTaitBryan& orientation)
200 orientation.setPsi(getDoubleAttribute(env,
DtXMLYaw, parentNode));
201 orientation.setTheta(getDoubleAttribute(env,
DtXMLPitch, parentNode));
202 orientation.setPhi(getDoubleAttribute(env,
DtXMLRoll, parentNode));
208 static void CreateVariableBinding(
const DtString& bindingType,
228 static void ClearCache();
232 const DtString& dataSourceFilename,
bool showConsoleOutput =
true);
235 const DtString& type, DtEnvValueSP root);
257 static std::set<DtString> getVariableTypesFromEnvironment(DtEnvValueSP);
262 DtEnvValueSP envValue,
bool traverseElements =
true)
265 attributeValue, envValue, traverseElements);
270 DtEnvValueSP envValue,
bool traverseElements =
true)
273 attributeValue, envValue, traverseElements);
279 const DtString& attributeValue, DtEnvValueSP envValue,
280 bool traverseElements =
true);
290 static bool IsGroupedElement(
const DtString& rwName,
294 DtEnvValueSP parentNode,
const DtString& groupName,
295 bool createIfMissing =
true);
298 DtEnvValueSP parentNode,
const DtString& groupName);
309 DtEnvValueSP parent,
DtString bindingName =
"")
312 DtEnvValueSP newObject = env->addObject(name, name, parent);
313 if (bindingName !=
"")
324 DtEnvValueSP simObjectNode);
331 const DtString& dataSourceFilename,
bool showConsoleOutput =
true);
347 writer.setIndentation(
" ");
348 writer.writeFile(*env, filename);
359 DtString objType = getAttribute(env, attributeName, root);
362 ot = objType.c_str();
368 bool fallbackOnObjectType =
true)
379 static std::list<DtObjectType> getMatchTypes(
DtEnvironmentSP env, DtEnvValueSP root,
380 bool fallbackOnObjectType =
true);
383 bool fallbackOnMatchType =
true)
388 return getMatchType(env, root,
false);
395 double& x,
double& y,
double& z)
415 const DtRwVector* vec,
bool writeAsBodyPosition)
417 if (writeAsBodyPosition)
434 sprintf(buff,
"%X", number);
static DtObjectType getObjectTypeAttr(DtEnvironmentSP env, const DtString &attributeName, DtEnvValueSP root)
Gets objecttype attribute from current Node.
Definition: vrfXmlUtils.h:357
static DtEnvValueSP CreateEnvNode(DtEnvironmentSP env, const DtString &name, DtEnvValueSP parent, DtString bindingName="")
Definition: vrfXmlUtils.h:308
DT_DLL_readerWriter DtString DtXmlBindingCharToMtl(const DtString &str)
Can't use '$' for variables. so where we would use it, as in filenames with variables, it will be replaced with '@'.
const char DtXMLVectorZ[]
Definition: rwTypes.h:80
static DtString getParentFile(DtEnvironmentSP env, DtEnvValueSP root)
Gets parent file attribute from current Node.
Definition: vrfXmlUtils.h:90
static void WriteXML(DtEnvironmentSP env, DtString filename)
Definition: vrfXmlUtils.h:343
Definition: vrfXmlUtils.h:41
static const char * Platform
Definition: vrfXmlTypes.h:46
const char DtXMLStringType[]
Definition: rwTypes.h:50
static DtString getPlatform(DtEnvironmentSP env, DtEnvValueSP root)
Gets platform attribute from current Node.
Definition: vrfXmlUtils.h:84
static double getDoubleAttribute(DtEnvironmentSP env, DtString attributeName, DtEnvValueSP root)
Definition: vrfXmlUtils.h:181
Definition: readerWriterRegistryData.h:25
#define DT_DLL_vrfobjparam
This file is used to determine how to build.
Definition: vrfobjparamDefines.h:28
const char DtXMLRoll[]
Definition: vrfRwTypes.h:313
static void getOrientation(DtEnvironmentSP env, const DtEnvValueSP parentNode, DtTaitBryan &orientation)
Definition: vrfXmlUtils.h:197
DT_DLL_readerWriter DtBoost::shared_ptr< DtEnvironment > DtEnvironmentSP
Definition: readerWriter.h:30
const char DtXMLIntType[]
Definition: rwTypes.h:23
DT_DLL_readerWriter DtString DtRemoveQuotes(const DtString &str)
static const DtObjectType & nullType()
List of DtComponentSystemDescriptor instances.
Definition: componentSystemDescriptorList.h:20
std::list< DtString > NameList
Definition: vrfXmlUtils.h:412
std::list< DtString > StringVector
Definition: vrfXmlUtils.h:282
static const char * SimObject
Definition: vrfXmlTypes.h:54
Definition: readerWriter.h:85
static DtEnvValueSP addRealElement(DtEnvironmentSP env, DtEnvValueSP root, const DtString &name, double value)
Adds a new real type to the given root and returns the new value.
Definition: vrfXmlUtils.h:121
const char DtXMLRealType[]
Definition: rwTypes.h:36
Definition: readerWriterRegistry.h:39
virtual const char * string(char sep= ':') const
static void getXYZAttrs(DtEnvironmentSP env, const DtEnvValueSP root, double &x, double &y, double &z)
Definition: vrfXmlUtils.h:394
static const char * MatchType
Definition: vrfXmlTypes.h:70
static DtEnvValueSP addBooleanAttribute(DtEnvironmentSP env, DtEnvValueSP root, const DtString &name, bool value)
Definition: vrfXmlUtils.h:136
static DtReaderWriter * CreateRwObject(const DtString &rwType)
Creates an RW object given the type.
Definition: vrfXmlUtils.h:192
const char DtXMLBodyForward[]
Definition: rwTypes.h:81
static DtEnvValueSP addStringElement(DtEnvironmentSP env, DtEnvValueSP root, const DtString &name, const DtString &value)
Convenience function.
Definition: vrfXmlUtils.h:144
static DtString GetObjectValue(DtEnvValueSP root)
Definition: vrfXmlUtils.h:95
static DtString IntToHexString(const int &number)
Definition: vrfXmlUtils.h:431
const char DtXMLObjectTypeType[]
Definition: rwTypes.h:59
static DtString MtlBindingCharToXml(const DtString &str)
Can't use '$' for variables. so where we would use it, as in filenames with variables, it will be replaced with '@'.
Definition: vrfXmlUtils.h:249
Definition: objectType.h:27
ReaderWriter object that maintains a list of reader-writer variable bindings. It keeps a list of name...
Definition: rwVariableBindings.h:27
Definition: rwVector.h:23
static DtReaderWriterFactory * factory()
static const char * ParentFile
Definition: vrfXmlTypes.h:50
static void setObjectType(DtEnvironmentSP env, DtEnvValueSP root, const DtObjectType &t)
Definition: vrfXmlUtils.h:163
const char DtXMLBooleanType[]
Definition: rwTypes.h:18
std::list< const DtRwVariableBindings * > DtVariableBindingsList
Definition: readerWriterRegistry.h:29
const char DtXMLPitch[]
Definition: vrfRwTypes.h:312
static DtObjectType getObjectType(DtEnvironmentSP env, DtEnvValueSP root)
std::vector< DtFilename > SearchPaths
Definition: readerWriter.h:92
static DtEnvValueSP addIntegerElement(DtEnvironmentSP env, DtEnvValueSP root, const DtString &name, double value)
Adds a new integer type to the given root and returns the new value.
Definition: vrfXmlUtils.h:129
static DtEnvValueSP addbooleanElement(DtEnvironmentSP env, DtEnvValueSP root, const DtString &name, bool value)
Adds a new boolean type to the given root and returns the new value.
Definition: vrfXmlUtils.h:113
static DtObjectType getObjectType(DtEnvironmentSP env, DtEnvValueSP root, bool fallbackOnMatchType=true)
Definition: vrfXmlUtils.h:382
static const char * ParamName
Definition: vrfXmlTypes.h:47
const char DtXMLParamName[]
XML types.
Definition: rwTypes.h:71
static DtObjectType getMatchType(DtEnvironmentSP env, DtEnvValueSP root, bool fallbackOnObjectType=true)
Definition: vrfXmlUtils.h:367
const char DtXMLVectorX[]
Definition: rwTypes.h:78
std::list< DtEnvValueSP > DtEnvValueSPList
Definition: vrfXmlUtils.h:44
DT_DLL_readerWriter DtString DtMtlBindingCharToXml(const DtString &str)
std::vector< DtReaderWriterRegistryData * > RegDataVector
Definition: vrfXmlUtils.h:283
static DtEnvValueSP AddElement(DtEnvironmentSP env, const DtString &type, DtEnvValueSP root, const DtString ¶mName=DtString::nullString())
Definition: vrfXmlUtils.h:100
static DtEnvValueSP FindElementBySystemName(DtEnvironmentSP env, const DtString &nodeType, const DtString &attributeValue, DtEnvValueSP envValue, bool traverseElements=true)
Definition: vrfXmlUtils.h:268
static const char * SystemName
Definition: vrfXmlTypes.h:48
static void WriteVector(DtEnvironmentSP env, DtEnvValueSP root, const DtRwVector *vec, bool writeAsBodyPosition)
Definition: vrfXmlUtils.h:414
static DtString removeQuotes(const DtString &str)
Definition: vrfXmlUtils.h:351
const char DtXMLObjectType[]
Definition: vrfRwTypes.h:340
virtual DtReaderWriter * createItem(const DtString &type, const DtString &name, DtReaderWriterRegistry *parentRegistry) const
Creates a new RW type based on the type string provided, with the specified name and parent registry...
const char DtXMLBodyDown[]
Definition: rwTypes.h:83
static void setMatchType(DtEnvironmentSP env, DtEnvValueSP root, const DtObjectType &t)
Definition: vrfXmlUtils.h:168
const char DtXMLYaw[]
Definition: vrfRwTypes.h:311
static DtEnvValueSP FindElementByParamName(DtEnvironmentSP env, const DtString &nodeType, const DtString &attributeValue, DtEnvValueSP envValue, bool traverseElements=true)
Definition: vrfXmlUtils.h:260
static double getDouble(DtEnvironmentSP env, DtString attributeName, DtEnvValueSP root)
const char DtXMLBodyRight[]
Definition: rwTypes.h:82
static DtEnvValueSP addStringAttribute(DtEnvironmentSP env, DtEnvValueSP root, const DtString &name, const DtString &value)
Definition: vrfXmlUtils.h:151
std::map< DtString, DtString > GroupMappings
Definition: vrfXmlUtils.h:285
static DtString getAttribute(DtEnvironmentSP env, const DtString &name, DtEnvValueSP root)
Gets the named attribute from a DtEnvValueSP. Returns "" if the attribute is not found. Note that some attribute names are reserved, and will not work, for example "name" and "type".
static void setPlatform(DtEnvironmentSP env, DtEnvValueSP root, const DtString &t)
Definition: vrfXmlUtils.h:176
static DtString XmlBindingCharToMtl(const DtString &str)
Can't use '$' for variables. so where we would use it, as in filenames with variables, it will be replaced with '@'.
Definition: vrfXmlUtils.h:244
const char DtXMLVectorY[]
Definition: rwTypes.h:79