00001 /*---------------------------------------------------------------------\ 00002 | ____ _ __ __ ___ | 00003 | |__ / \ / / . \ . \ | 00004 | / / \ V /| _/ _/ | 00005 | / /__ | | | | | | | 00006 | /_____||_| |_| |_| | 00007 | | 00008 \---------------------------------------------------------------------*/ 00012 #ifndef ZYPP_PARSER_TAGFILE_PATTERNTAGFILEPARSER_H 00013 #define ZYPP_PARSER_TAGFILE_PATTERNTAGFILEPARSER_H 00014 00015 #include <iosfwd> 00016 #include <set> 00017 #include <map> 00018 #include <list> 00019 00020 00021 #include "zypp/parser/tagfile/TagFileParser.h" 00022 #include "zypp/parser/tagfile/ParseException.h" 00023 #include "zypp/Pattern.h" 00024 #include "zypp/source/susetags/SuseTagsPatternImpl.h" 00025 #include "zypp/Pathname.h" 00026 00028 namespace zypp 00029 { 00030 00031 namespace source 00032 { 00033 00034 namespace susetags 00035 { 00036 00038 // 00039 // CLASS NAME : PatternTagFileParser 00040 // 00042 struct PatternTagFileParser : public zypp::parser::tagfile::TagFileParser 00043 { 00044 Pattern::Ptr result; 00045 detail::ResImplTraits<SuseTagsPatternImpl>::Ptr patImpl; 00046 00047 PatternTagFileParser( parser::ParserProgress::Ptr progress ); 00048 virtual ~PatternTagFileParser() 00049 {} 00050 00051 void parseDeps( const std::list<std::string> & strdeps, CapSet & capset, const Resolvable::Kind & kind = ResTraits<Pattern>::kind ); 00052 00053 void consume( const SingleTag &tag ); 00054 void consume( const MultiTag &tag ); 00055 void endParse(); 00056 00057 private: 00058 struct Scrap; 00059 shared_ptr<Scrap> _scrap; 00060 }; 00062 00065 Pattern::Ptr parsePattern( parser::ParserProgress::Ptr progress, Source_Ref source_r, const Pathname & file_r ); 00067 } // namespace source 00070 } // namespace susetags 00073 } // namespace zypp 00075 // 00076 #endif // ZYPP_PARSER_TAGFILE_PATTERNTAGFILEPPARSER_H
1.5.0