add function to get a comparable service reference string (useable to
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>
Tue, 10 Oct 2006 12:18:45 +0000 (12:18 +0000)
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>
Tue, 10 Oct 2006 12:18:45 +0000 (12:18 +0000)
compare servicesrefs in python)

lib/service/iservice.h
lib/service/service.cpp
lib/service/servicedvb.cpp
lib/service/servicefs.cpp

index eff0343..31c1c99 100644 (file)
@@ -145,6 +145,7 @@ public:
 #endif
        eServiceReference(const std::string &string);
        std::string toString() const;
 #endif
        eServiceReference(const std::string &string);
        std::string toString() const;
+       std::string toCompareString() const;
        bool operator==(const eServiceReference &c) const
        {
                if (type != c.type)
        bool operator==(const eServiceReference &c) const
        {
                if (type != c.type)
index 11f88b1..aa1ee4d 100644 (file)
@@ -51,6 +51,16 @@ std::string eServiceReference::toString() const
        return ret;
 }
 
        return ret;
 }
 
+std::string eServiceReference::toCompareString() const
+{
+       std::string ret;
+       ret += getNum(type);
+       ret += ":0";
+       for (unsigned int i=0; i<sizeof(data)/sizeof(*data); ++i)
+               ret+=":"+getNum(data[i], 0x10);
+       ret+=":"+path;
+       return ret;
+}
 
 eServiceCenter *eServiceCenter::instance;
 
 
 eServiceCenter *eServiceCenter::instance;
 
index 75b5521..750fd34 100644 (file)
@@ -396,6 +396,7 @@ RESULT eDVBServiceList::getContent(std::list<eServiceReference> &list, bool sort
 //   useable format options are
 //   R = Service Reference (as swig object .. this is very slow)
 //   S = Service Reference (as python string object .. same as ref.toString())
 //   useable format options are
 //   R = Service Reference (as swig object .. this is very slow)
 //   S = Service Reference (as python string object .. same as ref.toString())
+//   C = Service Reference (as python string object .. same as ref.toCompareString())
 //   N = Service Name (as python string object)
 //   when exactly one return value per service is selected in the format string,
 //   then each value is directly a list entry
 //   N = Service Name (as python string object)
 //   when exactly one return value per service is selected in the format string,
 //   then each value is directly a list entry
@@ -435,6 +436,9 @@ PyObject *eDVBServiceList::getContent(const char* format, bool sorted)
                                case 'R':  // service reference (swig)object
                                        tmp = New_eServiceReference(ref);
                                        break;
                                case 'R':  // service reference (swig)object
                                        tmp = New_eServiceReference(ref);
                                        break;
+                               case 'C':  // service reference compare string
+                                       tmp = PyString_FromString(ref.toCompareString().c_str());
+                                       break;
                                case 'S':  // service reference string
                                        tmp = PyString_FromString(ref.toString().c_str());
                                        break;
                                case 'S':  // service reference string
                                        tmp = PyString_FromString(ref.toString().c_str());
                                        break;
index 1f65ae1..1694885 100644 (file)
@@ -177,6 +177,7 @@ RESULT eServiceFS::getContent(std::list<eServiceReference> &list, bool sorted)
 //   useable format options are
 //   R = Service Reference (as swig object .. this is very slow)
 //   S = Service Reference (as python string object .. same as ref.toString())
 //   useable format options are
 //   R = Service Reference (as swig object .. this is very slow)
 //   S = Service Reference (as python string object .. same as ref.toString())
+//   C = Service Reference (as python string object .. same as ref.toCompareString())
 //   N = Service Name (as python string object)
 //   when exactly one return value per service is selected in the format string,
 //   then each value is directly a list entry
 //   N = Service Name (as python string object)
 //   when exactly one return value per service is selected in the format string,
 //   then each value is directly a list entry
@@ -216,6 +217,9 @@ PyObject *eServiceFS::getContent(const char* format, bool sorted)
                                case 'R':  // service reference (swig)object
                                        tmp = New_eServiceReference(ref);
                                        break;
                                case 'R':  // service reference (swig)object
                                        tmp = New_eServiceReference(ref);
                                        break;
+                               case 'C':  // service reference compare string
+                                       tmp = PyString_FromString(ref.toCompareString().c_str());
+                                       break;
                                case 'S':  // service reference string
                                        tmp = PyString_FromString(ref.toString().c_str());
                                        break;
                                case 'S':  // service reference string
                                        tmp = PyString_FromString(ref.toString().c_str());
                                        break;