Sophie

Sophie

distrib > Fedora > 18 > x86_64 > by-pkgid > 110492f5122731329f0db69a1df590c3 > files > 5755

kdepimlibs-apidocs-4.10.5-1.fc18.noarch.rpm

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
  <title>Syndication::Mapper&lt; T &gt; Class Template Reference</title>
<style type="text/css">
  .cp-doNotDisplay { display: none; }
  @media aural, braille, handheld, tty { .cp-doNotDisplay { display: inline; speak: normal; }}
  .cp-edit { text-align: right; }
  @media print, embossed { .cp-edit { display: none; }}
</style>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta http-equiv="Content-Style-Type" content="text/css" />
  <link rel="meta" href="http://www.kde.org/labels.rdf" type="application/rdf+xml" title="ICRA labels" />
  <meta name="trademark" content="KDE e.V." />
  <meta name="description" content="K Desktop Environment Homepage, KDE.org" />
  <meta name="MSSmartTagsPreventParsing" content="true" />
  <meta name="robots" content="all" />
  <meta name="no-email-collection" content="http://www.unspam.com/noemailcollection" />
  <script type="text/javascript" src="jquery.js"></script>
  <script type="text/javascript" src="dynsections.js"></script>
  <link rel="shortcut icon" href="../../favicon.ico" /><link rel="icon" href="../../favicon.ico" />
  <link rel="stylesheet" media="screen" type="text/css" title="KDE Colors" href="../../kde.css" />
  <link rel="stylesheet" media="print, embossed" type="text/css" href="../../print.css" />
  <link rel="stylesheet" media="screen, aural, handheld, tty, braille" type="text/css" title="Flat" href="../../flat.css" />
  <link rel="stylesheet" type="text/css" href="../../doxygen.css" />
  <link rel="stylesheet" type="text/css" href="../../tabs.css" />
</head>
<body>
<ul class="cp-doNotDisplay">
  <li><a href="#cp-content" accesskey="2">Skip to content</a></li>
  <li><a href="#cp-menu" accesskey="5">Skip to link menu</a></li>
</ul>
<div id="container">
<div id="header">
  <div id="header_top"><div><div>
    <img alt ="" src="../../top-kde.jpg"/>
    </div></div></div>
  <div id="header_bottom">
    <div id="location">
      <ul>
        <li><a href="http://api.kde.org">KDE API Reference</a></li>
        <li><a href="../../index.html">kdepimlibs-4.10.5 API Reference</a></li>
      </ul>
    </div>
    <div id="menu">
<ul>
<li><a href="http://www.kde.org/">KDE Home</a></li>
<li><a href="http://kde.org/contact/">Contact Us</a></li>
</ul>
</div>
</div>
</div>
<!-- End page header -->
    <div id="body_wrapper">
      <div id="body">
        <!-- begin main content -->
        <div id="right">
          <div class="content">
          <div id="main">
            <div class="clearer">&nbsp;</div>
<h2><a name="content"></a>Syndication Library</h2>
<!-- BC -->
<div id="top">
<!-- Generated by Doxygen 1.8.3.1 -->
<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespaceSyndication.html">Syndication</a></li><li class="navelem"><a class="el" href="classSyndication_1_1Mapper.html">Mapper</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classSyndication_1_1Mapper-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">Syndication::Mapper&lt; T &gt; Class Template Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
</div><!--header-->
<div class="contents">

<p><code>#include &lt;<a class="el" href="mapper_8h_source.html">mapper.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ad943f9a3f48df55f3d24cfbc5a665e58"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSyndication_1_1Mapper.html#ad943f9a3f48df55f3d24cfbc5a665e58">~Mapper</a> ()</td></tr>
<tr class="separator:ad943f9a3f48df55f3d24cfbc5a665e58"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a09b56f66744da334b2c6a807b32f7408"><td class="memItemLeft" align="right" valign="top">virtual boost::shared_ptr&lt; T &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSyndication_1_1Mapper.html#a09b56f66744da334b2c6a807b32f7408">map</a> (SpecificDocumentPtr doc) const =0</td></tr>
<tr class="separator:a09b56f66744da334b2c6a807b32f7408"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;class T&gt;<br/>
class Syndication::Mapper&lt; T &gt;</h3>

<p>A mapper maps an <a class="el" href="classSyndication_1_1SpecificDocument.html" title="Document interface for format-specific feed documents as parsed from a document source (see DocumentS...">SpecificDocument</a> to something else. </p>
<p>The type of this "something else" is specified by the template parameter T. In the default implementation it is used with the <a class="el" href="classSyndication_1_1Feed.html" title="This class represents a feed document (&quot;Channel&quot; in RSS, &quot;Feed&quot; in Atom).">Feed</a> interface, but it is not limited to that. T can be an arbitrary class.</p>
<p>There are three (advanced and hopefully rare) use cases that require you to implement your own mapper. For more information on the possible uses, see TODO: link docs.</p>
<p>1) Add your own feed parser. In case you need support for another feed format (Okay! News, CDF, completely backward-incompatible Atom 5.0, you name it), you can implement <a class="el" href="classSyndication_1_1AbstractParser.html" title="Interface for all parsers.">AbstractParser</a> and <a class="el" href="classSyndication_1_1SpecificDocument.html" title="Document interface for format-specific feed documents as parsed from a document source (see DocumentS...">SpecificDocument</a> for it and provide a <a class="el" href="classSyndication_1_1Mapper.html" title="A mapper maps an SpecificDocument to something else.">Mapper</a>&lt;<a class="el" href="classSyndication_1_1Feed.html" title="This class represents a feed document (&quot;Channel&quot; in RSS, &quot;Feed&quot; in Atom).">Feed</a>&gt;</p>
<ul>
<li><div class="fragment"><div class="line"><span class="keyword">class </span>OkayNewsMapper : <span class="keyword">public</span> Mapper&lt;Feed&gt;</div>
<div class="line">{</div>
<div class="line">    <span class="keyword">public</span>:</div>
<div class="line"></div>
<div class="line">    <span class="keyword">virtual</span> FeedPtr <a class="code" href="classSyndication_1_1Mapper.html#a09b56f66744da334b2c6a807b32f7408" title="maps a format-specific document to abstraction of type T.">map</a>(SpecificDocumentPtr doc)<span class="keyword"> const </span>{ ... }</div>
<div class="line">};</div>
<div class="line"></div>
<div class="line"><a class="code" href="namespaceSyndication.html#af2e53b977bf4b6d9a28ee4cbffd482a9" title="The default ParserCollection instance parsing a DocumentSource into a Feed object.">parserCollection</a>()-&gt;registerParser(<span class="keyword">new</span> OkayNews::Parser, <span class="keyword">new</span> OkayNewsMapper);</div>
</div><!-- fragment --></li>
</ul>
<p>2) Implement your own mapper for the <a class="el" href="classSyndication_1_1Feed.html" title="This class represents a feed document (&quot;Channel&quot; in RSS, &quot;Feed&quot; in Atom).">Feed</a> abstraction, for an existing parser. E.g. if you think <a class="el" href="namespaceSyndication.html" title="TODO.">Syndication</a> does map Atom all wrong, you can implement your own Atom mapper and use that instead of the default one.</p>
<div class="fragment"><div class="line"><span class="keyword">class </span>MyAtomMapper : <span class="keyword">public</span> Mapper&lt;Feed&gt;</div>
<div class="line">{</div>
<div class="line">    <span class="keyword">public</span>:</div>
<div class="line"></div>
<div class="line">    <span class="keyword">virtual</span> FeedPtr <a class="code" href="classSyndication_1_1Mapper.html#a09b56f66744da334b2c6a807b32f7408" title="maps a format-specific document to abstraction of type T.">map</a>(SpecificDocumentPtr doc)<span class="keyword"> const </span>{ ... }</div>
<div class="line">};</div>
<div class="line"></div>
<div class="line"><a class="code" href="namespaceSyndication.html#af2e53b977bf4b6d9a28ee4cbffd482a9" title="The default ParserCollection instance parsing a DocumentSource into a Feed object.">parserCollection</a>()-&gt;changeMapper(<span class="stringliteral">&quot;atom&quot;</span>, <span class="keyword">new</span> MyAtomMapper);</div>
</div><!-- fragment --><p>3) Use your own abstraction. In case the <a class="el" href="classSyndication_1_1Feed.html" title="This class represents a feed document (&quot;Channel&quot; in RSS, &quot;Feed&quot; in Atom).">Feed</a> interface does not fit your needs, you can use your own interface, let's say "MyFeed". Be aware you have to implement custom mappings for all feed formats then:</p>
<div class="fragment"><div class="line"><span class="keyword">class </span>MyFeed</div>
<div class="line">{</div>
<div class="line">    <span class="keyword">public</span>:</div>
<div class="line"></div>
<div class="line">    QString title() <span class="keyword">const</span>; <span class="comment">// my special title</span></div>
<div class="line">    QList&lt;Article&gt; articles() <span class="keyword">const</span>; <span class="comment">// I name it articles</span></div>
<div class="line">};</div>
<div class="line"></div>
<div class="line"><span class="keyword">class </span>MyAtomMapper : <span class="keyword">public</span> Mapper&lt;MyFeed&gt; { ... };</div>
<div class="line"><span class="keyword">class </span>MyRDFMapper : <span class="keyword">public</span> Mapper&lt;MyFeed&gt; { ... };</div>
<div class="line"><span class="keyword">class </span>MyRSS2Mapper : <span class="keyword">public</span> Mapper&lt;MyFeed&gt; { ... };</div>
<div class="line"></div>
<div class="line">ParserCollection&lt;MyFeed&gt;* coll = <span class="keyword">new</span> ParserCollection&lt;MyFeed&gt;;</div>
<div class="line">coll-&gt;registerParser(<span class="keyword">new</span> Atom::Parser, <span class="keyword">new</span> MyAtomMapper);</div>
<div class="line">coll-&gt;registerParser(<span class="keyword">new</span> RDF::Parser, <span class="keyword">new</span> MyRDFMapper);</div>
<div class="line">coll-&gt;registerParser(<span class="keyword">new</span> RSS2::Parser, <span class="keyword">new</span> MyRSS2Mapper);</div>
</div><!-- fragment --><dl class="section author"><dt>Author</dt><dd>Frank Osterfeld </dd></dl>

<p>Definition at line <a class="el" href="mapper_8h_source.html#l00110">110</a> of file <a class="el" href="mapper_8h_source.html">mapper.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ad943f9a3f48df55f3d24cfbc5a665e58"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classSyndication_1_1Mapper.html">Syndication::Mapper</a>&lt; T &gt;::~<a class="el" href="classSyndication_1_1Mapper.html">Mapper</a> </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>virtual destructor </p>

<p>Definition at line <a class="el" href="mapper_8h_source.html#l00117">117</a> of file <a class="el" href="mapper_8h_source.html">mapper.h</a>.</p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a09b56f66744da334b2c6a807b32f7408"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual boost::shared_ptr&lt;T&gt; <a class="el" href="classSyndication_1_1Mapper.html">Syndication::Mapper</a>&lt; T &gt;::map </td>
          <td>(</td>
          <td class="paramtype">SpecificDocumentPtr&#160;</td>
          <td class="paramname"><em>doc</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>maps a format-specific document to abstraction of type <code>T</code>. </p>
<dl class="section note"><dt>Note</dt><dd>implementations may assume <code>doc</code> to have the type whose mapping they implement and may just statically cast to the subclass without further checking. If you register your own mapper, it's your responsibility to register the mapper only for the format it actually handles.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">doc</td><td>the document to map. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a newly created object implementing the abstraction <code>T</code>. </dd></dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="mapper_8h_source.html">mapper.h</a></li>
</ul>
</div><!-- contents -->
<div class="copyrights">
This file is part of the KDE documentation.<br/>
Documentation copyright &copy; 1996-2013 The KDE developers.<br/>
Generated on Fri Jul 12 2013 16:48:30 by
<a href="http://www.doxygen.org/index.html">doxygen</a> 1.8.3.1 written
by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>, &copy;&nbsp;1997-2006
<p>
KDE's <a href="http://techbase.kde.org/Policies/Library_Documentation_Policy">Doxygen guidelines</a> are available online.
</p>
</div>
            </div>
          </div>
        </div>
        <div id="left">
          <div class="menu_box">
<a name="cp-menu" /><div class="menutitle"><div>
<h2 id="cp-menu-project">Syndication Library</h2>
<a href="#cp-skip-project" class="cp-doNotDisplay">Skip menu "Syndication Library"</a>
</div></div>
<ul><li><a href="index.html">Main Page</a></li><li><a href="namespaces.html">Namespace List</a></li><li><a href="namespacemembers.html">Namespace Members</a></li><li><a href="classes.html">Alphabetical List</a></li><li><a href="annotated.html">Class List</a></li><li><a href="hierarchy.html">Class Hierarchy</a></li><li><a href="functions.html">Class Members</a></li><li><a href="files.html">File List</a></li><li><a href="pages.html">Related Pages</a></li></ul>
<!--
<h2>Class Picker</h2>
<div style="text-align: center;">
<form name="guideform">
<select name="guidelinks" style="width:100%;" onChange="window.location=document.guideform.guidelinks.options[document.guideform.guidelinks.selectedIndex].value">
<option value="annotated.html">-- Choose --</option>
  <option value="classSyndication_1_1AbstractParser.html">syndication::abstractparser</option>,  <option value="classSyndication_1_1Category.html">syndication::category</option>,  <option value="classSyndication_1_1DataRetriever.html">syndication::dataretriever</option>,  <option value="classSyndication_1_1DocumentSource.html">syndication::documentsource</option>,  <option value="classSyndication_1_1DocumentVisitor.html">syndication::documentvisitor</option>,  <option value="classSyndication_1_1ElementWrapper.html">syndication::elementwrapper</option>,  <option value="classSyndication_1_1Enclosure.html">syndication::enclosure</option>,  <option value="classSyndication_1_1Feed.html">syndication::feed</option>,  <option value="classSyndication_1_1FileRetriever.html">syndication::fileretriever</option>,  <option value="classSyndication_1_1Image.html">syndication::image</option>,  <option value="classSyndication_1_1Item.html">syndication::item</option>,  <option value="classSyndication_1_1Loader.html">syndication::loader</option>,  <option value="classSyndication_1_1Mapper.html">syndication::mapper</option>,  <option value="classSyndication_1_1OutputRetriever.html">syndication::outputretriever</option>,  <option value="classSyndication_1_1ParserCollection.html">syndication::parsercollection</option>,  <option value="classSyndication_1_1Person.html">syndication::person</option>,  <option value="classSyndication_1_1SpecificDocument.html">syndication::specificdocument</option>,  <option value="classSyndication_1_1SpecificItem.html">syndication::specificitem</option>,  <option value="classSyndication_1_1SpecificItemVisitor.html">syndication::specificitemvisitor</option>,
</select>
</form>
</div>
-->
<div class="menu_box">
<a name="cp-menu" /><div class="menutitle"><div>
<h2 id="cp-menu-project">kdepimlibs-4.10.5 API Reference</h2>
<a href="#cp-skip-project" class="cp-doNotDisplay">Skip menu "kdepimlibs-4.10.5 API Reference"</a>
</div></div>
<div class="nav_list">
<ul>
<li><a href="../../akonadi/html/index.html">akonadi</a></li><li>&nbsp;&nbsp;<a href="../../akonadi/contact/html/index.html">contact</a></li><li>&nbsp;&nbsp;<a href="../../akonadi/kmime/html/index.html">kmime</a></li><li>&nbsp;&nbsp;<a href="../../akonadi/socialutils/html/index.html">socialutils</a></li><li><a href="../../kabc/html/index.html">kabc</a></li><li><a href="../../kalarmcal/html/index.html">kalarmcal</a></li><li><a href="../../kblog/html/index.html">kblog</a></li><li><a href="../../kcal/html/index.html">kcal</a></li><li><a href="../../kcalcore/html/index.html">kcalcore</a></li><li><a href="../../kcalutils/html/index.html">kcalutils</a></li><li><a href="../../kholidays/html/index.html">kholidays</a></li><li><a href="../../kimap/html/index.html">kimap</a></li><li><a href="../../kioslave/html/index.html">kioslave</a></li><li>&nbsp;&nbsp;<a href="../../kioslave/imap4/html/index.html">imap4</a></li><li>&nbsp;&nbsp;<a href="../../kioslave/mbox/html/index.html">mbox</a></li><li>&nbsp;&nbsp;<a href="../../kioslave/nntp/html/index.html">nntp</a></li><li><a href="../../kldap/html/index.html">kldap</a></li><li><a href="../../kmbox/html/index.html">kmbox</a></li><li><a href="../../kmime/html/index.html">kmime</a></li><li><a href="../../kontactinterface/html/index.html">kontactinterface</a></li><li><a href="../../kpimidentities/html/index.html">kpimidentities</a></li><li><a href="../../kpimtextedit/html/index.html">kpimtextedit</a></li><li><a href="../../kpimutils/html/index.html">kpimutils</a></li><li><a href="../../kresources/html/index.html">kresources</a></li><li><a href="../../ktnef/html/index.html">ktnef</a></li><li><a href="../../kxmlrpcclient/html/index.html">kxmlrpcclient</a></li><li><a href="../../mailtransport/html/index.html">mailtransport</a></li><li><a href="../../microblog/html/index.html">microblog</a></li><li><a href="../../qgpgme/html/index.html">qgpgme</a></li><li><a href="../../syndication/html/index.html">syndication</a></li><li>&nbsp;&nbsp;<a href="../../syndication/atom/html/index.html">atom</a></li><li>&nbsp;&nbsp;<a href="../../syndication/rdf/html/index.html">rdf</a></li><li>&nbsp;&nbsp;<a href="../../syndication/rss2/html/index.html">rss2</a></li>
</ul></div></div>
<!-- api_searchbox -->
          </div>
        </div>
        <div class="clearer"></div>
      </div>
      <div class="clearer"></div>
    </div>
    <div id="end_body"></div>
    <div id="footer"><div id="footer_text">
    Report problems with this website to <a href="https://bugs.kde.org/enter_sysadmin_request.cgi?component=api.kde.org">our bug tracking system</a>.<br>
    Contact the specific authors with questions and comments about the page contents.<p>
    KDE<sup>&#174;</sup> and <a href="/media/images/kde_gear_black.png">the K Desktop Environment<sup>&#174;</sup> logo</a> are registered trademarks of <a href="http://ev.kde.org/" title="Homepage of the KDE non-profit Organization">KDE e.V.</a> |
        <a href="http://www.kde.org/contact/impressum.php">Legal</a></p>
    </div></div>
  </div>
<!--
WARNING: DO NOT SEND MAIL TO THE FOLLOWING EMAIL ADDRESS! YOU WILL
BE BLOCKED INSTANTLY AND PERMANENTLY!
<a href="mailto:aaaatrap-45abe0e0c3bebc77@kde.org">Block me</a>
WARNING END
-->
</body>
</html>