@@ -300,37 +300,25 @@ int geom_transform(lua_State *lua_state)
300300
301301void init_geometry_class (lua_State *lua_state)
302302{
303- lua_getglobal (lua_state, " osm2pgsql" );
304- if (luaL_newmetatable (lua_state, OSM2PGSQL_GEOMETRY_CLASS) != 1 ) {
305- throw std::runtime_error{" Internal error: Lua newmetatable failed." };
306- }
307- lua_pushvalue (lua_state, -1 ); // Copy of new metatable
308-
309- // Add metatable as osm2pgsql.Geometry so we can access it from Lua
310- lua_setfield (lua_state, -3 , " Geometry" );
311-
312- luaX_add_table_func (lua_state, " __gc" , geom_gc);
313- luaX_add_table_func (lua_state, " __len" , geom_num_geometries);
314- luaX_add_table_func (lua_state, " __tostring" , geom_tostring);
315- lua_pushvalue (lua_state, -1 );
316- lua_setfield (lua_state, -2 , " __index" );
317- luaX_add_table_func (lua_state, " area" , geom_area);
318- luaX_add_table_func (lua_state, " length" , geom_length);
319- luaX_add_table_func (lua_state, " centroid" , geom_centroid);
320- luaX_add_table_func (lua_state, " get_bbox" , geom_get_bbox);
321- luaX_add_table_func (lua_state, " geometry_n" , geom_geometry_n);
322- luaX_add_table_func (lua_state, " geometry_type" , geom_geometry_type);
323- luaX_add_table_func (lua_state, " is_null" , geom_is_null);
324- luaX_add_table_func (lua_state, " line_merge" , geom_line_merge);
325- luaX_add_table_func (lua_state, " reverse" , geom_reverse);
326- luaX_add_table_func (lua_state, " num_geometries" , geom_num_geometries);
327- luaX_add_table_func (lua_state, " pole_of_inaccessibility" ,
328- geom_pole_of_inaccessibility);
329- luaX_add_table_func (lua_state, " segmentize" , geom_segmentize);
330- luaX_add_table_func (lua_state, " simplify" , geom_simplify);
331- luaX_add_table_func (lua_state, " spherical_area" , geom_spherical_area);
332- luaX_add_table_func (lua_state, " srid" , geom_srid);
333- luaX_add_table_func (lua_state, " transform" , geom_transform);
334-
335- lua_pop (lua_state, 2 ); // __index, global osmp2gsql
303+ luaX_set_up_metatable (
304+ lua_state, " Geometry" , OSM2PGSQL_GEOMETRY_CLASS,
305+ {{" __gc" , geom_gc},
306+ {" __len" , geom_num_geometries},
307+ {" __tostring" , geom_tostring},
308+ {" area" , geom_area},
309+ {" length" , geom_length},
310+ {" centroid" , geom_centroid},
311+ {" get_bbox" , geom_get_bbox},
312+ {" geometry_n" , geom_geometry_n},
313+ {" geometry_type" , geom_geometry_type},
314+ {" is_null" , geom_is_null},
315+ {" line_merge" , geom_line_merge},
316+ {" reverse" , geom_reverse},
317+ {" num_geometries" , geom_num_geometries},
318+ {" pole_of_inaccessibility" , geom_pole_of_inaccessibility},
319+ {" segmentize" , geom_segmentize},
320+ {" simplify" , geom_simplify},
321+ {" spherical_area" , geom_spherical_area},
322+ {" srid" , geom_srid},
323+ {" transform" , geom_transform}});
336324}
0 commit comments