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>
86 virtual void process(
const std::string& parameter, luabind::object
const& parameters)
88 luabind::object tableEntry = parameters[parameter];
89 if (tableEntry.is_valid())
91 if (luabind::type(tableEntry) != LUA_TNIL)
93 myValue = luabind::object_cast<_Container>(tableEntry);
132 template <
typename _Container>
155 virtual void process(
const std::string& parameter, luabind::object
const& parameters)
157 luabind::object tableEntry = parameters[parameter];
158 if (tableEntry.is_valid())
160 if (luabind::type(tableEntry) == LUA_TTABLE)
162 for (luabind::iterator paramItr(tableEntry), end; paramItr != end; ++paramItr)
164 _Container
value = luabind::object_cast<_Container>(*paramItr);
165 this->
myValue.push_back(value);
176 template <
typename _Container>
213 for (luabind::iterator paramItr(tableEntry), end; paramItr != end; ++paramItr)
235 if (luabind::type(*paramItr) == LUA_TSTRING)
237 createdRw =
new DtRwString(luabind::object_cast<std::string>(paramItr.key()).c_str(), parentReg);
239 ((
DtRwString&)*createdRw) = luabind::object_cast<std::string>(*paramItr).c_str();
241 else if (luabind::type(*paramItr) == LUA_TNUMBER)
243 createdRw =
new DtRwReal(luabind::object_cast<std::string>(paramItr.key()).c_str(), parentReg);
245 ((
DtRwReal&)*createdRw) = luabind::object_cast<
double>(*paramItr);
247 else if (luabind::type(*paramItr) == LUA_TTABLE)
259 createdRw->
setName(luabind::object_cast<std::string>(paramItr.key()).c_str());
272 virtual void process(
const std::string& parameter, luabind::object
const& parameters)
277 luabind::object tableEntry = parameters[parameter];
278 if (tableEntry.is_valid())
280 if (luabind::type(tableEntry) == LUA_TTABLE)
313 virtual void process(
const std::string& parameter, luabind::object
const& parameters)
315 luabind::object tableEntry = parameters[parameter];
316 if (tableEntry.is_valid())
318 if (luabind::type(tableEntry) == LUA_TNUMBER)
323 else if (luabind::type(tableEntry) != LUA_TNIL)
325 myValue =
DtString(luabind::object_cast<std::string>(tableEntry).c_str());
376 void removeVariableParameter(
const std::string&);
409 template <
typename _Container> _Container
value(
const std::string& key)
const
411 VariableParameters::const_iterator iter = myVariableParameters.find(key);
413 if (iter != myVariableParameters.end())
421 template <
typename _Container> _Container*
valuePointer(
const std::string& key)
const
423 VariableParameters::const_iterator iter = myVariableParameters.find(key);
425 if (iter != myVariableParameters.end())
433 template <
typename _Container>
void set(
const std::string& key,
const _Container& value)
435 VariableParameters::iterator iter = myVariableParameters.find(key);
437 if (iter != myVariableParameters.end())
444 virtual bool valueIsSpecified(
const std::string&)
const;
447 template <
typename _Container>
450 std::vector<_Container> results;
451 luabind::object
object = value<luabind::object>(key);
453 if (luabind::type(
object) == LUA_TTABLE)
455 for (luabind::iterator paramItr(
object), end; paramItr != end; ++paramItr)
457 if (luabind::type(*paramItr) == LUA_TUSERDATA)
461 results.push_back(static_cast<_Container>(so->getUUID()));
465 results.push_back(luabind::object_cast<_Container>(*paramItr));
470 results.push_back(luabind::object_cast<_Container>(*paramItr));
474 else if (luabind::type(
object) == LUA_TSTRING)
476 results.push_back(luabind::object_cast<_Container>(
object));
478 else if (luabind::type(
object) == LUA_TUSERDATA)
482 results.push_back(static_cast<_Container>(so->getUUID()));
486 results.push_back(luabind::object_cast<_Container>(
object));
493 template <
typename _Container>
496 std::set<_Container> results;
497 luabind::object
object = value<luabind::object>(key);
499 if (luabind::type(
object) == LUA_TTABLE)
501 for (luabind::iterator paramItr(
object), end; paramItr != end; ++paramItr)
503 if (luabind::type(*paramItr) == LUA_TUSERDATA)
507 results.insert(static_cast<_Container>(so->getUUID()));
511 results.insert(luabind::object_cast<_Container>(*paramItr));
516 results.insert(luabind::object_cast<_Container>(*paramItr));
520 else if (luabind::type(
object) == LUA_TSTRING)
522 results.insert(luabind::object_cast<_Container>(
object));
524 else if (luabind::type(
object) == LUA_TUSERDATA)
528 results.insert(static_cast<_Container>(so->getUUID()));
532 results.insert(luabind::object_cast<_Container>(
object));
541 virtual void process(luabind::object
const& parameters);
550 inline void DtVariableParameterBuilder::addVariableParameter<DtScriptVrfObject>(
const std::string& s)
556 inline DtScriptVrfObject DtVariableParameterBuilder::value<DtScriptVrfObject>(
const std::string& key)
const
558 VariableParameters::const_iterator iter = myVariableParameters.find(key);
560 if (iter != myVariableParameters.end())
virtual void process(const std::string ¶meter, luabind::object const ¶meters)
Look in the table for the lua value, and, if specified, fill in.
Definition: variableParameterBuilder.h:272
virtual void setName(const DtString &)
Set the name of the object.
DtVariableParameterInterface()
Definition: variableParameterBuilder.h:31
virtual bool specified() const
Returns true if value has been specified.
Definition: variableParameterBuilder.h:110
void addRequiredVariableParameterReaderWriter(const std::string &s)
Definition: variableParameterBuilder.h:404
DtVariableParameterReaderWriter(const DtVariableParameterReaderWriter &orig)
Definition: variableParameterBuilder.h:186
Definition: variableParameterBuilder.h:54
virtual DtVariableParameterInterface * clone() const
Definition: variableParameterBuilder.h:351
void addVariableParameter(const std::string &s)
Definition: variableParameterBuilder.h:378
virtual ~DtVariableParameterNumberOrString()
Definition: variableParameterBuilder.h:304
virtual ~DtVariableParameterInterface()
Definition: variableParameterBuilder.h:35
virtual DtVariableParameterInterface * clone() const
Definition: variableParameterBuilder.h:205
const std::vector< DtReaderWriterRegistryData * > & registryData() const
Definition: readerWriterRegistry.h:161
_Container myValue
Definition: variableParameterBuilder.h:126
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:433
DtVariableParameterSimObject(bool required=false)
Definition: variableParameterBuilder.h:336
DtVariableParameterReaderWriter(bool required=false)
Definition: variableParameterBuilder.h:180
VariableParameters myVariableParameters
Definition: variableParameterBuilder.h:545
Definition: readerWriterRegistry.h:39
void addVariableParameterVector(const std::string &s)
Definition: variableParameterBuilder.h:389
SimObject.
Definition: variableParameterBuilder.h:333
std::set< _Container > valueToStdSet(const std::string &key) const
Definition: variableParameterBuilder.h:494
Vector container.
Definition: variableParameterBuilder.h:133
virtual ~DtVariableParameter()
Definition: variableParameterBuilder.h:77
Vector container.
Definition: variableParameterBuilder.h:177
DtVariableParameterNumberOrString(bool required=false)
Definition: variableParameterBuilder.h:294
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.
Number or string container.
Definition: variableParameterBuilder.h:291
static DtReaderWriterFactory * factory()
virtual ~DtVariableParameterVector()
Definition: variableParameterBuilder.h:146
const DtReaderWriterRegistry & registry() const
Collection of child DtReaderWriter nodes owned by this object.
Definition: readerWriter.h:496
const _Container & value() const
Definition: variableParameterBuilder.h:99
virtual DtVariableParameterInterface * clone() const
Definition: variableParameterBuilder.h:81
Base class that will allow for the addition of parameters that will be filled in with values from lua...
Definition: variableParameterBuilder.h:359
#define DT_DLL_vrfLua
This file is used to determine how to build.
Definition: vrfLuaDefines.h:25
DtVariableParameter(const DtVariableParameter &orig)
Definition: variableParameterBuilder.h:63
virtual ~DtVariableParameterSimObject()
Definition: variableParameterBuilder.h:347
void addVariableParameterReaderWriter(const std::string &s)
Definition: variableParameterBuilder.h:399
bool setRwFromLua(const luabind::object &inObj, DtReaderWriter *outRw)
Tries to set all the contents of the reader/writer item from lua.
virtual void process(const std::string ¶meter, luabind::object const ¶meters)
Look in the table for the lua value, and, if specified, fill in.
Definition: variableParameterBuilder.h:313
virtual bool isValid() const
Returns true if valid parameter.
Definition: variableParameterBuilder.h:120
Description: Readable, Writable DtReal (double)
Definition: rwReal.h:27
DtVariableParameterNumberOrString(const DtVariableParameterNumberOrString &orig)
Definition: variableParameterBuilder.h:299
virtual DtVariableParameterInterface * clone() const
Definition: variableParameterBuilder.h:150
Definition: variableParameterBuilder.h:28
std::vector< _Container > valueToStdVector(const std::string &key) const
Returns a std::vector<type> of table.
Definition: variableParameterBuilder.h:448
bool mySpecified
Definition: variableParameterBuilder.h:128
bool required() const
Definition: variableParameterBuilder.h:115
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 ~DtVariableParameterReaderWriter()
Definition: variableParameterBuilder.h:200
std::map< std::string, DtVariableParameterInterface * > VariableParameters
Definition: variableParameterBuilder.h:544
virtual DtReaderWriter * createRwStructure(DtReaderWriter *parentRw, luabind::object const &tableEntry) const
Definition: variableParameterBuilder.h:210
virtual void process(const std::string ¶meter, luabind::object const ¶meters)
Look in the table for the lua value, and, if specified, fill in.
Definition: variableParameterBuilder.h:86
virtual DtVariableParameterInterface * clone() const
Definition: variableParameterBuilder.h:308
DtVariableParameterVector(bool required=false)
Definition: variableParameterBuilder.h:136
void addRequiredVariableParameterVector(const std::string &s)
Definition: variableParameterBuilder.h:394
void addRequiredVariableParameter(const std::string &s)
Definition: variableParameterBuilder.h:384
virtual DtSymbolString name() const
Accessor for name of this readable/writable object.
void setValue(const _Container &value)
Definition: variableParameterBuilder.h:104
static DtScriptVrfObject nullObject()
Returns a null object.
Definition: scriptVrfObject.h:346
bool myRequired
Definition: variableParameterBuilder.h:127
virtual void process(const std::string ¶meter, luabind::object const ¶meters)
Look in the table for the lua value, and, if specified, fill in.
Definition: variableParameterBuilder.h:155
DtVariableParameterSimObject(const DtVariableParameterSimObject &orig)
Definition: variableParameterBuilder.h:342
DtVariableParameterVector(const DtVariableParameterVector &orig)
Definition: variableParameterBuilder.h:141
void removeEntry(const DtSymbolString &keyword)
Removes the entry for the given keyword.
_Container value(const std::string &key) const
Definition: variableParameterBuilder.h:409
Definition: scriptVrfObject.h:24
void addEntry(const DtSymbolString &keyword, DtReaderWriter *const rw)
Adds an entry with a DtReaderWriter for the given keyword.
_Container * valuePointer(const std::string &key) const
Definition: variableParameterBuilder.h:421
DtVariableParameter(bool required=false)
Definition: variableParameterBuilder.h:57