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 const DtString& dataSourceFilename,
bool showConsoleOutput =
true);
231 const DtString& type, DtEnvValueSP root);
253 static std::set<DtString> getVariableTypesFromEnvironment(DtEnvValueSP);
258 DtEnvValueSP envValue,
bool traverseElements =
true)
261 attributeValue, envValue, traverseElements);
266 DtEnvValueSP envValue,
bool traverseElements =
true)
269 attributeValue, envValue, traverseElements);
275 const DtString& attributeValue, DtEnvValueSP envValue,
276 bool traverseElements =
true);
286 static bool IsGroupedElement(
const DtString& rwName,
290 DtEnvValueSP parentNode,
const DtString& groupName,
291 bool createIfMissing =
true);
294 DtEnvValueSP parentNode,
const DtString& groupName);
305 DtEnvValueSP parent,
DtString bindingName =
"")
308 DtEnvValueSP newObject = env->addObject(name, name, parent);
309 if (bindingName !=
"")
320 DtEnvValueSP simObjectNode);
327 const DtString& dataSourceFilename,
bool showConsoleOutput =
true);
343 writer.setIndentation(
" ");
344 writer.writeFile(*env, filename);
355 DtString objType = getAttribute(env, attributeName, root);
358 ot = objType.c_str();
364 bool fallbackOnObjectType =
true)
375 static std::list<DtObjectType> getMatchTypes(
DtEnvironmentSP env, DtEnvValueSP root,
376 bool fallbackOnObjectType =
true);
379 bool fallbackOnMatchType =
true)
384 return getMatchType(env, root,
false);
391 double& x,
double& y,
double& z)
411 const DtRwVector* vec,
bool writeAsBodyPosition)
413 if (writeAsBodyPosition)
430 sprintf(buff,
"%X", number);
static DtObjectType getObjectTypeAttr(DtEnvironmentSP env, const DtString &attributeName, DtEnvValueSP root)
Gets objecttype attribute from current Node.
Definition: vrfXmlUtils.h:353
static DtEnvValueSP CreateEnvNode(DtEnvironmentSP env, const DtString &name, DtEnvValueSP parent, DtString bindingName="")
Definition: vrfXmlUtils.h:304
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:339
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:305
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:408
std::list< DtString > StringVector
Definition: vrfXmlUtils.h:278
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:390
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:427
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:245
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:304
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:378
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:363
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:279
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:264
static const char * SystemName
Definition: vrfXmlTypes.h:48
static void WriteVector(DtEnvironmentSP env, DtEnvValueSP root, const DtRwVector *vec, bool writeAsBodyPosition)
Definition: vrfXmlUtils.h:410
static DtString removeQuotes(const DtString &str)
Definition: vrfXmlUtils.h:347
const char DtXMLObjectType[]
Definition: vrfRwTypes.h:332
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:303
static DtEnvValueSP FindElementByParamName(DtEnvironmentSP env, const DtString &nodeType, const DtString &attributeValue, DtEnvValueSP envValue, bool traverseElements=true)
Definition: vrfXmlUtils.h:256
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:281
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:240
const char DtXMLVectorY[]
Definition: rwTypes.h:79