Boost logo

Boost :

From: Jim (kctan_tw_at_[hidden])
Date: 2003-10-29 00:57:15

I have written a tool to adapt old properties class, for example:

typedef BOOL int;

struct OldProperties
BOOL bFoo;

and we can adapt it like this:

class new_properties
new_properties() : foo(old_prop.bFoo) {}

boost::property_adapter<bool, BOOL> foo;

OldProperties old_prop;
new_properties new_prop;

then we can set and get property as follow: = true;
bool foo =;

We can decide the read/write policy like this:

boost::property_adapter<bool, BOOL, boost::read_only_tag> read_only_foo;
boost::property_adapter<bool, BOOL, boost::write_only_tag> write_only_foo;

default the policy tag is read_write_tag.

We also can decide what the get and set operation are:

struct bool_to_BOOL
BOOL operator()(bool src) const
return src ? 1 : 0;
struct BOOL_to_bool
bool operator()(BOOL src) const
return !!src;

boost::property_adapter<bool, BOOL, boost::read_write_tag, bool_to_BOOL,
BOOL_to_bool> foo;

If we cannot decide what type the source is, we can write as follow:

boost::any_property_adapter<BOOL> foo;

and we can use all features of property_adapter like this:

boost::property_adapter<BOOL, boost::read_write_tag, bool_to_BOOL,
BOOL_to_bool> foo;

Boost list run by bdawes at, gregod at, cpdaniel at, john at