12 #include <vlutil/vlString.h>
13 #include <luabind/luabind.hpp>
29 virtual void process(
const std::string&, luabind::object
const& parameters) = 0;
32 virtual bool isValid()
const = 0;
35 virtual bool specified()
const = 0;
38 template <
typename _Container>
64 virtual void process(
const std::string& parameter, luabind::object
const& parameters)
66 luabind::object tableEntry = parameters[parameter];
67 if (tableEntry.is_valid())
69 if (luabind::type(tableEntry) != LUA_TNIL)
71 myValue = luabind::object_cast<_Container>(tableEntry);
110 template <
typename _Container>
133 virtual void process(
const std::string& parameter, luabind::object
const& parameters)
135 luabind::object tableEntry = parameters[parameter];
136 if (tableEntry.is_valid())
138 if (luabind::type(tableEntry) == LUA_TTABLE)
140 for (luabind::iterator paramItr(tableEntry), end; paramItr != end; ++paramItr)
142 _Container
value = luabind::object_cast<_Container>(*paramItr);
143 this->
myValue.push_back(value);
175 virtual void process(
const std::string& parameter, luabind::object
const& parameters)
177 luabind::object tableEntry = parameters[parameter];
178 if (tableEntry.is_valid())
180 if (luabind::type(tableEntry) == LUA_TNUMBER)
185 else if (luabind::type(tableEntry) != LUA_TNIL)
187 myValue =
DtString(luabind::object_cast<std::string>(tableEntry).c_str());
213 void removeVariableParameter(
const std::string&);
215 template <
typename _Container>
void addVariableParameter(
const std::string& s)
220 template <
typename _Container>
void addRequiredVariableParameter(
const std::string& s)
225 template <
typename _Container>
void addVariableParameterVector(
const std::string& s)
230 template <
typename _Container>
void addRequiredVariableParameterVector(
const std::string& s)
235 template <
typename _Container> _Container value(
const std::string& key)
const
237 VariableParameters::const_iterator iter = myVariableParameters.find(key);
239 if (iter != myVariableParameters.end())
247 template <
typename _Container>
void set(
const std::string& key,
const _Container& value)
249 VariableParameters::iterator iter = myVariableParameters.find(key);
251 if (iter != myVariableParameters.end())
258 virtual bool valueIsSpecified(
const std::string&)
const;
261 template <
typename _Container>
262 std::vector<_Container> valueToStdVector(
const std::string& key)
const
264 std::vector<_Container> results;
265 luabind::object
object = value<luabind::object>(key);
267 if (luabind::type(
object) == LUA_TTABLE)
269 for (luabind::iterator paramItr(
object), end; paramItr != end; ++paramItr)
271 results.push_back(luabind::object_cast<_Container>(*paramItr));
274 else if (luabind::type(
object) == LUA_TSTRING)
276 results.push_back(luabind::object_cast<_Container>(
object));
282 template <
typename _Container>
283 std::set<_Container> valueToStdSet(
const std::string& key)
const
285 std::set<_Container> results;
286 luabind::object
object = value<luabind::object>(key);
288 if (luabind::type(
object) == LUA_TTABLE)
290 for (luabind::iterator paramItr(
object), end; paramItr != end; ++paramItr)
292 results.insert(luabind::object_cast<_Container>(*paramItr));
295 else if (luabind::type(
object) == LUA_TSTRING)
297 results.insert(luabind::object_cast<_Container>(
object));
305 virtual void process(luabind::object
const& parameters);