#ifndef bot_h #define bot_h #include #include #include #include #include "supported.h" #include "capability.h" #include "client.h" #include "message.h" #include "value.h" namespace eir { class Bot : public paludis::PrivateImplementationPattern { public: Bot(std::string name); void connect(std::string host, std::string port, std::string nick, std::string pass); const std::string& nick() const; const std::string& name() const; const Client::ptr me() const; void run(); void disconnect(std::string); bool connected() const; void send(std::string); struct ClientIteratorTag; typedef paludis::WrappedForwardIterator ClientIterator; ClientIterator begin_clients(); ClientIterator end_clients(); ClientIterator find_client_it(std::string nick); Client::ptr find_client(std::string nick); std::pair add_client(Client::ptr c); unsigned long remove_client(Client::ptr c); struct ChannelIteratorTag; typedef paludis::WrappedForwardIterator ChannelIterator; ChannelIterator begin_channels(); ChannelIterator end_channels(); ChannelIterator find_channel_it(std::string name); Channel::ptr find_channel(std::string name); std::pair add_channel(Channel::ptr c); unsigned long remove_channel(Channel::ptr c); void remove_channel(ChannelIterator c); struct SettingsIteratorTag; typedef paludis::WrappedForwardIterator > SettingsIterator; SettingsIterator begin_settings(); SettingsIterator end_settings(); SettingsIterator find_setting(std::string name); Value get_setting(std::string name); Value get_setting_with_default(std::string name, std::string _default); std::pair add_setting(std::string n, Value v); unsigned long remove_setting(std::string n); void remove_setting(SettingsIterator it); const ISupport *supported() const; Capabilities *capabilities(); bool use_account_tracking() const; ~Bot(); }; class BotManager : public paludis::InstantiationPolicy, public paludis::PrivateImplementationPattern { public: friend class Bot; Bot *find(std::string name); BotManager(); ~BotManager(); }; } #endif