/*****************************************************************************
* XML Reader
*****************************************************************************/
-static int vlclua_xml_reader_read( lua_State * );
-static int vlclua_xml_reader_node_type( lua_State * );
-static int vlclua_xml_reader_name( lua_State * );
-static int vlclua_xml_reader_value( lua_State * );
+static int vlclua_xml_reader_next_node( lua_State * );
static int vlclua_xml_reader_next_attr( lua_State * );
static const luaL_Reg vlclua_xml_reader_reg[] = {
- { "read", vlclua_xml_reader_read },
- { "node_type", vlclua_xml_reader_node_type },
- { "name", vlclua_xml_reader_name },
- { "value", vlclua_xml_reader_value },
+ { "next_node", vlclua_xml_reader_next_node },
{ "next_attr", vlclua_xml_reader_next_attr },
{ NULL, NULL }
};
return 1;
}
-static int vlclua_xml_reader_read( lua_State *L )
+static int vlclua_xml_reader_next_node( lua_State *L )
{
xml_reader_t *p_reader = *(xml_reader_t**)luaL_checkudata( L, 1, "xml_reader" );
- lua_pushinteger( L, xml_ReaderRead( p_reader ) );
- return 1;
-}
-
-static int vlclua_xml_reader_node_type( lua_State *L )
-{
- xml_reader_t *p_reader = *(xml_reader_t**)luaL_checkudata( L, 1, "xml_reader" );
- static const char *ppsz_type[] = { "none", "startelem", "endelem", "text" };
- lua_pushstring( L, ppsz_type[xml_ReaderNodeType( p_reader )] );
- return 1;
-}
-
-static int vlclua_xml_reader_name( lua_State *L )
-{
- xml_reader_t *p_reader = *(xml_reader_t**)luaL_checkudata( L, 1, "xml_reader" );
- lua_pushstring( L, xml_ReaderName( p_reader ) );
- return 1;
-}
-
-static int vlclua_xml_reader_value( lua_State *L )
-{
- xml_reader_t *p_reader = *(xml_reader_t**)luaL_checkudata( L, 1, "xml_reader" );
- lua_pushstring( L, xml_ReaderValue( p_reader ) );
- return 1;
+ const char *psz_name;
+ lua_pushinteger( L, xml_ReaderNextNode( p_reader, &psz_name ) );
+ lua_pushstring( L, psz_name );
+ return 2;
}
static int vlclua_xml_reader_next_attr( lua_State *L )
{
xml_reader_t *p_reader = *(xml_reader_t**)luaL_checkudata( L, 1, "xml_reader" );
- lua_pushinteger( L, xml_ReaderNextAttr( p_reader ) );
+ const char *psz_value;
+
+ lua_pushstring( L, xml_ReaderNextAttr( p_reader, &psz_value ) );
+ lua_pushstring( L, psz_value );
return 1;
}