X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flistdata.h;h=cd4fb9a3f96b6c52e18b4804eadeb4ade61c8d0b;hb=aa9b8db38efb9e97460c76e27cecc4d1591b23e5;hp=4c02f44aed57a7f3d3ca3094c1924eb21a38c6e5;hpb=3f77f3542a6405fd832ababe48b950d1a65b00ed;p=libs%2Fgltk.git diff --git a/source/listdata.h b/source/listdata.h index 4c02f44..cd4fb9a 100644 --- a/source/listdata.h +++ b/source/listdata.h @@ -6,26 +6,27 @@ #include #include #include +#include "mspgltk_api.h" namespace Msp { namespace GLtk { -class ListData +class MSPGLTK_API ListData { public: - sigc::signal signal_item_added; - sigc::signal signal_item_removed; + sigc::signal signal_item_added; + sigc::signal signal_item_removed; sigc::signal signal_cleared; - sigc::signal signal_refresh_item; + sigc::signal signal_refresh_item; protected: - ListData() { } + ListData() = default; public: - virtual ~ListData() { } + virtual ~ListData() = default; - virtual unsigned size() const = 0; - virtual std::string get_string(unsigned) const = 0; - void refresh(unsigned i) const + virtual std::size_t size() const = 0; + virtual std::string get_string(std::size_t) const = 0; + void refresh(std::size_t i) const { if(i>=size()) throw std::out_of_range("ListData::refresh"); @@ -39,12 +40,12 @@ class ListDataStore: public ListData protected: std::vector items; - ListDataStore() { } + ListDataStore() = default; public: void append(const T &v) { insert(items.size(), v); } - void insert(unsigned i, const T & v) + void insert(std::size_t i, const T &v) { if(i>items.size()) throw std::out_of_range("ListDataStore::insert"); @@ -53,7 +54,7 @@ public: signal_item_added.emit(i); } - const T &get(unsigned i) const + const T &get(std::size_t i) const { if(i>=items.size()) throw std::out_of_range("ListDataStore::get"); @@ -61,23 +62,23 @@ public: return items[i]; } - int find(const T &v) const + std::size_t find(const T &v) const { - for(unsigned i=0; i::max(); } using ListData::refresh; void refresh(const T &v) const { - int i = find(v); - if(i>=0) + std::size_t i = find(v); + if(i=items.size()) throw std::out_of_range("ListDataStore::remove"); @@ -92,14 +93,14 @@ public: signal_cleared.emit(); } - virtual unsigned size() const { return items.size(); } + std::size_t size() const override { return items.size(); } }; template class BasicListData: public ListDataStore { public: - virtual std::string get_string(unsigned i) const + virtual std::string get_string(std::size_t i) const { return lexical_cast(this->get(i)); } }; @@ -110,12 +111,12 @@ public: typedef std::string Func(const T &); private: - Func *func; + Func *func = 0; public: FunctionListData(Func f): func(f) { } - virtual std::string get_string(unsigned i) const + std::string get_string(std::size_t i) const override { return func(this->get(i)); } };