00001 /*MT* 00002 00003 MediaTomb - http://www.mediatomb.cc/ 00004 00005 parser.h - this file is part of MediaTomb. 00006 00007 Copyright (C) 2005 Gena Batyan <bgeradz@mediatomb.cc>, 00008 Sergey 'Jin' Bostandzhyan <jin@mediatomb.cc> 00009 00010 Copyright (C) 2006-2010 Gena Batyan <bgeradz@mediatomb.cc>, 00011 Sergey 'Jin' Bostandzhyan <jin@mediatomb.cc>, 00012 Leonhard Wimmer <leo@mediatomb.cc> 00013 00014 MediaTomb is free software; you can redistribute it and/or modify 00015 it under the terms of the GNU General Public License version 2 00016 as published by the Free Software Foundation. 00017 00018 MediaTomb is distributed in the hope that it will be useful, 00019 but WITHOUT ANY WARRANTY; without even the implied warranty of 00020 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00021 GNU General Public License for more details. 00022 00023 You should have received a copy of the GNU General Public License 00024 version 2 along with MediaTomb; if not, write to the Free Software 00025 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 00026 00027 $Id: parser.h 2081 2010-03-23 20:18:00Z lww $ 00028 */ 00029 00031 00032 #ifndef __MXML_PARSER_H__ 00033 #define __MXML_PARSER_H__ 00034 00035 #include "zmmf/zmmf.h" 00036 00037 #ifndef HAVE_EXPAT 00038 #error Expat is needed to compile MediaTomb! 00039 #endif 00040 00041 #include <expat.h> 00042 #include "zmmf/object_stack.h" 00043 00044 namespace mxml 00045 { 00046 00047 class Element; 00048 00049 class Context; 00050 00051 class Document; 00052 00053 class Parser : public zmm::Object 00054 { 00055 public: 00056 Parser(); 00057 zmm::Ref<Document> parseFile(zmm::String); 00058 zmm::Ref<Document> parseString(zmm::String); 00059 00060 protected: 00061 00062 zmm::Ref<Document> parse(zmm::Ref<Context> ctx, zmm::String input); 00063 00064 zmm::Ref<zmm::ObjectStack<Element> > elements; 00065 zmm::Ref<Document> document; 00066 zmm::Ref<Element> curEl; 00067 bool ignoreNextDefaultNewline; 00068 00069 static void XMLCALL element_start(void *userdata, const char *name, const char **attrs); 00070 static void XMLCALL element_end(void *userdata, const char *name); 00071 static void XMLCALL character_data(void *userdata, const XML_Char *s, int len); 00072 static void XMLCALL comment_callback(void *userdata, const XML_Char *s); 00073 static void XMLCALL default_callback(void *userdata, const XML_Char *s, int len); 00074 00075 }; 00076 00077 } 00078 00079 #endif // __MXML_PARSER_H__
1.6.1