parser.h

00001 /*
00002   Copyright (c) 2004-2006 by Jakob Schroeter <js@camaya.net>
00003   This file is part of the gloox library. http://camaya.net/gloox
00004 
00005   This software is distributed under a license. The full license
00006   agreement can be found in the file LICENSE in this distribution.
00007   This software may not be copied, modified, sold or distributed
00008   other than expressed in the named license agreement.
00009 
00010   This software is distributed without any warranty.
00011 */
00012 
00013 
00014 
00015 #ifndef PARSER_H__
00016 #define PARSER_H__
00017 
00018 #include "gloox.h"
00019 
00020 #include <iksemel.h>
00021 
00022 #include <string>
00023 
00024 namespace gloox
00025 {
00026 
00027   class ClientBase;
00028   class Stanza;
00029 
00036   class GLOOX_API Parser
00037   {
00038     public:
00042       enum ParserState
00043       {
00044         PARSER_OK,                     
00045         PARSER_NOMEM,                  
00046         PARSER_BADXML                  
00047       };
00048 
00053       Parser( ClientBase *parent );
00054 
00058       virtual ~Parser();
00059 
00065       ParserState feed( const std::string& data );
00066 
00067     private:
00068       void streamEvent( Stanza *stanza );
00069 
00070       iksparser *m_parser;
00071       ClientBase *m_parent;
00072       Stanza *m_current;
00073       Stanza *m_root;
00074 
00081       friend int cdataHook( Parser *parser, char *data, size_t len );
00082 
00090       friend int tagHook( Parser *parser, char *name, char **atts, int type );
00091   };
00092 
00093   int cdataHook( Parser *parser, char *data, size_t len );
00094 
00095   int tagHook( Parser *parser, char *name, char **atts, int type );
00096 
00097 }
00098 
00099 #endif // PARSER_H__

Generated on Tue May 1 14:20:20 2007 for gloox by  doxygen 1.5.1