Author: mlandres Date: Wed May 2 19:20:04 2007 New Revision: 5468 URL: http://svn.opensuse.org/viewcvs/zypp?rev=5468&view=rev Log: susetags parser skeleton Added: trunk/libzypp/zypp/parser/susetags/PackagesFileReader.cc trunk/libzypp/zypp/parser/susetags/PackagesFileReader.h Modified: trunk/libzypp/devel/devel.ma/Parse.cc trunk/libzypp/zypp/CMakeLists.txt trunk/libzypp/zypp/parser/TagParser.h Modified: trunk/libzypp/devel/devel.ma/Parse.cc URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/devel/devel.ma/Parse.cc?rev=5468&r1=5467&r2=5468&view=diff ============================================================================== --- trunk/libzypp/devel/devel.ma/Parse.cc (original) +++ trunk/libzypp/devel/devel.ma/Parse.cc Wed May 2 19:20:04 2007 @@ -23,10 +23,10 @@ #include "zypp/parser/tagfile/TagFileParser.h" #include "zypp/parser/TagParser.h" +#include "zypp/parser/susetags/PackagesFileReader.h" using namespace std; using namespace zypp; -using namespace zypp::ui; using namespace zypp::functor; using zypp::parser::tagfile::TagFileParser; @@ -119,6 +119,58 @@ } +#include "zypp/ProgressData.h" + +/////////////////////////////////////////////////////////////////// +namespace zypp +{ ///////////////////////////////////////////////////////////////// + + + /////////////////////////////////////////////////////////////////// + namespace parser + { ///////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////// + namespace susetags + { ///////////////////////////////////////////////////////////////// + + bool testRec( ProgressData::value_type v ) + { + WAR << "->" << v << endl; + return( v <= 100 ); + } + + struct Test + { + void action( int l = 10 ) + { + ProgressData tics( 10 ); + tics.name( "test ticks" ); + //tics.sendTo( testRec ); + tics.toMin(); // start send + + for ( int i = 0; i < l; ++i ) + { + if ( ! tics.set( i ) ) + return; // user requested abort + } + + tics.toMax(); // take care 100% are reported on success + } + }; + + + ///////////////////////////////////////////////////////////////// + } // namespace susetags + /////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////// + } // namespace parser + /////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////// +} // namespace zypp +/////////////////////////////////////////////////////////////////// + +using namespace zypp::parser::susetags; + /****************************************************************** ** ** FUNCTION NAME : main @@ -129,6 +181,11 @@ //zypp::base::LogControl::instance().logfile( "log.restrict" ); INT << "===[START]==========================================" << endl; + Test t; + t.action(); + t.action( 20 ); + return ( 0 ); + //Pathname p( "lmd/suse/setup/descr/packages" ); Pathname p( "packages" ); @@ -140,28 +197,28 @@ tp.parse( p ); } - if ( 1 ) { + if ( 0 ) { Pathname p( "p" ); Measure x( p.basename() ); - TagParser tp; + PackagesFileReader tp; tp.parse( p ); } if ( 1 ) { Pathname p( "p.gz" ); Measure x( p.basename() ); - TagParser tp; + PackagesFileReader tp; tp.parse( p ); } if ( 1 ) { Pathname p( "packages" ); Measure x( p.basename() ); - TagParser tp; + PackagesFileReader tp; tp.parse( p ); } if ( 1 ) { Pathname p( "packages.gz" ); Measure x( p.basename() ); - TagParser tp; + PackagesFileReader tp; tp.parse( p ); } Modified: trunk/libzypp/zypp/CMakeLists.txt URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/CMakeLists.txt?rev=5468&r1=5467&r2=5468&view=diff ============================================================================== --- trunk/libzypp/zypp/CMakeLists.txt (original) +++ trunk/libzypp/zypp/CMakeLists.txt Wed May 2 19:20:04 2007 @@ -441,6 +441,19 @@ DESTINATION ${CMAKE_INSTALL_PREFIX}/include/zypp/parser/inifile ) +SET( zypp_parser_susetags_SRCS + parser/susetags/PackagesFileReader.cc +) + +SET( zypp_parser_susetags_HEADERS + parser/susetags/PackagesFileReader.h +) + +INSTALL( FILES + ${zypp_parser_susetags_HEADERS} + DESTINATION ${CMAKE_INSTALL_PREFIX}/include/zypp/parser/susetags +) + SET( zypp_parser_tagfile_SRCS parser/tagfile/ParseException.cc parser/tagfile/TagFileParser.cc @@ -999,6 +1012,7 @@ ${zypp_pool_SRCS} ${zypp_parser_tagfile_SRCS} ${zypp_parser_taggedfile_SRCS} +${zypp_parser_susetags_SRCS} ${zypp_parser_yum2_SRCS} ${zypp_parser_xmlstore_SRCS} ${zypp_parser_xml_SRCS} @@ -1032,6 +1046,7 @@ ${zypp_target_store_xml_HEADERS} ${zypp_parser_tagfile_HEADERS} ${zypp_parser_taggedfile_HEADERS} +${zypp_parser_susetags_HEADERS} ${zypp_target_rpm_HEADERS} ${zypp_parser_yum2_HEADERS} ${zypp_capability_HEADERS} Modified: trunk/libzypp/zypp/parser/TagParser.h URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/parser/TagParser.h?rev=5468&r1=5467&r2=5468&view=diff ============================================================================== --- trunk/libzypp/zypp/parser/TagParser.h (original) +++ trunk/libzypp/zypp/parser/TagParser.h Wed May 2 19:20:04 2007 @@ -88,9 +88,9 @@ * for each tag. \ref consume might throw other exceptions * as well. */ - void parse( const InputStream & imput_r ); + virtual void parse( const InputStream & imput_r ); - public: + protected: /** Called when start parsing. */ virtual void beginParse(); /** Called when a single-tag is found. */ @@ -100,7 +100,7 @@ /** Called when the parse is done. */ virtual void endParse(); - public: + protected: /** Prefix exception message with line and tag information. */ std::string errPrefix( unsigned lineNo_r, const std::string & msg_r = std::string() ) const; @@ -116,7 +116,6 @@ private: std::string _inputname; - //ProgressData _ticks; }; /////////////////////////////////////////////////////////////////// @@ -129,6 +128,14 @@ /** \relates TagParser::MultiTag Stream output. */ std::ostream & operator<<( std::ostream & str, const TagParser::MultiTag & obj ); + template<class _D> + inline std::ostream & operator<<( std::ostream & str, const shared_ptr<_D> & obj ) + { + if ( obj ) + return str << *obj; + return str << std::string("NULL"); + } + ///////////////////////////////////////////////////////////////// } // namespace parser /////////////////////////////////////////////////////////////////// Added: trunk/libzypp/zypp/parser/susetags/PackagesFileReader.cc URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/parser/susetags/PackagesFileReader.cc?rev=5468&view=auto ============================================================================== --- trunk/libzypp/zypp/parser/susetags/PackagesFileReader.cc (added) +++ trunk/libzypp/zypp/parser/susetags/PackagesFileReader.cc Wed May 2 19:20:04 2007 @@ -0,0 +1,171 @@ +/*---------------------------------------------------------------------\ +| ____ _ __ __ ___ | +| |__ / \ / / . \ . \ | +| / / \ V /| _/ _/ | +| / /__ | | | | | | | +| /_____||_| |_| |_| | +| | +\---------------------------------------------------------------------*/ +/** \file zypp/parser/susetags/PackagesFileReader.cc + * +*/ +#include <iostream> +#include "zypp/base/Logger.h" + +#include "zypp/parser/susetags/PackagesFileReader.h" +#include "zypp/data/ResolvableData.h" + +using std::endl; + +/////////////////////////////////////////////////////////////////// +namespace zypp +{ ///////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////// + namespace parser + { ///////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////// + namespace susetags + { ///////////////////////////////////////////////////////////////// + + /////////////////////////////////////////////////////////////////// + // + // CLASS NAME : PackagesFileReader::Impl + // + /** PackagesFileReader implementation. */ + struct PackagesFileReader::Impl + { + ///data::Package + }; + /////////////////////////////////////////////////////////////////// + + /////////////////////////////////////////////////////////////////// + // + // CLASS NAME : PackagesFileReader + // + /////////////////////////////////////////////////////////////////// + + /////////////////////////////////////////////////////////////////// + // + // METHOD NAME : PackagesFileReader::PackagesFileReader + // METHOD TYPE : Ctor + // + PackagesFileReader::PackagesFileReader() + {} + + /////////////////////////////////////////////////////////////////// + // + // METHOD NAME : PackagesFileReader::~PackagesFileReader + // METHOD TYPE : Dtor + // + PackagesFileReader::~PackagesFileReader() + {} + + /////////////////////////////////////////////////////////////////// + // + // METHOD NAME : PackagesFileReader:: + // METHOD TYPE : void + // + void PackagesFileReader::parse( const InputStream & imput_r ) + { + TagParser::parse( imput_r ); + } + + /////////////////////////////////////////////////////////////////// + // + // METHOD NAME : PackagesFileReader:: + // METHOD TYPE : void + // + void PackagesFileReader::beginParse() + { + _pimpl.reset( new Impl ); + } + + /////////////////////////////////////////////////////////////////// + // + // METHOD NAME : PackagesFileReader:: + // METHOD TYPE : void + // + void PackagesFileReader::consume( const SingleTagPtr & tag_r ) + { +#define TAGN(V) tag_r->name == #V + + if ( TAGN( Pkg ) ) + {} + else if ( TAGN( Cks ) ) + {} + else if ( TAGN( Grp ) ) + {} + else if ( TAGN( Vnd ) ) + {} + else if ( TAGN( Lic ) ) + {} + else if ( TAGN( Src ) ) + {} + else if ( TAGN( Tim ) ) + {} + else if ( TAGN( Loc ) ) + {} + else if ( TAGN( Siz ) ) + {} + else if ( TAGN( Shr ) ) + {} + else if ( TAGN( Ver ) ) + {} + else + { ERR << tag_r << endl; } + } + + /////////////////////////////////////////////////////////////////// + // + // METHOD NAME : PackagesFileReader:: + // METHOD TYPE : void + // + void PackagesFileReader::consume( const MultiTagPtr & tag_r ) + { + if ( TAGN( Req ) ) + {} + else if ( TAGN( Prq ) ) + {} + else if ( TAGN( Prv ) ) + {} + else if ( TAGN( Con ) ) + {} + else if ( TAGN( Obs ) ) + {} + else if ( TAGN( Rec ) ) + {} + else if ( TAGN( Fre ) ) + {} + else if ( TAGN( Enh ) ) + {} + else if ( TAGN( Sug ) ) + {} + else if ( TAGN( Sup ) ) + {} + else if ( TAGN( Kwd ) ) + {} + else if ( TAGN( Aut ) ) + {} + else + { ERR << tag_r << endl; } + } + + /////////////////////////////////////////////////////////////////// + // + // METHOD NAME : PackagesFileReader:: + // METHOD TYPE : void + // + void PackagesFileReader::endParse() + { + _pimpl.reset(); + } + + ///////////////////////////////////////////////////////////////// + } // namespace susetags + /////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////// + } // namespace parser + /////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////// +} // namespace zypp +/////////////////////////////////////////////////////////////////// Added: trunk/libzypp/zypp/parser/susetags/PackagesFileReader.h URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/parser/susetags/PackagesFileReader.h?rev=5468&view=auto ============================================================================== --- trunk/libzypp/zypp/parser/susetags/PackagesFileReader.h (added) +++ trunk/libzypp/zypp/parser/susetags/PackagesFileReader.h Wed May 2 19:20:04 2007 @@ -0,0 +1,70 @@ +/*---------------------------------------------------------------------\ +| ____ _ __ __ ___ | +| |__ / \ / / . \ . \ | +| / / \ V /| _/ _/ | +| / /__ | | | | | | | +| /_____||_| |_| |_| | +| | +\---------------------------------------------------------------------*/ +/** \file zypp/parser/susetags/PackagesFileReader.h + * +*/ +#ifndef ZYPP_PARSER_SUSETAGS_PACKAGESFILEREADER_H +#define ZYPP_PARSER_SUSETAGS_PACKAGESFILEREADER_H + +#include <iosfwd> + +#include "zypp/base/PtrTypes.h" +#include "zypp/parser/TagParser.h" + +/////////////////////////////////////////////////////////////////// +namespace zypp +{ ///////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////// + namespace parser + { ///////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////// + namespace susetags + { ///////////////////////////////////////////////////////////////// + + /////////////////////////////////////////////////////////////////// + // + // CLASS NAME : PackagesFileReader + // + /** */ + class PackagesFileReader : private TagParser + { + public: + /** Default ctor */ + PackagesFileReader(); + /** Dtor */ + virtual ~PackagesFileReader(); + + virtual void parse( const InputStream & imput_r ); + + private: + /** Called when start parsing. */ + virtual void beginParse(); + /** Called when a single-tag is found. */ + virtual void consume( const SingleTagPtr & tag_r ); + /** Called when a multi-tag is found. */ + virtual void consume( const MultiTagPtr & tag_r ); + /** Called when the parse is done. */ + virtual void endParse(); + + private: + class Impl; + scoped_ptr<Impl> _pimpl; + }; + /////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////// + } // namespace susetags + /////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////// + } // namespace parser + /////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////// +} // namespace zypp +/////////////////////////////////////////////////////////////////// +#endif // ZYPP_PARSER_SUSETAGS_PACKAGESFILEREADER_H -- To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org For additional commands, e-mail: zypp-commit+help@opensuse.org