|
Boost : |
From: John Torjo (john.lists_at_[hidden])
Date: 2004-11-12 14:30:18
>
> I do apologize if this is all plainly obvious to some people, but I'm
> having difficulty getting it through my thick skull.
>
// simple example
struct property_holder_base {
virtual ~property_holder_base() {}
};
template<class m_class, class m_type>
struct get_member_property_holder {
typedef ... func;
get_member_propert_holder(func f) : f(f) {}
func f;
};
template<class m_class, class m_type>
struct set_member_property_holder {
typedef ... func;
set_member_propert_holder(func f) : f(f) {}
func f;
};
struct reflected_property {
// templated constructor
template<class m_class, class m_type>
reflected_property(
m_type (m_class::*getter)() const,
void (m_class::*setter)(m_type),
const std::string & name) {
s_getters[name] = ptr(new ...(getter));
s_setters[name] = ptr(new ...(setter));
}
typedef boost::shared_ptr<property_holder_base> ptr;
static std::map<std::string,ptr> s_getters;
static std::map<std::string,ptr> s_setters;
};
struct window {
bool is_enabled() const;
void enable(bool);
};
// define a global static
namespace {
reflected_property
r(&window::is_enabled,&window::enable,"window::enabled");
}
Best,
John
-- John Torjo, Contributing editor, C/C++ Users Journal -- "Win32 GUI Generics" -- generics & GUI do mix, after all -- http://www.torjo.com/win32gui/ -- v1.5 - tooltips at your fingertips (work for menus too!) + bitmap buttons (work for MessageBox too!) + tab dialogs, hyper links, lite html
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk