]> git.sesse.net Git - vlc/blobdiff - modules/misc/lua/libs/xml.c
XML: return attribute value as const
[vlc] / modules / misc / lua / libs / xml.c
index 4abc099713a304904ef2c35595e3caafcabc29a3..ace308a2135784458387ba9369ab6c83acdfee15 100644 (file)
@@ -83,17 +83,11 @@ static int vlclua_xml_create( lua_State *L )
 /*****************************************************************************
  * 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 }
 };
@@ -130,39 +124,22 @@ static int vlclua_xml_create_reader( lua_State *L )
     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;
 }