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
1.5.3