#include <vector>
#include <sigc++/signal.h>
#include <msp/strings/lexicalcast.h>
+#include "mspgltk_api.h"
namespace Msp {
namespace GLtk {
-class ListData
+class MSPGLTK_API ListData
{
public:
sigc::signal<void, unsigned> signal_item_added;
sigc::signal<void, unsigned> 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;
protected:
std::vector<T> items;
- ListDataStore() { }
+ ListDataStore() = default;
public:
void append(const T &v) { insert(items.size(), v); }
- void insert(unsigned i, const T & v)
+ void insert(unsigned i, const T &v)
{
if(i>items.size())
throw std::out_of_range("ListDataStore::insert");
signal_cleared.emit();
}
- virtual unsigned size() const { return items.size(); }
+ unsigned size() const override { return items.size(); }
};
template<typename T>
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(unsigned i) const override
{ return func(this->get(i)); }
};