winamp/Src/Plugins/Library/ml_wire/Wire.h

62 lines
1.6 KiB
C++

#ifndef NULLSOFT_WIREH
#define NULLSOFT_WIREH
#include "Feeds.h"
#include "../nu/AutoLock.h"
#include "api_podcasts.h"
#include <vector>
class ChannelList : public api_podcasts
{
public:
ChannelList() : channelGuard( "Feed Guard" ) {}
typedef std::vector<Channel> ChannelContainer;
typedef ChannelContainer::iterator iterator;
size_t size() { return channelList.size(); }
bool empty() { return channelList.empty(); }
void push_back( const Channel &channel );
bool AddChannel( Channel &channel );
iterator begin() { return channelList.begin(); }
iterator end() { return channelList.end(); }
void RemoveChannel( int index ) { channelList.erase( channelList.begin() + index ); }
Channel &operator[]( size_t index ) { return channelList[ index ]; }
ChannelContainer channelList;
operator Nullsoft::Utility::LockGuard &( ) { return channelGuard; }
void SortByTitle();
Nullsoft::Utility::LockGuard channelGuard;
public: // api_podcasts interface
size_t GetNumPodcasts();
ifc_podcast *EnumPodcast( size_t i );
protected:
RECVS_DISPATCH;
};
extern ChannelList channels;
//extern CategoryIndex sourceByCategory;
#include "ChannelSync.h"
class WireManager : public ChannelSync
{
public:
void BeginChannelSync();
void NewChannel( const Channel &newChannel );
void EndChannelSync();
};
extern WireManager channelMgr;
#endif