add a wrapper function to work around binding a function with default parameters against LuaBind
This commit is contained in:
parent
18f8ce69cd
commit
f9e780ed67
@ -42,7 +42,13 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
ScriptingEnvironment::ScriptingEnvironment() {}
|
// wrapper method as luabind doesn't automatically overload funcs w/ default parameters
|
||||||
|
template<class T>
|
||||||
|
auto get_value_by_key(T const& object, const char *key) -> decltype(object.get_value_by_key(key))
|
||||||
|
{
|
||||||
|
return object.get_value_by_key(key);
|
||||||
|
}
|
||||||
|
|
||||||
ScriptingEnvironment::ScriptingEnvironment(const char *file_name)
|
ScriptingEnvironment::ScriptingEnvironment(const char *file_name)
|
||||||
: file_name(file_name)
|
: file_name(file_name)
|
||||||
{
|
{
|
||||||
@ -51,8 +57,6 @@ ScriptingEnvironment::ScriptingEnvironment(const char *file_name)
|
|||||||
|
|
||||||
void ScriptingEnvironment::initLuaState(lua_State* lua_state)
|
void ScriptingEnvironment::initLuaState(lua_State* lua_state)
|
||||||
{
|
{
|
||||||
using namespace osmium;
|
|
||||||
|
|
||||||
typedef double (osmium::Location::* location_member_ptr_type)() const;
|
typedef double (osmium::Location::* location_member_ptr_type)() const;
|
||||||
|
|
||||||
luabind::open(lua_state);
|
luabind::open(lua_state);
|
||||||
@ -76,7 +80,8 @@ void ScriptingEnvironment::initLuaState(lua_State* lua_state)
|
|||||||
|
|
||||||
luabind::class_<osmium::Node>("Node")
|
luabind::class_<osmium::Node>("Node")
|
||||||
// .def<node_member_ptr_type>("tags", &osmium::Node::tags)
|
// .def<node_member_ptr_type>("tags", &osmium::Node::tags)
|
||||||
.def("get_value_by_key", &osmium::Node::get_value_by_key),
|
.def("get_value_by_key", &osmium::Node::get_value_by_key)
|
||||||
|
.def("get_value_by_key", &get_value_by_key<osmium::Node>),
|
||||||
|
|
||||||
luabind::class_<ExtractionNode>("ResultNode")
|
luabind::class_<ExtractionNode>("ResultNode")
|
||||||
.def_readwrite("traffic_lights", &ExtractionNode::traffic_lights)
|
.def_readwrite("traffic_lights", &ExtractionNode::traffic_lights)
|
||||||
@ -84,7 +89,7 @@ void ScriptingEnvironment::initLuaState(lua_State* lua_state)
|
|||||||
|
|
||||||
luabind::class_<ExtractionWay>("ResultWay")
|
luabind::class_<ExtractionWay>("ResultWay")
|
||||||
// .def(luabind::constructor<>())
|
// .def(luabind::constructor<>())
|
||||||
.def_readwrite("speed", &ExtractionWay::forward_speed)
|
.def_readwrite("forward_speed", &ExtractionWay::forward_speed)
|
||||||
.def_readwrite("backward_speed", &ExtractionWay::backward_speed)
|
.def_readwrite("backward_speed", &ExtractionWay::backward_speed)
|
||||||
.def_readwrite("name", &ExtractionWay::name)
|
.def_readwrite("name", &ExtractionWay::name)
|
||||||
.def_readwrite("roundabout", &ExtractionWay::roundabout)
|
.def_readwrite("roundabout", &ExtractionWay::roundabout)
|
||||||
@ -101,6 +106,7 @@ void ScriptingEnvironment::initLuaState(lua_State* lua_state)
|
|||||||
],
|
],
|
||||||
luabind::class_<osmium::Way>("Way")
|
luabind::class_<osmium::Way>("Way")
|
||||||
.def("get_value_by_key", &osmium::Way::get_value_by_key)
|
.def("get_value_by_key", &osmium::Way::get_value_by_key)
|
||||||
|
.def("get_value_by_key", &get_value_by_key<osmium::Way>)
|
||||||
];
|
];
|
||||||
|
|
||||||
if (0 != luaL_dofile(lua_state, file_name.c_str()))
|
if (0 != luaL_dofile(lua_state, file_name.c_str()))
|
||||||
|
Loading…
Reference in New Issue
Block a user