ParseDefConsume.h

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------\
00002 |                          ____ _   __ __ ___                          |
00003 |                         |__  / \ / / . \ . \                         |
00004 |                           / / \ V /|  _/  _/                         |
00005 |                          / /__ | | | | | |                           |
00006 |                         /_____||_| |_| |_|                           |
00007 |                                                                      |
00008 \---------------------------------------------------------------------*/
00012 #ifndef ZYPP_PARSER_XML_PARSEDEFCONSUME_H
00013 #define ZYPP_PARSER_XML_PARSEDEFCONSUME_H
00014 
00015 #include <zypp/base/PtrTypes.h>
00016 #include <zypp/base/Function.h>
00017 
00019 namespace zypp
00020 { 
00021 
00022   namespace xml
00023   { 
00024 
00025     class Node;
00026 
00028     //
00029     //  CLASS NAME : ParseDefConsume
00030     //
00032     struct ParseDefConsume
00033     {
00034       virtual ~ParseDefConsume();
00035 
00036       virtual void start( const Node & _node );
00037       virtual void text ( const Node & _node );
00038       virtual void cdata( const Node & _node );
00039       virtual void done ( const Node & _node );
00040 
00041       virtual void startSubnode( const Node & _node );
00042       virtual void doneSubnode ( const Node & _node );
00043     };
00045 
00047     //
00048     //  CLASS NAME : ParseDefConsumeRedirect
00049     //
00054     class ParseDefConsumeRedirect : public ParseDefConsume
00055     {
00056     public:
00057       ParseDefConsumeRedirect();
00058       ParseDefConsumeRedirect( const shared_ptr<ParseDefConsume> & target_r );
00059       ParseDefConsumeRedirect( ParseDefConsume * allocatedTarget_r );
00060       ParseDefConsumeRedirect( ParseDefConsume & target_r );
00061 
00062       virtual ~ParseDefConsumeRedirect();
00063 
00064     public:
00065       void setRedirect( const shared_ptr<ParseDefConsume> & target_r );
00066       void setRedirect( ParseDefConsume * allocatedTarget_r );
00067       void setRedirect( ParseDefConsume & target_r );
00068       void cancelRedirect();
00069 
00070       shared_ptr<ParseDefConsume> getRedirect() const;
00071 
00072     public:
00073       virtual void start( const Node & _node );
00074       virtual void text ( const Node & _node );
00075       virtual void cdata( const Node & _node );
00076       virtual void done ( const Node & _node );
00077       virtual void startSubnode( const Node & _node );
00078       virtual void doneSubnode ( const Node & _node );
00079 
00080     private:
00081       shared_ptr<ParseDefConsume> _target;
00082     };
00084 
00086     //
00087     //  CLASS NAME : ParseDefConsumeCallback
00088     //
00090     class ParseDefConsumeCallback : public ParseDefConsume
00091     {
00092     public:
00093       typedef function<void(const Node &)> Callback;
00094 
00095       ParseDefConsumeCallback();
00096 
00097       virtual ~ParseDefConsumeCallback();
00098 
00099     public:
00100       virtual void start( const Node & node_r );
00101       virtual void text( const Node & node_r );
00102       virtual void cdata( const Node & node_r );
00103       virtual void done( const Node & node_r );
00104       virtual void startSubnode( const Node & node_r );
00105       virtual void doneSubnode( const Node & node_r );
00106 
00107     public:
00108       Callback _start;
00109       Callback _text;
00110       Callback _cdata;
00111       Callback _done;
00112       Callback _startSubnode;
00113       Callback _doneSubnode;
00114     };
00116 
00118   } // namespace xml
00121 } // namespace zypp
00123 #endif // ZYPP_PARSER_XML_PARSEDEFCONSUME_H

Generated on Tue Sep 25 19:23:03 2007 for libzypp by  doxygen 1.5.3