aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-10-10 12:18:45 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-10-10 12:18:45 +0000
commitc7239788f111d2a6a8ca3bb8b95b72579095bad4 (patch)
tree28e6b3a4e7ee599cb9bcf03092250dacc8e29244 /lib
parent6aa0ed7fff929c4b2651667ab809d0ace1dac56d (diff)
downloadenigma2-c7239788f111d2a6a8ca3bb8b95b72579095bad4.tar.gz
enigma2-c7239788f111d2a6a8ca3bb8b95b72579095bad4.zip
add function to get a comparable service reference string (useable to
compare servicesrefs in python)
Diffstat (limited to 'lib')
-rw-r--r--lib/service/iservice.h1
-rw-r--r--lib/service/service.cpp10
-rw-r--r--lib/service/servicedvb.cpp4
-rw-r--r--lib/service/servicefs.cpp4
4 files changed, 19 insertions, 0 deletions
diff --git a/lib/service/iservice.h b/lib/service/iservice.h
index eff03436..31c1c99d 100644
--- a/lib/service/iservice.h
+++ b/lib/service/iservice.h
@@ -145,6 +145,7 @@ public:
#endif
eServiceReference(const std::string &string);
std::string toString() const;
+ std::string toCompareString() const;
bool operator==(const eServiceReference &c) const
{
if (type != c.type)
diff --git a/lib/service/service.cpp b/lib/service/service.cpp
index 11f88b1f..aa1ee4d8 100644
--- a/lib/service/service.cpp
+++ b/lib/service/service.cpp
@@ -51,6 +51,16 @@ std::string eServiceReference::toString() const
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;
diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp
index 75b55215..750fd34c 100644
--- a/lib/service/servicedvb.cpp
+++ b/lib/service/servicedvb.cpp
@@ -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())
+// 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
@@ -435,6 +436,9 @@ PyObject *eDVBServiceList::getContent(const char* format, bool sorted)
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;
diff --git a/lib/service/servicefs.cpp b/lib/service/servicefs.cpp
index 1f65ae17..16948854 100644
--- a/lib/service/servicefs.cpp
+++ b/lib/service/servicefs.cpp
@@ -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())
+// 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
@@ -216,6 +217,9 @@ PyObject *eServiceFS::getContent(const char* format, bool sorted)
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;