Go to the documentation of this file.00001
00002 #include <wibble/mixin.h>
00003 #include <string>
00004
00005 #ifndef EPT_TOKEN_H
00006 #define EPT_TOKEN_H
00007
00008 namespace ept {
00009
00010 struct Token : wibble::mixin::Comparable< Token > {
00011 std::string _id;
00012 std::string id() const { return _id; }
00013
00014 Token() : _id( "" ) {}
00015 Token( std::string s ) : _id( s ) {}
00016
00017 std::string version() const {
00018 return _id.find( '_' ) == std::string::npos ? "" :
00019 std::string( _id, _id.find( '_' ) + 1, _id.size() );
00020 }
00021
00022 std::string package() const {
00023 return std::string( _id, 0,
00024 _id.find( '_' ) == std::string::npos ?
00025 _id.size() : _id.find( '_' ) );
00026 }
00027
00028 bool isDesktop() const {
00029 return std::string( _id, 0, 8 ) == "desktop:";
00030 }
00031
00032 std::string desktop() const {
00033 return isDesktop() ? std::string( _id, 8, _id.size() ) : "";
00034 }
00035
00036 bool hasVersion() const {
00037 return version() != "";
00038 }
00039
00040 bool valid() const {
00041 return _id != "";
00042 }
00043
00044 bool operator<=( const Token &o ) const {
00045 return _id <= o._id;
00046 }
00047 };
00048
00049 }
00050
00051 inline std::ostream &operator<<( std::ostream &o, const ept::Token &t ) {
00052 return o << t.id();
00053 }
00054
00055 #endif