cgv
Loading...
Searching...
No Matches
cgv::base::base_generator Class Reference

implements a dynamic object, that can be composed of independent variables, which are handled as properties of the base_generator and published through the property interface of the base class. More...

#include <base_generator.h>

Inheritance diagram for cgv::base::base_generator:
cgv::base::base cgv::data::ref_counted cgv::reflect::self_reflection_tag

Public Member Functions

 ~base_generator ()
 during destruction free all memory allocated on heap
std::string get_type_name () const
 overload to return the type name of this object. By default the type interface is queried over get_type.
void add_void (const std::string &name, abst_property_access *apa)
 add a new property
template<typename T>
void add (const std::string &property, T &value)
 add a property by deriving property access from type of reference value
void del (const std::string &property)
 remove a property
bool changed (const std::string &property) const
 return whether property has changed
std::string get_property_declarations ()
 returns a semicolon separated list of property declarations
bool set_void (const std::string &property, const std::string &value_type, const void *value_ptr)
 abstract interface for the setter of a dynamic property.
bool get_void (const std::string &property, const std::string &value_type, void *value_ptr)
 abstract interface for the getter of a dynamic property.
Public Member Functions inherited from cgv::base::base
virtual std::string get_default_options () const
 overload to provide default options for registration
std::string get_name_or_type_name () const
 determine name of instance by checking cgv::base::named interface and in failure fallback to get_type_name()
virtual void on_register ()
 overload to handle register events that is sent after the instance has been registered
virtual void unregister ()
 overload to handle unregistration of instances
virtual bool on_exit_request ()
 overload to handle the appication exit request, return true if exiting is allowed and false otherwise
virtual void stream_stats (std::ostream &)
 overload to show the content of this object
virtual data::ref_ptr< named, true > get_named ()
 perform downcast to named
virtual data::ref_ptr< node, true > get_node ()
 perform downcast to node
virtual data::ref_ptr< group, true > get_group ()
 perform downcast to group
virtual data::ref_ptr< const named, true > get_named_const () const
 perform downcast to const named
virtual data::ref_ptr< const node, true > get_node_const () const
 perform downcast to const node
virtual data::ref_ptr< const group, true > get_group_const () const
 perform downcast to const group
template<class T>
data::ref_ptr< T, true > cast ()
 cast to arbitrary class, but use the casts to named, node and group from the interface
template<class T>
data::ref_ptr< const T, true > cast_const () const
 const cast to arbitrary class, but use the casts to named, node and group from the interface
template<class T>
T * get_interface ()
 use dynamic type cast to check for the given interface
template<class T>
const T * get_const_interface () const
 use dynamic type cast to check for the given interface
virtual void update ()
 this virtual update allows for example to ask a view to update the viewed value. The default implementation is empty.
virtual void * get_user_data () const
 this virtual method allows to pass application specific data for internal purposes
virtual bool self_reflect (cgv::reflect::reflection_handler &)
 used for simple self reflection
virtual void on_set (void *member_ptr)
 this callback is called when the set_void method has changed a member and can be overloaded in derived class
virtual bool call_void (const std::string &method, const std::vector< std::string > &param_value_types, const std::vector< const void * > &param_value_ptrs, const std::string &result_type="", void *result_value_ptr=0)
 abstract interface to call an action
void set (const std::string &property, const char *value)
 specialization of set method to support const char* as strings
template<typename T>
void set (const std::string &property, const T &value)
 set a property of the element to the given value and perform standard conversions if necessary.
template<typename T>
T get (const std::string &property)
 query a property of the element and perform standard conversions if necessary.
void multi_set (const std::string &property_assignments, bool report_error=true)
 set several properties
bool is_property (const std::string &property_name, std::string *type_name=0)
 check if the given name specifies a property.
void * find_member_ptr (const std::string &property_name, std::string *type_name=0)
 find a member pointer by name.
Public Member Functions inherited from cgv::data::ref_counted
int get_ref_count () const
 read access to current count

Protected Types

typedef std::map< std::string, abst_property_access * > map_type
typedef map_type::iterator iter_type
typedef map_type::const_iterator const_iter_type

Protected Attributes

map_type property_map
 store the properties as map from property name to type and pointer to instance

Additional Inherited Members

Protected Member Functions inherited from cgv::base::base
virtual ~base ()
 make destructor virtual and not accessible from outside
Protected Member Functions inherited from cgv::data::ref_counted
 ref_counted ()
 constructor initializes the count to 0
void set_ref_count (int c) const
 write access is also const to allow ref counted pointers to const instances
Static Protected Member Functions inherited from cgv::base::base
template<class T>
static data::ref_ptr< T, true > cast_dynamic (base *b)
 use dynamic cast for downcast to given class

Detailed Description

implements a dynamic object, that can be composed of independent variables, which are handled as properties of the base_generator and published through the property interface of the base class.

Definition at line 85 of file base_generator.h.

Member Typedef Documentation

◆ const_iter_type

typedef map_type::const_iterator cgv::base::base_generator::const_iter_type
protected

Definition at line 90 of file base_generator.h.

◆ iter_type

typedef map_type::iterator cgv::base::base_generator::iter_type
protected

Definition at line 89 of file base_generator.h.

◆ map_type

typedef std::map<std::string, abst_property_access*> cgv::base::base_generator::map_type
protected

Definition at line 88 of file base_generator.h.

Constructor & Destructor Documentation

◆ ~base_generator()

cgv::base::base_generator::~base_generator ( )

during destruction free all memory allocated on heap

Definition at line 26 of file base_generator.cxx.

References property_map.

Member Function Documentation

◆ add()

template<typename T>
void cgv::base::base_generator::add ( const std::string & property,
T & value )
inline

add a property by deriving property access from type of reference value

Definition at line 102 of file base_generator.h.

References add_void().

Referenced by cgv::base::has_property().

◆ add_void()

void cgv::base::base_generator::add_void ( const std::string & name,
abst_property_access * apa )

add a new property

Definition at line 13 of file base_generator.cxx.

References property_map.

Referenced by add().

◆ changed()

bool cgv::base::base_generator::changed ( const std::string & property) const

return whether property has changed

Definition at line 46 of file base_generator.cxx.

References property_map.

Referenced by cgv::base::has_property().

◆ del()

void cgv::base::base_generator::del ( const std::string & property)

remove a property

Definition at line 36 of file base_generator.cxx.

References property_map.

◆ get_property_declarations()

std::string cgv::base::base_generator::get_property_declarations ( )
virtual

returns a semicolon separated list of property declarations

Reimplemented from cgv::base::base.

Definition at line 55 of file base_generator.cxx.

References property_map.

◆ get_type_name()

std::string cgv::base::base_generator::get_type_name ( ) const
virtual

overload to return the type name of this object. By default the type interface is queried over get_type.

Reimplemented from cgv::base::base.

Definition at line 7 of file base_generator.cxx.

◆ get_void()

bool cgv::base::base_generator::get_void ( const std::string & property,
const std::string & value_type,
void * value_ptr )
virtual

abstract interface for the getter of a dynamic property.

Reimplemented from cgv::base::base.

Definition at line 76 of file base_generator.cxx.

References property_map.

◆ set_void()

bool cgv::base::base_generator::set_void ( const std::string & property,
const std::string & value_type,
const void * value_ptr )
virtual

abstract interface for the setter of a dynamic property.

Reimplemented from cgv::base::base.

Definition at line 67 of file base_generator.cxx.

References property_map.

Member Data Documentation

◆ property_map

map_type cgv::base::base_generator::property_map
protected

store the properties as map from property name to type and pointer to instance

Definition at line 92 of file base_generator.h.

Referenced by add_void(), changed(), del(), get_property_declarations(), get_void(), set_void(), and ~base_generator().


The documentation for this class was generated from the following files: