• Skip to content
  • Skip to link menu
KDE 4.2 API Reference
  • KDE API Reference
  • KDE-PIM Libraries
  • Sitemap
  • Contact Us
 

Syndication Library

Syndication::ParserCollection

Syndication::ParserCollection< T > Class Template Reference

#include <parsercollection.h>

List of all members.


Detailed Description

template<class T>
class Syndication::ParserCollection< T >

A collection of format-specific parser implementations.

To parse a feed source, pass it to the parse() method of this class. In most cases, you should use the global singleton instance Syndication::parserCollection(). When loading the source from the web, use Loader instead of using this class directly.

Example code:

 ...
 QFile someFile(somePath);
 ...
 DocumentSource src(someFile.readAll());
 someFile.close();

 FeedPtr feed = parserCollection()->parse(src);

 if (feed)
 {
     QString title = feed->title();
     QList<ItemPtr> items = feed->items();
     ...
 }

The template parameter T is the abstraction class parsed documents should be mapped to. If you want to use your own abstraction MyFeed, implement ParserCollection<MyFeed> (Note that you have to provide mapper implementations for every feed format then).

Author:
Frank Osterfeld

Definition at line 73 of file parsercollection.h.


Public Member Functions

virtual void changeMapper (const QString &format, Mapper< T > *mapper)=0
virtual ErrorCode lastError () const =0
virtual boost::shared_ptr< T > parse (const DocumentSource &source, const QString &formatHint=QString())=0
virtual bool registerParser (AbstractParser *parser, Mapper< T > *mapper)=0
virtual ~ParserCollection ()

Constructor & Destructor Documentation

template<class T>
virtual Syndication::ParserCollection< T >::~ParserCollection (  )  [inline, virtual]

destructor

Definition at line 78 of file parsercollection.h.


Member Function Documentation

template<class T>
virtual void Syndication::ParserCollection< T >::changeMapper ( const QString &  format,
Mapper< T > *  mapper 
) [pure virtual]

Changes the specific format to abstraction mapping for a parser.

Parameters:
format the format string of the parser whose mapping should be changed. See AbstractParser::format.
mapper Mapper implementation doing the mapping from the format specific representation to abstraction of type T.

template<class T>
virtual ErrorCode Syndication::ParserCollection< T >::lastError (  )  const [pure virtual]

returns the error code of the last parse() call.

Returns:
the last error, or Success if parse() was successful or not yet called at all.

template<class T>
virtual boost::shared_ptr<T> Syndication::ParserCollection< T >::parse ( const DocumentSource &  source,
const QString &  formatHint = QString() 
) [pure virtual]

tries to parse a given source with the parsers registered.

The source is passed to the first parser that accepts it.

Parameters:
source The source to be parsed
formatHint An optional hint which parser to test first. If there is a parser with the given hint as format string (e.g., "rss2", "atom", "rdf"...), it is asked first to accept the source. This can avoid unnecessary AbstractParser::accept() checks and speed up parsing. See also AbstractParser::format().
Returns:
The feed document parsed from the source, or NULL if no parser accepted the source.

template<class T>
virtual bool Syndication::ParserCollection< T >::registerParser ( AbstractParser *  parser,
Mapper< T > *  mapper 
) [pure virtual]

Adds a parser and corresponding mapper to the collection.

AbstractParser::format() must be unique in the collection. If there is already a parser with the same format string, the parser isn't added.

Note:
ownership for both parser and mapper is taken by the implementation, so don't delete them in your code!
Parameters:
parser The parser to be registered
mapper the mapper that should be used for building the abstraction
Returns:
whether the parser was successfully registered or not.


The documentation for this class was generated from the following file:
  • parsercollection.h

Syndication Library

Skip menu "Syndication Library"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

KDE-PIM Libraries

Skip menu "KDE-PIM Libraries"
  • akonadi
  • kabc
  • kblog
  • kcal
  • kimap
  • kioslave
  •   imap4
  •   mbox
  • kldap
  • kmime
  • kpimidentities
  •   richtextbuilders
  • kpimutils
  • kresources
  • ktnef
  • kxmlrpcclient
  • mailtransport
  • qgpgme
  • syndication
  •   atom
  •   rdf
  •   rss2
Generated for KDE-PIM Libraries by doxygen 1.5.6
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal