- add ePython::call return support (only int)
[enigma2.git] / lib / dvb / db.cpp
index 4e0332bac37df3fbfc329142eca498d5ce29f1e0..6e3207e07b6b8373e90b7ed2bdf67b3419c67739 100644 (file)
@@ -2,6 +2,7 @@
 #include <lib/dvb/db.h>
 #include <lib/dvb/frontend.h>
 #include <lib/base/eerror.h>
+#include <lib/base/estring.h>
 #include <lib/dvb_si/sdt.h>
 #include <lib/dvb_si/descriptor_tag.h>
 #include <lib/dvb_si/service_descriptor.h>
@@ -29,7 +30,13 @@ eDVBService &eDVBService::operator=(const eDVBService &s)
 
 RESULT eDVBService::getName(const eServiceReference &ref, std::string &name)
 {
-       name = m_service_name;
+       name = convertDVBUTF8(m_service_name);
+       return 0;
+}
+
+int eDVBService::getLength(const eServiceReference &ref)
+{
+       return -1;
 }
 
 int eDVBService::checkFilter(const eServiceReferenceDVB &ref, const eDVBChannelQuery &query)
@@ -73,6 +80,19 @@ int eDVBService::checkFilter(const eServiceReferenceDVB &ref, const eDVBChannelQ
                return res;
 }
 
+int eDVBService::getCachePID(cacheID id)
+{
+       std::map<int, int>::iterator it = m_cache.find(id);
+       if ( it != m_cache.end() )
+               return it->second;
+       return -1;
+}
+
+void eDVBService::setCachePID(cacheID id, int pid)
+{
+       m_cache[id] = pid;
+}
+
 DEFINE_REF(eDVBDB);
 
 eDVBDB::eDVBDB()
@@ -330,14 +350,15 @@ RESULT eDVBDB::getService(const eServiceReferenceDVB &reference, ePtr<eDVBServic
 
 RESULT eDVBDB::startQuery(ePtr<iDVBChannelListQuery> &query, eDVBChannelQuery *q)
 {
-       query = new eDVBDBQuery(this, q);
+       query = new eDVBDBQuery(this, eServiceReference(), q);
        return 0;
 }
 
 DEFINE_REF(eDVBDBQuery);
 
-eDVBDBQuery::eDVBDBQuery(eDVBDB *db, eDVBChannelQuery *query): m_db(db), m_query(query)
+eDVBDBQuery::eDVBDBQuery(eDVBDB *db, const eServiceReference &source, eDVBChannelQuery *query): m_db(db), m_query(query)
 {
+               // TODO: use SOURCE ...
        m_cursor = m_db->m_services.begin();
 }
 
@@ -486,12 +507,10 @@ RESULT parseExpression(ePtr<eDVBChannelQuery> &res, std::list<std::string>::cons
        return 0;
 }
 
-RESULT eDVBChannelQuery::compile(ePtr<eDVBChannelQuery> &res, const eServiceReferenceDVB &source, std::string query)
+RESULT eDVBChannelQuery::compile(ePtr<eDVBChannelQuery> &res, std::string query)
 {
        std::list<std::string> tokens;
        
-       m_source = source;
-       
        std::string current_token;
        
 //     eDebug("splitting %s....", query.c_str());