diff options
Diffstat (limited to 'rep/ept/core/desktop.h.gcov.html')
-rw-r--r-- | rep/ept/core/desktop.h.gcov.html | 344 |
1 files changed, 0 insertions, 344 deletions
diff --git a/rep/ept/core/desktop.h.gcov.html b/rep/ept/core/desktop.h.gcov.html deleted file mode 100644 index 27d0be3..0000000 --- a/rep/ept/core/desktop.h.gcov.html +++ /dev/null @@ -1,344 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/core/desktop.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/core</a> - desktop.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">103</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">94.2 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">97</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : /// -*- C++ -*- (c) 2006, 2007 Petr Rockai <me@mornfall.net> -<span class="lineNum"> 2 </span> : -<span class="lineNum"> 3 </span> : #include <wibble/string.h> -<span class="lineNum"> 4 </span> : -<span class="lineNum"> 5 </span> : #include <ept/token.h> -<span class="lineNum"> 6 </span> : #include <ept/core/desktopfile.h> -<span class="lineNum"> 7 </span> : #include <ept/core/source.h> -<span class="lineNum"> 8 </span> : -<span class="lineNum"> 9 </span> : #include <set> -<span class="lineNum"> 10 </span> : #include <vector> -<span class="lineNum"> 11 </span> : #include <fstream> -<span class="lineNum"> 12 </span> : #include <sstream> -<span class="lineNum"> 13 </span> : #include <iterator> -<span class="lineNum"> 14 </span> : #include <functional> -<span class="lineNum"> 15 </span> : -<span class="lineNum"> 16 </span> : #include <dirent.h> -<span class="lineNum"> 17 </span> : -<span class="lineNum"> 18 </span> : #ifndef EPT_CORE_DESKTOP_H -<span class="lineNum"> 19 </span> : #define EPT_CORE_DESKTOP_H -<span class="lineNum"> 20 </span> : -<span class="lineNum"> 21 </span> : namespace ept { -<span class="lineNum"> 22 </span> : namespace core { -<span class="lineNum"> 23 </span> : namespace desktop { -<span class="lineNum"> 24 </span> : -<span class="lineNum"> 25 </span> : typedef enum { Name, Group, ShortDescription, Package, Icon } PropertyId; -<span class="lineNum"> 26 </span> : -<span class="lineNum"> 27 </span> : template< PropertyId > struct PropertyType {}; -<span class="lineNum"> 28 </span> : template<> struct PropertyType< Name > { typedef std::string T; }; -<span class="lineNum"> 29 </span> : template<> struct PropertyType< Group > { typedef std::string T; }; -<span class="lineNum"> 30 </span> : template<> struct PropertyType< ShortDescription > { typedef std::string T; }; -<span class="lineNum"> 31 </span> : template<> struct PropertyType< Package > { typedef ept::Token T; }; -<span class="lineNum"> 32 </span> : template<> struct PropertyType< Icon > { typedef std::string T; }; -<span class="lineNum"> 33 </span> : -<span class="lineNum"> 34 </span> : typedef std::set< std::string > Categories; -<span class="lineNum"> 35 </span> : -<span class="lineNum"> 36 </span><span class="lineCov"> 64 : struct Category {</span> -<span class="lineNum"> 37 </span> : std::string name; -<span class="lineNum"> 38 </span><span class="lineCov"> 112 : operator std::string() const { return name; }</span> -<span class="lineNum"> 39 </span> : }; -<span class="lineNum"> 40 </span> : -<span class="lineNum"> 41 </span><span class="lineCov"> 80 : inline std::istream &operator >>( std::istream &i, Category &cat ) {</span> -<span class="lineNum"> 42 </span> : char c; -<span class="lineNum"> 43 </span><span class="lineCov"> 80 : cat.name = "";</span> -<span class="lineNum"> 44 </span><span class="lineCov"> 468 : while ( i.peek() != EOF ) {</span> -<span class="lineNum"> 45 </span><span class="lineCov"> 356 : c = i.get();</span> -<span class="lineNum"> 46 </span><span class="lineCov"> 356 : if ( c == ';' ) return i;</span> -<span class="lineNum"> 47 </span><span class="lineCov"> 308 : cat.name += c;</span> -<span class="lineNum"> 48 </span> : } -<span class="lineNum"> 49 </span><span class="lineCov"> 32 : return i;</span> -<span class="lineNum"> 50 </span> : } -<span class="lineNum"> 51 </span> : -<span class="lineNum"> 52 </span><span class="lineCov"> 567 : struct Entry : wibble::mixin::Comparable< Entry > {</span> -<span class="lineNum"> 53 </span><span class="lineCov"> 18 : Entry() {}</span> -<span class="lineNum"> 54 </span> : Entry( std::string n, std::string g, -<span class="lineNum"> 55 </span> : std::string p, std::string d , std::string i ) -<span class="lineNum"> 56 </span> : : m_name( n ), -<span class="lineNum"> 57 </span> : m_package( p ), -<span class="lineNum"> 58 </span> : m_description( d ), -<span class="lineNum"> 59 </span> : m_icon( i ) -<span class="lineNum"> 60 </span> : { setCategories( g ); } -<span class="lineNum"> 61 </span> : -<span class="lineNum"> 62 </span><span class="lineCov"> 16 : void load( std::string file ) {</span> -<span class="lineNum"> 63 </span><span class="lineCov"> 16 : m_id = file;</span> -<span class="lineNum"> 64 </span><span class="lineCov"> 16 : std::ifstream i( file.c_str() );</span> -<span class="lineNum"> 65 </span><span class="lineCov"> 16 : if ( !i.is_open() )</span> -<span class="lineNum"> 66 </span><span class="lineNoCov"> 0 : return; // throw?</span> -<span class="lineNum"> 67 </span><span class="lineCov"> 16 : desktop::File e;</span> -<span class="lineNum"> 68 </span><span class="lineCov"> 16 : i >> e;</span> -<span class="lineNum"> 69 </span><span class="lineCov"> 16 : i.close();</span> -<span class="lineNum"> 70 </span><span class="lineCov"> 16 : desktop::File::Group &g = e.group( "Desktop Entry" );</span> -<span class="lineNum"> 71 </span><span class="lineCov"> 32 : m_name = g.entry( "Name" ).value;</span> -<span class="lineNum"> 72 </span><span class="lineCov"> 32 : m_description = g.entry( "Comment" ).value;</span> -<span class="lineNum"> 73 </span><span class="lineCov"> 32 : if ( m_description == "" )</span> -<span class="lineNum"> 74 </span><span class="lineCov"> 8 : m_description = g.entry( "GenericName" ).value;</span> -<span class="lineNum"> 75 </span><span class="lineCov"> 16 : m_package = g.entry( "X-AppInstall-Package" ).value;</span> -<span class="lineNum"> 76 </span> : // m_group = g.entry( "Categories" ).value; -<span class="lineNum"> 77 </span><span class="lineCov"> 32 : m_icon = g.entry( "Icon" ).value;</span> -<span class="lineNum"> 78 </span><span class="lineCov"> 32 : setCategories( g.entry( "Categories" ).value );</span> -<span class="lineNum"> 79 </span> : } -<span class="lineNum"> 80 </span> : -<span class="lineNum"> 81 </span><span class="lineCov"> 16 : void setCategories( std::string s ) {</span> -<span class="lineNum"> 82 </span><span class="lineCov"> 16 : std::istringstream i( s );</span> -<span class="lineNum"> 83 </span><span class="lineCov"> 16 : m_categories.clear();</span> -<span class="lineNum"> 84 </span> : std::remove_copy_if( -<span class="lineNum"> 85 </span> : std::istream_iterator< Category >( i ), -<span class="lineNum"> 86 </span> : std::istream_iterator< Category >(), -<span class="lineNum"> 87 </span> : std::inserter( m_categories, m_categories.begin() ), -<span class="lineNum"> 88 </span><span class="lineCov"> 16 : std::bind1st( std::equal_to< std::string >(), "" ) );</span> -<span class="lineNum"> 89 </span><span class="lineCov"> 16 : }</span> -<span class="lineNum"> 90 </span> : -<span class="lineNum"> 91 </span><span class="lineCov"> 16 : Categories categories() const { return m_categories; }</span> -<span class="lineNum"> 92 </span> : bool inCategory( std::string c ) const { -<span class="lineNum"> 93 </span> : return m_categories.find( c ) != m_categories.end(); -<span class="lineNum"> 94 </span> : } -<span class="lineNum"> 95 </span><span class="lineCov"> 34 : std::string id() const { return m_id; }</span> -<span class="lineNum"> 96 </span><span class="lineCov"> 6 : std::string name() const { return m_name; }</span> -<span class="lineNum"> 97 </span> : std::string package() const { return m_package; } -<span class="lineNum"> 98 </span> : std::string description() const { return m_description; } -<span class="lineNum"> 99 </span> : std::string icon() const { return m_icon; } -<span class="lineNum"> 100 </span> : bool operator< ( const Entry &o ) const { -<span class="lineNum"> 101 </span> : if ( m_name < o.m_name ) return true; -<span class="lineNum"> 102 </span> : if ( m_name == o.m_name ) -<span class="lineNum"> 103 </span> : if ( m_package < o.m_package ) return true; -<span class="lineNum"> 104 </span> : return false; -<span class="lineNum"> 105 </span> : } -<span class="lineNum"> 106 </span> : protected: -<span class="lineNum"> 107 </span> : std::string m_name, m_package, m_description, m_icon, m_id; -<span class="lineNum"> 108 </span> : bool m_supported, m_free; -<span class="lineNum"> 109 </span> : Categories m_categories; -<span class="lineNum"> 110 </span> : }; -<span class="lineNum"> 111 </span> : -<span class="lineNum"> 112 </span><span class="lineCov"> 450 : struct InternalList {</span> -<span class="lineNum"> 113 </span> : std::string dir; -<span class="lineNum"> 114 </span> : std::string current; -<span class="lineNum"> 115 </span> : mutable Entry entry; -<span class="lineNum"> 116 </span> : off_t offset; -<span class="lineNum"> 117 </span> : mutable bool loaded; -<span class="lineNum"> 118 </span> : -<span class="lineNum"> 119 </span><span class="lineCov"> 9 : InternalList() : dir( "" ), offset( -2 ), loaded( false ) {}</span> -<span class="lineNum"> 120 </span><span class="lineCov"> 4 : InternalList( std::string d ) : dir( d ), offset( -1 ), loaded( false )</span> -<span class="lineNum"> 121 </span> : { -<span class="lineNum"> 122 </span><span class="lineCov"> 4 : firstFile();</span> -<span class="lineNum"> 123 </span><span class="lineCov"> 4 : }</span> -<span class="lineNum"> 124 </span> : -<span class="lineNum"> 125 </span><span class="lineCov"> 56 : Entry head() const {</span> -<span class="lineNum"> 126 </span><span class="lineCov"> 56 : if (!loaded)</span> -<span class="lineNum"> 127 </span><span class="lineCov"> 16 : entry.load( current );</span> -<span class="lineNum"> 128 </span><span class="lineCov"> 56 : loaded = true;</span> -<span class="lineNum"> 129 </span><span class="lineCov"> 56 : return entry;</span> -<span class="lineNum"> 130 </span> : } -<span class="lineNum"> 131 </span> : -<span class="lineNum"> 132 </span><span class="lineCov"> 33 : bool empty() const {</span> -<span class="lineNum"> 133 </span><span class="lineCov"> 33 : return (offset == -2);</span> -<span class="lineNum"> 134 </span> : } -<span class="lineNum"> 135 </span> : -<span class="lineNum"> 136 </span><span class="lineCov"> 4 : void firstFile() {</span> -<span class="lineNum"> 137 </span><span class="lineCov"> 4 : offset = -1;</span> -<span class="lineNum"> 138 </span><span class="lineCov"> 4 : nextFile();</span> -<span class="lineNum"> 139 </span><span class="lineCov"> 4 : }</span> -<span class="lineNum"> 140 </span> : -<span class="lineNum"> 141 </span><span class="lineCov"> 16 : InternalList tail() const {</span> -<span class="lineNum"> 142 </span><span class="lineCov"> 16 : InternalList r = *this;</span> -<span class="lineNum"> 143 </span><span class="lineCov"> 16 : r.nextFile();</span> -<span class="lineNum"> 144 </span><span class="lineNoCov"> 0 : return r;</span> -<span class="lineNum"> 145 </span> : } -<span class="lineNum"> 146 </span> : -<span class="lineNum"> 147 </span><span class="lineCov"> 20 : void nextFile() {</span> -<span class="lineNum"> 148 </span><span class="lineCov"> 20 : loaded = false;</span> -<span class="lineNum"> 149 </span><span class="lineCov"> 20 : DIR *d = opendir( dir.c_str() );</span> -<span class="lineNum"> 150 </span><span class="lineCov"> 20 : if ( !d ) {</span> -<span class="lineNum"> 151 </span><span class="lineNoCov"> 0 : offset = -2;</span> -<span class="lineNum"> 152 </span><span class="lineNoCov"> 0 : closedir( d );</span> -<span class="lineNum"> 153 </span><span class="lineNoCov"> 0 : return;</span> -<span class="lineNum"> 154 </span> : } -<span class="lineNum"> 155 </span> : -<span class="lineNum"> 156 </span><span class="lineCov"> 20 : if ( offset != -1 )</span> -<span class="lineNum"> 157 </span><span class="lineCov"> 16 : seekdir( d, offset );</span> -<span class="lineNum"> 158 </span> : -<span class="lineNum"> 159 </span><span class="lineCov"> 20 : dirent *ent = 0;</span> -<span class="lineNum"> 160 </span><span class="lineCov"> 48 : while ( ( ent = readdir( d ) ) != 0 ) {</span> -<span class="lineNum"> 161 </span><span class="lineCov"> 24 : std::string name( ent->d_name );</span> -<span class="lineNum"> 162 </span><span class="lineCov"> 48 : if ( name == "." || name == ".." )</span> -<span class="lineNum"> 163 </span><span class="lineCov"> 8 : continue;</span> -<span class="lineNum"> 164 </span><span class="lineCov"> 16 : if ( !wibble::str::endsWith( name, ".desktop" ) )</span> -<span class="lineNum"> 165 </span> : continue; -<span class="lineNum"> 166 </span><span class="lineCov"> 16 : current = dir + "/" + name;</span> -<span class="lineNum"> 167 </span><span class="lineCov"> 16 : offset = telldir( d );</span> -<span class="lineNum"> 168 </span><span class="lineCov"> 16 : closedir( d );</span> -<span class="lineNum"> 169 </span><span class="lineCov"> 16 : return;</span> -<span class="lineNum"> 170 </span> : } -<span class="lineNum"> 171 </span><span class="lineCov"> 4 : closedir( d );</span> -<span class="lineNum"> 172 </span><span class="lineCov"> 4 : offset = -2;</span> -<span class="lineNum"> 173 </span> : } -<span class="lineNum"> 174 </span> : }; -<span class="lineNum"> 175 </span> : -<span class="lineNum"> 176 </span> : struct Setup { -<span class="lineNum"> 177 </span> : typedef ept::Token Token; -<span class="lineNum"> 178 </span> : typedef Entry Internal; -<span class="lineNum"> 179 </span> : typedef desktop::PropertyId PropertyId; -<span class="lineNum"> 180 </span> : typedef desktop::InternalList InternalList; -<span class="lineNum"> 181 </span> : }; -<span class="lineNum"> 182 </span> : -<span class="lineNum"> 183 </span><span class="lineCov"> 5 : struct GroupPolicy {</span> -<span class="lineNum"> 184 </span><span class="lineCov"> 16 : virtual std::string group( const Entry &e )</span> -<span class="lineNum"> 185 </span> : { -<span class="lineNum"> 186 </span><span class="lineCov"> 16 : return wibble::str::fmt( e.categories() );</span> -<span class="lineNum"> 187 </span> : } -<span class="lineNum"> 188 </span><span class="lineCov"> 5 : virtual ~GroupPolicy() {}</span> -<span class="lineNum"> 189 </span> : }; -<span class="lineNum"> 190 </span> : -<span class="lineNum"> 191 </span> : struct Source : core::Source< Source, Setup, PropertyType > -<span class="lineNum"> 192 </span><span class="lineCov"> 5 : {</span> -<span class="lineNum"> 193 </span> : std::string m_dir; -<span class="lineNum"> 194 </span> : -<span class="lineNum"> 195 </span> : GroupPolicy m_defaultPolicy; -<span class="lineNum"> 196 </span> : GroupPolicy *m_policy; -<span class="lineNum"> 197 </span> : -<span class="lineNum"> 198 </span><span class="lineCov"> 5 : Source( std::string dir ) : m_dir( dir ),</span> -<span class="lineNum"> 199 </span><span class="lineCov"> 5 : m_policy( &m_defaultPolicy ) {}</span> -<span class="lineNum"> 200 </span> : -<span class="lineNum"> 201 </span><span class="lineCov"> 4 : InternalList listInternal() {</span> -<span class="lineNum"> 202 </span><span class="lineCov"> 4 : return InternalList( m_dir );</span> -<span class="lineNum"> 203 </span> : } -<span class="lineNum"> 204 </span> : -<span class="lineNum"> 205 </span><span class="lineCov"> 34 : Token getToken( Entry i ) {</span> -<span class="lineNum"> 206 </span><span class="lineCov"> 34 : Token t;</span> -<span class="lineNum"> 207 </span><span class="lineCov"> 34 : t._id = std::string( "desktop:" ) + i.id();</span> -<span class="lineNum"> 208 </span><span class="lineNoCov"> 0 : return t;</span> -<span class="lineNum"> 209 </span> : } -<span class="lineNum"> 210 </span> : -<span class="lineNum"> 211 </span> : Entry lookupToken( Token t ) { -<span class="lineNum"> 212 </span> : Entry e; -<span class="lineNum"> 213 </span> : e.load( t.desktop() ); -<span class="lineNum"> 214 </span> : return e; -<span class="lineNum"> 215 </span> : } -<span class="lineNum"> 216 </span> : -<span class="lineNum"> 217 </span> : void setGroupPolicy( GroupPolicy *p ) { -<span class="lineNum"> 218 </span> : m_policy = p; -<span class="lineNum"> 219 </span> : } -<span class="lineNum"> 220 </span> : -<span class="lineNum"> 221 </span> : template< PropertyId p > -<span class="lineNum"> 222 </span> : typename PropertyType< p >::T getInternal( Entry ); -<span class="lineNum"> 223 </span> : -<span class="lineNum"> 224 </span><span class="lineCov"> 56 : struct IsInGroup {</span> -<span class="lineNum"> 225 </span> : std::string g; -<span class="lineNum"> 226 </span><span class="lineCov"> 2 : IsInGroup( std::string _g = "" ) : g( _g ) {}</span> -<span class="lineNum"> 227 </span><span class="lineCov"> 8 : bool operator()( Token, std::string gr ) const {</span> -<span class="lineNum"> 228 </span><span class="lineCov"> 8 : return gr == g;</span> -<span class="lineNum"> 229 </span> : } -<span class="lineNum"> 230 </span> : }; -<span class="lineNum"> 231 </span> : -<span class="lineNum"> 232 </span><span class="lineCov"> 1 : PropertyFilter< Group, IsInGroup >::T group( std::string id )</span> -<span class="lineNum"> 233 </span> : { -<span class="lineNum"> 234 </span><span class="lineCov"> 1 : return propertyFilter< Group >( IsInGroup( id ) );</span> -<span class="lineNum"> 235 </span> : } -<span class="lineNum"> 236 </span> : -<span class="lineNum"> 237 </span><span class="lineCov"> 4 : static std::string projectGroup( ComposedList< Name > t ) {</span> -<span class="lineNum"> 238 </span><span class="lineCov"> 4 : return t.get< Group >();</span> -<span class="lineNum"> 239 </span> : } -<span class="lineNum"> 240 </span> : -<span class="lineNum"> 241 </span> : list::Unique< list::Sorted< -<span class="lineNum"> 242 </span> : list::Map< ComposedList< Name >, -<span class="lineNum"> 243 </span> : __typeof( std::ptr_fun( &projectGroup ) ) > > > -<span class="lineNum"> 244 </span><span class="lineCov"> 1 : groupList() {</span> -<span class="lineNum"> 245 </span> : return list::unique( -<span class="lineNum"> 246 </span> : list::sort( list::map( list< Name >(), -<span class="lineNum"> 247 </span><span class="lineCov"> 1 : std::ptr_fun( &projectGroup ) ) ) );</span> -<span class="lineNum"> 248 </span> : } -<span class="lineNum"> 249 </span> : }; -<span class="lineNum"> 250 </span> : -<span class="lineNum"> 251 </span><span class="lineCov"> 6 : template<> inline std::string Source::getInternal< Name >( Entry e ) {</span> -<span class="lineNum"> 252 </span><span class="lineCov"> 6 : return e.name();</span> -<span class="lineNum"> 253 </span> : } -<span class="lineNum"> 254 </span> : -<span class="lineNum"> 255 </span> : template<> inline std::string Source::getInternal< Icon >( Entry e ) { -<span class="lineNum"> 256 </span> : return e.icon(); -<span class="lineNum"> 257 </span> : } -<span class="lineNum"> 258 </span> : -<span class="lineNum"> 259 </span> : template<> inline ept::Token Source::getInternal< Package >( Entry e ) { -<span class="lineNum"> 260 </span> : ept::Token t; -<span class="lineNum"> 261 </span> : t._id = e.package(); -<span class="lineNum"> 262 </span> : return t; -<span class="lineNum"> 263 </span> : } -<span class="lineNum"> 264 </span> : -<span class="lineNum"> 265 </span><span class="lineCov"> 16 : template<> inline std::string Source::getInternal< Group >( Entry e ) {</span> -<span class="lineNum"> 266 </span><span class="lineCov"> 16 : return m_policy->group( e );</span> -<span class="lineNum"> 267 </span> : } -<span class="lineNum"> 268 </span> : -<span class="lineNum"> 269 </span> : template<> inline std::string Source::getInternal< ShortDescription >( Entry e ) { -<span class="lineNum"> 270 </span> : return e.description(); -<span class="lineNum"> 271 </span> : } -<span class="lineNum"> 272 </span> : -<span class="lineNum"> 273 </span> : } -<span class="lineNum"> 274 </span> : } -<span class="lineNum"> 275 </span> : } -<span class="lineNum"> 276 </span> : -<span class="lineNum"> 277 </span> : #endif -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> |