<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>libqtpod: itunesdb::TrackPredicate Class Reference</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> <link href="tabs.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.5.0 --> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li id="current"><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li><a href="dirs.html"><span>Directories</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="examples.html"><span>Examples</span></a></li> </ul></div> <div class="tabs"> <ul> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul></div> <div class="nav"> <b>itunesdb</b>::<a class="el" href="classitunesdb_1_1TrackPredicate.html">TrackPredicate</a></div> <h1>itunesdb::TrackPredicate Class Reference</h1><!-- doxytag: class="itunesdb::TrackPredicate" --><code>#include <<a class="el" href="track_8h-source.html">track.h</a>></code> <p> <p>Inheritance diagram for itunesdb::TrackPredicate: <p><center><img src="classitunesdb_1_1TrackPredicate.png" usemap="#itunesdb::TrackPredicate_map" border="0" alt=""></center> <map name="itunesdb::TrackPredicate_map"> <area href="classitunesdb_1_1TrackPredicates_1_1ByAlbum.html" alt="itunesdb::TrackPredicates::ByAlbum" shape="rect" coords="0,56,224,80"> <area href="classitunesdb_1_1TrackPredicates_1_1ByArtist.html" alt="itunesdb::TrackPredicates::ByArtist" shape="rect" coords="234,56,458,80"> <area href="classitunesdb_1_1TrackPredicates_1_1ByFullInfo.html" alt="itunesdb::TrackPredicates::ByFullInfo" shape="rect" coords="468,56,692,80"> <area href="classitunesdb_1_1TrackPredicates_1_1ByPathInfo.html" alt="itunesdb::TrackPredicates::ByPathInfo" shape="rect" coords="702,56,926,80"> <area href="classitunesdb_1_1TrackPredicates_1_1Contains.html" alt="itunesdb::TrackPredicates::Contains" shape="rect" coords="936,56,1160,80"> <area href="classITunesDBSPLRuleSet.html" alt="ITunesDBSPLRuleSet" shape="rect" coords="1170,56,1394,80"> </map> <a href="classitunesdb_1_1TrackPredicate-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> <tr><td></td></tr> <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classitunesdb_1_1TrackPredicate.html#2a031fa5f6b071aa2d0e1fd09fe66f5f">operator()</a> (const <a class="el" href="classitunesdb_1_1Track.html">Track</a> *) const =0</td></tr> </table> <hr><a name="_details"></a><h2>Detailed Description</h2> This interface will be used by <a class="el" href="classITunesDB.html#9b5efdb3c0e67ee27e892f201a87d62b">ITunesDB::findFirstTrackBy</a> and <a class="el" href="classITunesDB.html#f3f95ef89b93625ddcdd6e2e98dfb23f">ITunesDB::getTracksBy</a>. Callers to these functions provide a reference to an implementation of this interface and thus provide code to decide if a given track is a valid result.<p> Example: you need to get all the tracks performed at a given year (e.g. 2004) from the database<p> First create an implementor for <a class="el" href="classitunesdb_1_1TrackPredicate.html">TrackPredicate</a> like this: <pre><code> class TracksByYearPredicate : public <a class="el" href="classitunesdb_1_1TrackPredicate.html">TrackPredicate</a> { Q_UINT32 m_givenYear; public: TracksByYearPredicate( Q_UINT32 givenYear ) : m_givenYear( givenYear ) {} ~TracksByYearPredicate() {} bool operator() ( const <a class="el" href="classitunesdb_1_1Track.html">itunesdb::Track</a>& track ) { return track.getYear() == m_givenYear; } }; </code></pre> then you call the <a class="el" href="classITunesDB.html#f3f95ef89b93625ddcdd6e2e98dfb23f">ITunesDB::getTracksBy()</a> method of your <a class="el" href="classITunesDB.html">ITunesDB</a> instance (here itunesdb) with a reference to your predicate <pre><code> TracksByYearPredicate yearPredicate( 2004 ); <a class="el" href="classitunesdb_1_1TrackPtrList.html">TrackPtrList</a> result; itunesdb.getTracksBy( yearPredicate, result ); </code></pre> Now you have all tracks performed at 2004 in your result list. Alternatively you can call the getTracksBy() method returning a RangeIterator and add the tracks to your own container. <pre><code> ITunesDB::FilteredTrackConstIterator<TracksByYearPredicate> iter = itunesdb.getTracksBy( yearPredicate ); std::vector<itunesdb::Track*> vector; while( iter.hasNext() ) { vector.push_back( iter.next() ); } </code></pre> <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classITunesDB.html#9b5efdb3c0e67ee27e892f201a87d62b">ITunesDB::findFirstTrackBy()</a> <p> <a class="el" href="classITunesDB.html#f3f95ef89b93625ddcdd6e2e98dfb23f">ITunesDB::getTracksBy()</a> } </dd></dl> <p> <hr><h2>Member Function Documentation</h2> <a class="anchor" name="2a031fa5f6b071aa2d0e1fd09fe66f5f"></a><!-- doxytag: member="itunesdb::TrackPredicate::operator()" ref="2a031fa5f6b071aa2d0e1fd09fe66f5f" args="(const Track *) const =0" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual bool itunesdb::TrackPredicate::operator() </td> <td>(</td> <td class="paramtype">const <a class="el" href="classitunesdb_1_1Track.html">Track</a> * </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"> const<code> [pure virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Implement this method accordingly to the documentation above and (!) the documentation of the function this predicate will be given to. <p> Implemented in <a class="el" href="classITunesDBSPLRuleSet.html#110a408fd8f8dc15a12507233c1e422b">ITunesDBSPLRuleSet</a>, <a class="el" href="classitunesdb_1_1TrackPredicates_1_1ByArtist.html#406069eb2167ff62eadfb7a8024fd091">itunesdb::TrackPredicates::ByArtist</a>, <a class="el" href="classitunesdb_1_1TrackPredicates_1_1ByAlbum.html#95f2dae63e956c942754c835c71f404b">itunesdb::TrackPredicates::ByAlbum</a>, <a class="el" href="classitunesdb_1_1TrackPredicates_1_1ByFullInfo.html#48288d29fe49482dcaacbd0db41f8aee">itunesdb::TrackPredicates::ByFullInfo</a>, <a class="el" href="classitunesdb_1_1TrackPredicates_1_1ByPathInfo.html#d939f6a3441e0856785759a5d699e23c">itunesdb::TrackPredicates::ByPathInfo</a>, and <a class="el" href="classitunesdb_1_1TrackPredicates_1_1Contains.html#703eb86d34420f347be1bdf5a36b63fd">itunesdb::TrackPredicates::Contains</a>. </div> </div><p> <hr>The documentation for this class was generated from the following file:<ul> <li>libqtpod/src/<a class="el" href="track_8h-source.html">track.h</a></ul> <hr size="1"><address style="align: right;"><small>Generated on Wed Dec 19 00:15:20 2007 for libqtpod by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.0 </small></address> </body> </html>