aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
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;