OW_XMLPullParser.hpp

Go to the documentation of this file.
00001 /*******************************************************************************
00002 * Copyright (C) 2001-2004 Vintela, Inc. All rights reserved.
00003 *
00004 * Redistribution and use in source and binary forms, with or without
00005 * modification, are permitted provided that the following conditions are met:
00006 *
00007 *  - Redistributions of source code must retain the above copyright notice,
00008 *    this list of conditions and the following disclaimer.
00009 *
00010 *  - Redistributions in binary form must reproduce the above copyright notice,
00011 *    this list of conditions and the following disclaimer in the documentation
00012 *    and/or other materials provided with the distribution.
00013 *
00014 *  - Neither the name of Vintela, Inc. nor the names of its
00015 *    contributors may be used to endorse or promote products derived from this
00016 *    software without specific prior written permission.
00017 *
00018 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
00019 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00020 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00021 * ARE DISCLAIMED. IN NO EVENT SHALL Vintela, Inc. OR THE CONTRIBUTORS
00022 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00023 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00024 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00025 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00026 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00027 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00028 * POSSIBILITY OF SUCH DAMAGE.
00029 *******************************************************************************/
00030 
00035 #ifndef OW_XMLPULLPARSER_HPP_INCLUDE_GUARD_
00036 #define OW_XMLPULLPARSER_HPP_INCLUDE_GUARD_
00037 #include "OW_config.h"
00038 #include "OW_AutoPtr.hpp"
00039 #include "OW_TempFileStream.hpp"
00040 #include "OW_String.hpp"
00041 #include "OW_XMLParserCore.hpp"
00042 
00043 #ifdef OW_HAVE_ISTREAM
00044 #include <istream>
00045 #else
00046 #include <iostream>
00047 #endif
00048 
00049 namespace OW_NAMESPACE
00050 {
00051 
00052 class OW_XML_API XMLPullParser
00053 {
00054 public:
00055    XMLPullParser(const String& str);
00056    XMLPullParser(std::istream& sb);
00057    XMLPullParser();
00058    virtual ~XMLPullParser();
00059 
00060    String mustGetAttribute(const char* const attrName) const
00061    {
00062       return getAttribute(attrName, true);
00063    }
00064    // TODO: Get rid of all these bool parameters!
00065    String getAttribute(const char* const attrName, bool throwIfError = false) const;
00066    void getChild();
00067    void mustGetChild();
00068    void getNextTag(bool throwIfError = false);
00069    void getNext(bool throwIfError = false);
00070    void mustGetNext()
00071    {
00072       getNext(true);
00073    }
00074    void mustGetNextTag()
00075    {
00076       getNextTag(true);
00077    }
00078    void mustGetEndTag();
00079    bool tokenIs(const char* const arg) const
00080    {
00081       return m_curTok.text.equals(arg);
00082    }
00083    String getName() const;
00084    String getData() const;
00085    bool isData() const;
00086 protected:
00087 
00088 #ifdef OW_WIN32
00089 #pragma warning (push)
00090 #pragma warning (disable: 4251)
00091 #endif
00092 
00093    AutoPtr<TempFileStream> m_ptfs;
00094 
00095 #ifdef OW_WIN32
00096 #pragma warning (pop)
00097 #endif
00098 
00099    XMLParserCore m_parser;
00100    XMLToken m_curTok;
00101    bool m_good;
00102 
00103    void prime();
00104    void nextToken();
00105    void skipData();
00106    
00107 private:
00108    // unimplemented
00109    XMLPullParser(const XMLPullParser& x);
00110    XMLPullParser& operator=(const XMLPullParser& x);
00111 
00112    friend OW_XML_API std::ostream& operator<<(std::ostream& ostr, const XMLPullParser& p);
00113 };
00114 
00115 } // end namespace OW_NAMESPACE
00116 
00117 #endif

Generated on Thu Feb 9 08:48:20 2006 for openwbem by  doxygen 1.4.6