add needed functions
[enigma2.git] / lib / dvb / db.h
index a7350e7812c3c362b6b261f0dbc60ecb1db56cee..8bb0e5aeca2eae701a098a02aa6024f55dd580dd 100644 (file)
@@ -12,6 +12,8 @@ class eDVBDB: public iDVBChannelList
 DECLARE_REF(eDVBDB);
        friend class eDVBDBQuery;
        friend class eDVBDBBouquetQuery;
+       friend class eDVBDBSatellitesQuery;
+       friend class eDVBDBProvidersQuery;
 private:
        struct channel
        {
@@ -28,9 +30,7 @@ public:
        void save();
 
        void loadBouquet(const char *path);
-       void saveBouquet(const char *path);
        void loadBouquets();
-       void saveBouquets();
 
        eDVBDB();
        virtual ~eDVBDB();
@@ -42,6 +42,7 @@ public:
        
        RESULT addService(const eServiceReferenceDVB &service, eDVBService *service);
        RESULT getService(const eServiceReferenceDVB &reference, ePtr<eDVBService> &service);
+       RESULT flush();
 
        RESULT startQuery(ePtr<iDVBChannelListQuery> &query, eDVBChannelQuery *query, const eServiceReference &source);
 
@@ -53,13 +54,12 @@ class eDVBDBQueryBase: public iDVBChannelListQuery
 {
 DECLARE_REF(eDVBDBQueryBase);
 protected:
-       std::map<eServiceReferenceDVB, ePtr<eDVBService> >::iterator m_cursor;
        ePtr<eDVBDB> m_db;
        ePtr<eDVBChannelQuery> m_query;
        eServiceReference m_source;
 public:
        eDVBDBQueryBase(eDVBDB *db, const eServiceReference &source, eDVBChannelQuery *query);
-       int compareLessEqual(const eServiceReferenceDVB &a, const eServiceReferenceDVB &b);
+       virtual int compareLessEqual(const eServiceReferenceDVB &a, const eServiceReferenceDVB &b);
 };
 
 class eDVBDBQuery: public eDVBDBQueryBase
@@ -78,4 +78,27 @@ public:
        RESULT getNextResult(eServiceReferenceDVB &ref);
 };
 
+class eDVBDBListQuery: public eDVBDBQueryBase
+{
+protected:
+       std::list<eServiceReferenceDVB> m_list;
+       std::list<eServiceReferenceDVB>::iterator m_cursor;
+public:
+       eDVBDBListQuery(eDVBDB *db, const eServiceReference &source, eDVBChannelQuery *query);
+       RESULT getNextResult(eServiceReferenceDVB &ref);
+       int compareLessEqual(const eServiceReferenceDVB &a, const eServiceReferenceDVB &b);
+};
+
+class eDVBDBSatellitesQuery: public eDVBDBListQuery
+{
+public:
+       eDVBDBSatellitesQuery(eDVBDB *db, const eServiceReference &source, eDVBChannelQuery *query);
+};
+
+class eDVBDBProvidersQuery: public eDVBDBListQuery
+{
+public:
+       eDVBDBProvidersQuery(eDVBDB *db, const eServiceReference &source, eDVBChannelQuery *query);
+};
+
 #endif