15 #include <vlutil/vlString.h>
23 #include <luabind/luabind.hpp>
44 virtual void process(
const std::string&, luabind::object
const& parameters) = 0;
47 virtual bool isValid()
const = 0;
50 virtual bool specified()
const = 0;
53 template <
typename _Container>
84 virtual void process(
const std::string& parameter, luabind::object
const& parameters)
override
86 luabind::object tableEntry = parameters[parameter];
87 if (tableEntry.is_valid())
89 if (luabind::type(tableEntry) != LUA_TNIL)
91 myValue = luabind::object_cast<_Container>(tableEntry);
128 template <
typename _Container>
150 virtual void process(
const std::string& parameter, luabind::object
const& parameters)
override
152 luabind::object tableEntry = parameters[parameter];
153 if (tableEntry.is_valid())
155 if (luabind::type(tableEntry) == LUA_TTABLE)
157 for (luabind::iterator paramItr(tableEntry), end; paramItr != end; ++paramItr)
159 _Container
value = luabind::object_cast<_Container>(*paramItr);
160 this->
myValue.push_back(value);
171 template <
typename _Container>
207 for (luabind::iterator paramItr(tableEntry), end; paramItr != end; ++paramItr)
229 if (luabind::type(*paramItr) == LUA_TSTRING)
231 createdRw =
new DtRwString(luabind::object_cast<std::string>(paramItr.key()).c_str(), parentReg);
233 ((
DtRwString&)*createdRw) = luabind::object_cast<std::string>(*paramItr).c_str();
235 else if (luabind::type(*paramItr) == LUA_TNUMBER)
237 createdRw =
new DtRwReal(luabind::object_cast<std::string>(paramItr.key()).c_str(), parentReg);
239 ((
DtRwReal&)*createdRw) = luabind::object_cast<
double>(*paramItr);
241 else if (luabind::type(*paramItr) == LUA_TTABLE)
253 createdRw->
setName(luabind::object_cast<std::string>(paramItr.key()).c_str());
266 virtual void process(
const std::string& parameter, luabind::object
const& parameters)
override
271 luabind::object tableEntry = parameters[parameter];
272 if (tableEntry.is_valid())
274 if (luabind::type(tableEntry) == LUA_TTABLE)
305 virtual void process(
const std::string& parameter, luabind::object
const& parameters)
override
307 luabind::object tableEntry = parameters[parameter];
308 if (tableEntry.is_valid())
310 if (luabind::type(tableEntry) == LUA_TNUMBER)
315 else if (luabind::type(tableEntry) != LUA_TNIL)
317 myValue =
DtString(luabind::object_cast<std::string>(tableEntry).c_str());
366 void removeVariableParameter(
const std::string&);
399 template <
typename _Container> _Container
value(
const std::string& key)
const
401 VariableParameters::const_iterator iter = myVariableParameters.find(key);
403 if (iter != myVariableParameters.end())
411 template <
typename _Container> _Container*
valuePointer(
const std::string& key)
const
413 VariableParameters::const_iterator iter = myVariableParameters.find(key);
415 if (iter != myVariableParameters.end())
423 template <
typename _Container>
void set(
const std::string& key,
const _Container& value)
425 VariableParameters::iterator iter = myVariableParameters.find(key);
427 if (iter != myVariableParameters.end())
434 virtual bool valueIsSpecified(
const std::string&)
const;
437 template <
typename _Container>
440 std::vector<_Container> results;
441 luabind::object
object = value<luabind::object>(key);
443 if (luabind::type(
object) == LUA_TTABLE)
445 for (luabind::iterator paramItr(
object), end; paramItr != end; ++paramItr)
447 if (luabind::type(*paramItr) == LUA_TUSERDATA)
451 results.push_back(static_cast<_Container>(so->getUUID()));
455 results.push_back(luabind::object_cast<_Container>(*paramItr));
460 results.push_back(luabind::object_cast<_Container>(*paramItr));
464 else if (luabind::type(
object) == LUA_TSTRING)
466 results.push_back(luabind::object_cast<_Container>(
object));
468 else if (luabind::type(
object) == LUA_TUSERDATA)
472 results.push_back(static_cast<_Container>(so->getUUID()));
476 results.push_back(luabind::object_cast<_Container>(
object));
483 template <
typename _Container>
486 std::set<_Container> results;
487 luabind::object
object = value<luabind::object>(key);
489 if (luabind::type(
object) == LUA_TTABLE)
491 for (luabind::iterator paramItr(
object), end; paramItr != end; ++paramItr)
493 if (luabind::type(*paramItr) == LUA_TUSERDATA)
497 results.insert(static_cast<_Container>(so->getUUID()));
501 results.insert(luabind::object_cast<_Container>(*paramItr));
506 results.insert(luabind::object_cast<_Container>(*paramItr));
510 else if (luabind::type(
object) == LUA_TSTRING)
512 results.insert(luabind::object_cast<_Container>(
object));
514 else if (luabind::type(
object) == LUA_TUSERDATA)
518 results.insert(static_cast<_Container>(so->getUUID()));
522 results.insert(luabind::object_cast<_Container>(
object));
531 virtual void process(luabind::object
const& parameters);
540 inline void DtVariableParameterBuilder::addVariableParameter<DtScriptVrfObject>(
const std::string& s)
546 inline DtScriptVrfObject DtVariableParameterBuilder::value<DtScriptVrfObject>(
const std::string& key)
const
548 VariableParameters::const_iterator iter = myVariableParameters.find(key);
550 if (iter != myVariableParameters.end())
DT_DLL_vrfLua bool setRwFromLua(const luabind::object &inObj, DtReaderWriter *outRw)
Tries to set all the contents of the reader/writer item from lua. If there is not a factory represent...
virtual void setName(const DtString &)
Set the name of the object. Uses the myName variable. Only set if you understand that this could have...
virtual DtVariableParameterInterface * clone() const override
Definition: variableParameterBuilder.h:301
DtVariableParameterInterface()
Definition: variableParameterBuilder.h:31
void addRequiredVariableParameterReaderWriter(const std::string &s)
Definition: variableParameterBuilder.h:394
DtVariableParameterReaderWriter(const DtVariableParameterReaderWriter &orig)
Definition: variableParameterBuilder.h:181
Definition: variableParameterBuilder.h:54
void addVariableParameter(const std::string &s)
Definition: variableParameterBuilder.h:368
virtual DtVariableParameterInterface * clone() const override
Definition: variableParameterBuilder.h:199
virtual ~DtVariableParameterInterface()
Definition: variableParameterBuilder.h:35
virtual bool specified() const override
Returns true if value has been specified.
Definition: variableParameterBuilder.h:108
const std::vector< DtReaderWriterRegistryData * > & registryData() const
Definition: readerWriterRegistry.h:161
virtual ~DtVariableParameterReaderWriter() override
Definition: variableParameterBuilder.h:195
_Container myValue
Definition: variableParameterBuilder.h:122
Definition: readerWriter.h:85
Description: Readable, Writable DtString Variable substitutions are done on this object when it is re...
Definition: rwString.h:20
void set(const std::string &key, const _Container &value)
Definition: variableParameterBuilder.h:423
DtVariableParameterSimObject(bool required=false)
Definition: variableParameterBuilder.h:328
DtVariableParameterReaderWriter(bool required=false)
Definition: variableParameterBuilder.h:175
VariableParameters myVariableParameters
Definition: variableParameterBuilder.h:535
Definition: readerWriterRegistry.h:39
void addVariableParameterVector(const std::string &s)
Definition: variableParameterBuilder.h:379
SimObject.
Definition: variableParameterBuilder.h:325
std::set< _Container > valueToStdSet(const std::string &key) const
Definition: variableParameterBuilder.h:484
virtual ~DtVariableParameterNumberOrString() override
Definition: variableParameterBuilder.h:298
Vector container.
Definition: variableParameterBuilder.h:129
Vector container.
Definition: variableParameterBuilder.h:172
DtVariableParameterNumberOrString(bool required=false)
Definition: variableParameterBuilder.h:288
DtVariableParameter(const _Container &orig, bool required=false)
Definition: variableParameterBuilder.h:70
virtual DtReaderWriter * cloneReaderWriter(const DtString &name, const DtReaderWriter *sourceRw, DtReaderWriterRegistry *parentRegistry) const
Creates a clone of the RW object to create a clone of the specified object. The object will first be ...
Number or string container.
Definition: variableParameterBuilder.h:285
static DtReaderWriterFactory * factory()
virtual ~DtVariableParameterSimObject() override
Definition: variableParameterBuilder.h:339
const DtReaderWriterRegistry & registry() const
Collection of child DtReaderWriter nodes owned by this object.
Definition: readerWriter.h:492
virtual ~DtVariableParameter() override
Definition: variableParameterBuilder.h:77
virtual DtVariableParameterInterface * clone() const override
Definition: variableParameterBuilder.h:342
const _Container & value() const
Definition: variableParameterBuilder.h:97
Base class that will allow for the addition of parameters that will be filled in with values from lua...
Definition: variableParameterBuilder.h:349
#define DT_DLL_vrfLua
This file is used to determine how to build.
Definition: vrfLuaDefines.h:25
virtual bool isValid() const override
Returns true if valid parameter.
Definition: variableParameterBuilder.h:117
DtVariableParameter(const DtVariableParameter &orig)
Definition: variableParameterBuilder.h:63
virtual void process(const std::string ¶meter, luabind::object const ¶meters) override
Look in the table for the lua value, and, if specified, fill in.
Definition: variableParameterBuilder.h:266
void addVariableParameterReaderWriter(const std::string &s)
Definition: variableParameterBuilder.h:389
virtual DtVariableParameterInterface * clone() const override
Definition: variableParameterBuilder.h:80
virtual DtVariableParameterInterface * clone() const override
Definition: variableParameterBuilder.h:145
Description: Readable, Writable DtReal (double)
Definition: rwReal.h:27
DtVariableParameterNumberOrString(const DtVariableParameterNumberOrString &orig)
Definition: variableParameterBuilder.h:293
Definition: variableParameterBuilder.h:28
std::vector< _Container > valueToStdVector(const std::string &key) const
Returns a std::vector<type> of table.
Definition: variableParameterBuilder.h:438
bool mySpecified
Definition: variableParameterBuilder.h:124
bool required() const
Definition: variableParameterBuilder.h:112
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...
virtual ~DtVariableParameterVector() override
Definition: variableParameterBuilder.h:142
std::map< std::string, DtVariableParameterInterface * > VariableParameters
Definition: variableParameterBuilder.h:534
virtual void process(const std::string ¶meter, luabind::object const ¶meters) override
Look in the table for the lua value, and, if specified, fill in.
Definition: variableParameterBuilder.h:150
virtual DtReaderWriter * createRwStructure(DtReaderWriter *parentRw, luabind::object const &tableEntry) const
Definition: variableParameterBuilder.h:204
DtVariableParameterVector(bool required=false)
Definition: variableParameterBuilder.h:132
void addRequiredVariableParameterVector(const std::string &s)
Definition: variableParameterBuilder.h:384
void addRequiredVariableParameter(const std::string &s)
Definition: variableParameterBuilder.h:374
virtual DtSymbolString name() const
Accessor for name of this readable/writable object.
virtual void process(const std::string ¶meter, luabind::object const ¶meters) override
Look in the table for the lua value, and, if specified, fill in.
Definition: variableParameterBuilder.h:305
void setValue(const _Container &value)
Definition: variableParameterBuilder.h:102
static DtScriptVrfObject nullObject()
Returns a null object.
Definition: scriptVrfObject.h:387
virtual void process(const std::string ¶meter, luabind::object const ¶meters) override
Look in the table for the lua value, and, if specified, fill in.
Definition: variableParameterBuilder.h:84
bool myRequired
Definition: variableParameterBuilder.h:123
DtVariableParameterSimObject(const DtVariableParameterSimObject &orig)
Definition: variableParameterBuilder.h:334
DtVariableParameterVector(const DtVariableParameterVector &orig)
Definition: variableParameterBuilder.h:137
void removeEntry(const DtSymbolString &keyword)
Removes the entry for the given keyword.
_Container value(const std::string &key) const
Definition: variableParameterBuilder.h:399
Definition: scriptVrfObject.h:30
void addEntry(const DtSymbolString &keyword, DtReaderWriter *const rw)
Adds an entry with a DtReaderWriter for the given keyword. An optional DtList of DtString* keyword al...
_Container * valuePointer(const std::string &key) const
Definition: variableParameterBuilder.h:411
DtVariableParameter(bool required=false)
Definition: variableParameterBuilder.h:57