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

The group class is a node with children. More...

#include <group.h>

Inheritance diagram for cgv::base::group:
cgv::base::node cgv::base::named cgv::base::base cgv::data::ref_counted cgv::reflect::self_reflection_tag cgv::gui::gui_group cgv::gui::window

Public Member Functions

 group (const std::string &name="")
 construct from name
unsigned int get_nr_children () const
 return the number of children
base_ptr get_child (unsigned int i) const
 return the i-th child
template<typename T>
data::ref_ptr< T > create_and_append_child (const std::string &name="", unsigned int *index=nullptr)
 create and append an instance of a child node and return pointer to appended child; optionally set name and get index
virtual unsigned int append_child (base_ptr child)
 append child and return index of appended child
virtual unsigned int remove_child (base_ptr child)
 remove all elements of the vector that point to child, return the number of removed children
virtual void remove_all_children ()
 remove all children
virtual void insert_child (unsigned int i, base_ptr child)
 insert a child at the given position
group_ptr get_group () override
 cast upward to group
const_group_ptr get_group_const () const override
 cast upward to const group
std::string get_type_name () const override
 overload to return the type name of this object
Public Member Functions inherited from cgv::base::node
 node (const std::string &name="")
 construct from name
node_ptr get_parent () const
 return the parent node
base_ptr get_root () const
 return the root node by traversing parents until no more parent is available
void set_parent (node_ptr _parent)
 set a new parent node
node_ptr get_node () override
 cast upward to node
const_node_ptr get_node_const () const override
 cast upward to const node
std::string get_type_name () const override
 overload to return the type name of this object
Public Member Functions inherited from cgv::base::named
 named (const std::string &name="")
 construct from name
const std::string & get_name () const
 return the parent node
void set_name (const std::string &_name)
 set a new parent node
named_ptr get_named () override
 cast upward to named
const_named_ptr get_named_const () const override
 cast upward to const named
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
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 std::string get_property_declarations ()
 return a semicolon separated list of property declarations
virtual 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.
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 get_void (const std::string &property, const std::string &value_type, void *value_ptr)
 abstract interface for the getter of a dynamic property.
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 Member Functions

void link (base_ptr b)
 check if the base class is a node and set the parent of the node
void unlink (base_ptr b)
 check if the base class is a node and clear the parent of the node
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

Protected Attributes

std::vector< base_ptr > children
 store a list of children
Protected Attributes inherited from cgv::base::node
node_ptr parent
 store a pointer to the parent node
Protected Attributes inherited from cgv::base::named
std::string name
 store the name as a string

Friends

class data::ref_ptr< group, true >
 declare group_ptr to be a friend class

Additional Inherited Members

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

The group class is a node with children.

Definition at line 19 of file group.h.

Constructor & Destructor Documentation

◆ group()

cgv::base::group::group ( const std::string & name = "")

construct from name

Definition at line 7 of file group.cxx.

References cgv::base::node::node().

Referenced by data::ref_ptr< group, true >, and cgv::gui::gui_group::gui_group().

Member Function Documentation

◆ append_child()

unsigned int cgv::base::group::append_child ( base_ptr child)
virtual

append child and return index of appended child

Definition at line 41 of file group.cxx.

References children, get_nr_children(), and link().

Referenced by cgv::gui::event_handler::add_key_control(), and create_and_append_child().

◆ create_and_append_child()

template<typename T>
data::ref_ptr< T > cgv::base::group::create_and_append_child ( const std::string & name = "",
unsigned int * index = nullptr )
inline

create and append an instance of a child node and return pointer to appended child; optionally set name and get index

Definition at line 39 of file group.h.

References append_child(), and cgv::base::named::name.

◆ get_child()

◆ get_group()

group_ptr cgv::base::group::get_group ( )
overridevirtual

cast upward to group

Reimplemented from cgv::base::base.

Definition at line 78 of file group.cxx.

◆ get_group_const()

const_group_ptr cgv::base::group::get_group_const ( ) const
overridevirtual

cast upward to const group

Reimplemented from cgv::base::base.

Definition at line 82 of file group.cxx.

◆ get_nr_children()

unsigned int cgv::base::group::get_nr_children ( ) const

return the number of children

Definition at line 29 of file group.cxx.

References children.

Referenced by append_child(), cgv::render::gl::gl_context::configure_gl(), cgv::gui::gui_group::find_element(), and cgv::base::grab_focus().

◆ get_type_name()

std::string cgv::base::group::get_type_name ( ) const
overridevirtual

overload to return the type name of this object

Reimplemented from cgv::base::base.

Reimplemented in cgv::gui::gui_group, and cgv::gui::window.

Definition at line 86 of file group.cxx.

Referenced by get_child().

◆ insert_child()

void cgv::base::group::insert_child ( unsigned int i,
base_ptr child )
virtual

insert a child at the given position

Definition at line 66 of file group.cxx.

References children, and link().

◆ link()

void cgv::base::group::link ( base_ptr b)
protected

check if the base class is a node and set the parent of the node

Definition at line 10 of file group.cxx.

References cgv::data::ref_ptr< T, is_ref_counted >::empty().

Referenced by append_child(), and insert_child().

◆ remove_all_children()

void cgv::base::group::remove_all_children ( )
virtual

remove all children

Definition at line 60 of file group.cxx.

References children, and unlink().

◆ remove_child()

unsigned int cgv::base::group::remove_child ( base_ptr child)
virtual

remove all elements of the vector that point to child, return the number of removed children

Definition at line 47 of file group.cxx.

References children, and unlink().

◆ unlink()

void cgv::base::group::unlink ( base_ptr b)
protected

check if the base class is a node and clear the parent of the node

Definition at line 17 of file group.cxx.

References cgv::data::ref_ptr< T, is_ref_counted >::empty().

Referenced by remove_all_children(), and remove_child().

◆ data::ref_ptr< group, true >

friend class data::ref_ptr< group, true >
friend

declare group_ptr to be a friend class

Definition at line 19 of file group.h.

References group(), and cgv::base::node::node().

Member Data Documentation

◆ children

std::vector<base_ptr> cgv::base::group::children
protected

store a list of children

Definition at line 25 of file group.h.

Referenced by append_child(), get_child(), get_nr_children(), insert_child(), remove_all_children(), and remove_child().


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