13 #include <vlutil/vlString.h>
21 #include <luabind/luabind.hpp>
42 virtual void process(
const std::string&, luabind::object
const& parameters) = 0;
45 virtual bool isValid()
const = 0;
48 virtual bool specified()
const = 0;
51 template <
typename _Container>
77 virtual void process(
const std::string& parameter, luabind::object
const& parameters)
79 luabind::object tableEntry = parameters[parameter];
80 if (tableEntry.is_valid())
82 if (luabind::type(tableEntry) != LUA_TNIL)
84 myValue = luabind::object_cast<_Container>(tableEntry);
123 template <
typename _Container>
146 virtual void process(
const std::string& parameter, luabind::object
const& parameters)
148 luabind::object tableEntry = parameters[parameter];
149 if (tableEntry.is_valid())
151 if (luabind::type(tableEntry) == LUA_TTABLE)
153 for (luabind::iterator paramItr(tableEntry), end; paramItr != end; ++paramItr)
155 _Container
value = luabind::object_cast<_Container>(*paramItr);
156 this->
myValue.push_back(value);
167 template <
typename _Container>
204 for (luabind::iterator paramItr(tableEntry), end; paramItr != end; ++paramItr)
226 if (luabind::type(*paramItr) == LUA_TSTRING)
228 DtRwString* createdRw =
new DtRwString(luabind::object_cast<std::string>(paramItr.key()).c_str(), parentReg);
230 *createdRw = luabind::object_cast<std::string>(*paramItr).c_str();
232 else if (luabind::type(*paramItr) == LUA_TNUMBER)
234 DtRwReal* createdRw =
new DtRwReal(luabind::object_cast<std::string>(paramItr.key()).c_str(), parentReg);
236 *createdRw = luabind::object_cast<
double>(*paramItr);
238 else if (luabind::type(*paramItr) == LUA_TTABLE)
250 createdRw->
setName(luabind::object_cast<std::string>(paramItr.key()).c_str());
263 virtual void process(
const std::string& parameter, luabind::object
const& parameters)
268 luabind::object tableEntry = parameters[parameter];
269 if (tableEntry.is_valid())
271 if (luabind::type(tableEntry) == LUA_TTABLE)
304 virtual void process(
const std::string& parameter, luabind::object
const& parameters)
306 luabind::object tableEntry = parameters[parameter];
307 if (tableEntry.is_valid())
309 if (luabind::type(tableEntry) == LUA_TNUMBER)
314 else if (luabind::type(tableEntry) != LUA_TNIL)
316 myValue =
DtString(luabind::object_cast<std::string>(tableEntry).c_str());
342 void removeVariableParameter(
const std::string&);
344 template <
typename _Container>
void addVariableParameter(
const std::string& s)
349 template <
typename _Container>
void addRequiredVariableParameter(
const std::string& s)
354 template <
typename _Container>
void addVariableParameterVector(
const std::string& s)
359 template <
typename _Container>
void addRequiredVariableParameterVector(
const std::string& s)
364 template <
typename _Container>
void addVariableParameterReaderWriter(
const std::string& s)
369 template <
typename _Container>
void addRequiredVariableParameterReaderWriter(
const std::string& s)
374 template <
typename _Container> _Container value(
const std::string& key)
const
376 VariableParameters::const_iterator iter = myVariableParameters.find(key);
378 if (iter != myVariableParameters.end())
386 template <
typename _Container> _Container* valuePointer(
const std::string& key)
const
388 VariableParameters::const_iterator iter = myVariableParameters.find(key);
390 if (iter != myVariableParameters.end())
398 template <
typename _Container>
void set(
const std::string& key,
const _Container& value)
400 VariableParameters::iterator iter = myVariableParameters.find(key);
402 if (iter != myVariableParameters.end())
409 virtual bool valueIsSpecified(
const std::string&)
const;
412 template <
typename _Container>
413 std::vector<_Container> valueToStdVector(
const std::string& key)
const
415 std::vector<_Container> results;
416 luabind::object
object = value<luabind::object>(key);
418 if (luabind::type(
object) == LUA_TTABLE)
420 for (luabind::iterator paramItr(
object), end; paramItr != end; ++paramItr)
422 results.push_back(luabind::object_cast<_Container>(*paramItr));
425 else if (luabind::type(
object) == LUA_TSTRING)
427 results.push_back(luabind::object_cast<_Container>(
object));
433 template <
typename _Container>
434 std::set<_Container> valueToStdSet(
const std::string& key)
const
436 std::set<_Container> results;
437 luabind::object
object = value<luabind::object>(key);
439 if (luabind::type(
object) == LUA_TTABLE)
441 for (luabind::iterator paramItr(
object), end; paramItr != end; ++paramItr)
443 results.insert(luabind::object_cast<_Container>(*paramItr));
446 else if (luabind::type(
object) == LUA_TSTRING)
448 results.insert(luabind::object_cast<_Container>(
object));
456 virtual void process(luabind::object
const& parameters);