diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2005-10-29 14:39:20 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2005-10-29 14:39:20 +0000 |
| commit | ff84dc4ee5f57e24a0777930d5482ee4ff53da0e (patch) | |
| tree | be1da715d8563d5815934cb219dc030b940563bd /lib/dvb/db.h | |
| parent | 1952e302cc1f9bf240f2307df0c3c937a9892817 (diff) | |
| download | enigma2-ff84dc4ee5f57e24a0777930d5482ee4ff53da0e.tar.gz enigma2-ff84dc4ee5f57e24a0777930d5482ee4ff53da0e.zip | |
add bouquet support
Diffstat (limited to 'lib/dvb/db.h')
| -rw-r--r-- | lib/dvb/db.h | 48 |
1 files changed, 33 insertions, 15 deletions
diff --git a/lib/dvb/db.h b/lib/dvb/db.h index 604d5288..265c5970 100644 --- a/lib/dvb/db.h +++ b/lib/dvb/db.h @@ -1,21 +1,17 @@ #ifndef __db_h #define __db_h +#include <lib/base/eptrlist.h> #include <lib/dvb/idvb.h> #include <set> class ServiceDescriptionSection; -struct eDVBBouquet -{ - std::vector<eServiceReferenceDVB> m_services; - int lookupService(eServiceReferenceDVB &ref); -}; - class eDVBDB: public iDVBChannelList { DECLARE_REF(eDVBDB); friend class eDVBDBQuery; + friend class eDVBDBBouquetQuery; private: struct channel { @@ -26,10 +22,16 @@ private: std::map<eServiceReferenceDVB, ePtr<eDVBService> > m_services; - std::map<eServiceReference, eDVBBouquet> m_bouquets; + std::map<std::string, eBouquet> m_bouquets; public: void load(); void save(); + + void loadBouquet(const char *path); + void saveBouquet(const char *path); + void loadBouquets(); + void saveBouquets(); + eDVBDB(); virtual ~eDVBDB(); @@ -40,24 +42,40 @@ public: RESULT addService(const eServiceReferenceDVB &service, eDVBService *service); RESULT getService(const eServiceReferenceDVB &reference, ePtr<eDVBService> &service); - - RESULT startQuery(ePtr<iDVBChannelListQuery> &query, eDVBChannelQuery *query); + + RESULT startQuery(ePtr<iDVBChannelListQuery> &query, eDVBChannelQuery *query, const eServiceReference &source); + + RESULT getBouquet(const eServiceReference &ref, const eBouquet* &bouquet); }; // we have to add a possibility to invalidate here. -class eDVBDBQuery: public iDVBChannelListQuery +class eDVBDBQueryBase: public iDVBChannelListQuery { -DECLARE_REF(eDVBDBQuery); -private: +DECLARE_REF(eDVBDBQueryBase); +protected: std::map<eServiceReferenceDVB, ePtr<eDVBService> >::iterator m_cursor; ePtr<eDVBDB> m_db; ePtr<eDVBChannelQuery> m_query; eServiceReference m_source; public: - eDVBDBQuery(eDVBDB *db, const eServiceReference &source, eDVBChannelQuery *query); - virtual RESULT getNextResult(eServiceReferenceDVB &ref); - + eDVBDBQueryBase(eDVBDB *db, const eServiceReference &source, eDVBChannelQuery *query); int compareLessEqual(const eServiceReferenceDVB &a, const eServiceReferenceDVB &b); }; +class eDVBDBQuery: public eDVBDBQueryBase +{ + std::map<eServiceReferenceDVB, ePtr<eDVBService> >::iterator m_cursor; +public: + eDVBDBQuery(eDVBDB *db, const eServiceReference &source, eDVBChannelQuery *query); + RESULT getNextResult(eServiceReferenceDVB &ref); +}; + +class eDVBDBBouquetQuery: public eDVBDBQueryBase +{ + std::list<eServiceReference>::iterator m_cursor; +public: + eDVBDBBouquetQuery(eDVBDB *db, const eServiceReference &source, eDVBChannelQuery *query); + RESULT getNextResult(eServiceReferenceDVB &ref); +}; + #endif |
