]> git.sesse.net Git - vlc/blobdiff - modules/gui/skins2/parser/xmlparser.hpp
Win32: correctly bump resource version
[vlc] / modules / gui / skins2 / parser / xmlparser.hpp
index d79958a2f3c2e023401675c1bb28af54839c1cd4..aa5f9e22ad17dcafa84e732a5f98221759636e66 100644 (file)
@@ -1,11 +1,10 @@
 /*****************************************************************************
  * xmlparser.hpp
  *****************************************************************************
- * Copyright (C) 2004 VideoLAN
- * $Id: xmlparser.hpp,v 1.2 2004/01/24 14:25:16 asmax Exp $
+ * Copyright (C) 2004 the VideoLAN team
+ * $Id$
  *
  * Authors: Cyril Deguet     <asmax@via.ecp.fr>
- *          Olivier Teulière <ipkiss@via.ecp.fr>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
 #ifndef XMLPARSER_HPP
 #define XMLPARSER_HPP
 
 #include "../src/skin_common.hpp"
-#include <libxml/xmlreader.h>
+#include <vlc_block.h>
+#include <vlc_stream.h>
+#include <vlc_xml.h>
 #include <map>
-#include <string>
 
+// Current DTD version
+#define SKINS_DTD_VERSION "2.0"
 
 /// XML parser using libxml2 text reader API
 class XMLParser: public SkinObject
 {
-    public:
-        XMLParser( intf_thread_t *pIntf, const string &rFileName );
-        virtual ~XMLParser();
+public:
+    XMLParser( intf_thread_t *pIntf, const string &rFileName,
+               bool useDTD = true );
+    virtual ~XMLParser();
 
-        int parse();
+    /// Parse the file. Returns true on success
+    bool parse();
 
-    private:
-        // Key comparison function for type "const char*"
-        struct ltstr
+protected:
+    // Key comparison function for type "const char*"
+    struct ltstr
+    {
+        bool operator()(const char* s1, const char* s2) const
         {
-            bool operator()(const char* s1, const char* s2) const
-            {
-                return strcmp(s1, s2) < 0;
-            }
-        };
-        /// Type for attribute lists
-        typedef map<const char*, const char*, ltstr> AttrList_t;
-
-        /// Reader context
-        xmlTextReaderPtr m_pReader;
-
-        void handleBeginElement( const string &rName, AttrList_t &attributes );
-        void handleEndElement( const string &rName );
+            return strcmp(s1, s2) < 0;
+        }
+    };
+    /// Type for attribute lists
+    typedef map<const char*, const char*, ltstr> AttrList_t;
+
+    /// Flag for validation errors
+    bool m_errors;
+
+    /// Callbacks
+    virtual void handleBeginElement( const string &rName,
+                                     AttrList_t &attr ) { }
+    virtual void handleEndElement( const string &rName ) { }
+
+private:
+    void LoadCatalog();
+
+    /// Reader context
+    xml_t *m_pXML;
+    xml_reader_t *m_pReader;
+    stream_t *m_pStream;
 };
 
 #endif