inlib  1.2.0
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes
inlib::sg::group Class Reference
Inheritance diagram for inlib::sg::group:
Inheritance graph
[legend]
Collaboration diagram for inlib::sg::group:
Collaboration graph
[legend]

List of all members.

Public Member Functions

virtual void * cast (const std::string &a_class) const
virtual nodecopy () const
virtual const std::string & s_cls () const
virtual void render (render_action &a_action)
virtual void pick (pick_action &a_action)
virtual void bbox (bbox_action &a_action)
virtual void event (event_action &a_action)
virtual void search (search_action &a_action)
virtual bool write (write_action &a_action)
 group ()
virtual ~group ()
 group (const group &a_from)
groupoperator= (const group &a_from)
void add (node *a_node)
void set (unsigned a_index, node *a_node)
void clear ()
unsigned int size () const
bool empty () const
nodeoperator[] (unsigned int a_index) const
const std::vector< node * > & children () const

Static Public Member Functions

static const std::string & s_class ()

Protected Member Functions

bool write_children (write_action &a_action)

Protected Attributes

std::vector< node * > m_children

Detailed Description

Definition at line 18 of file group.


Constructor & Destructor Documentation

inlib::sg::group::group ( ) [inline]

Definition at line 73 of file group.

{}
virtual inlib::sg::group::~group ( ) [inline, virtual]

Definition at line 74 of file group.

{clear();}
inlib::sg::group::group ( const group a_from) [inline]

Definition at line 76 of file group.

  :node(a_from)
  {
    std::vector<node*>::const_iterator it;
    for(it=a_from.m_children.begin();it!=a_from.m_children.end();++it) {
      m_children.push_back((*it)->copy());
    }    
  }

Member Function Documentation

void inlib::sg::group::add ( node a_node) [inline]

Definition at line 94 of file group.

                         {
    //WARNING :  take ownership of a_node.
    m_children.push_back(a_node);
  }
virtual void inlib::sg::group::bbox ( bbox_action a_action) [inline, virtual]

Reimplemented from inlib::sg::node.

Reimplemented in inlib::sg::_switch.

Definition at line 46 of file group.

                                           {
    std::vector<node*>::iterator it;
    for(it=m_children.begin();it!=m_children.end();++it) {
      (*it)->bbox(a_action);
    }
  }
virtual void* inlib::sg::group::cast ( const std::string &  a_class) const [inline, virtual]

Reimplemented from inlib::sg::node.

Definition at line 25 of file group.

                                                     {
    if(void* p = inlib::cmp_cast<group>(this,a_class)) {return p;}
    return node::cast(a_class);
  }
const std::vector<node*>& inlib::sg::group::children ( ) const [inline]

Definition at line 138 of file group.

{return m_children;}
void inlib::sg::group::clear ( ) [inline]

Definition at line 123 of file group.

              {
    std::vector<node*>::iterator it;
    for(it=m_children.begin();it!=m_children.end();) {
      node* child = *it;
      it = m_children.erase(it);
      delete child;
    }    
    m_children.clear();
  }
virtual node* inlib::sg::group::copy ( ) const [inline, virtual]

Implements inlib::sg::node.

Definition at line 30 of file group.

{return new group(*this);}
bool inlib::sg::group::empty ( ) const [inline]

Definition at line 133 of file group.

{return m_children.size()?false:true;}
virtual void inlib::sg::group::event ( event_action a_action) [inline, virtual]

Reimplemented from inlib::sg::node.

Reimplemented in inlib::sg::_switch.

Definition at line 52 of file group.

                                             {
    std::vector<node*>::iterator it;
    for(it=m_children.begin();it!=m_children.end();++it) {
      (*it)->event(a_action);
      //if(a_action.handled()) break; //do not stop if handled.
    }
  }
group& inlib::sg::group::operator= ( const group a_from) [inline]

Definition at line 84 of file group.

                                       {
    node::operator=(a_from);
    clear();
    std::vector<node*>::const_iterator it;
    for(it=a_from.m_children.begin();it!=a_from.m_children.end();++it) {
      m_children.push_back((*it)->copy());
    }    
    return *this;
  }
node* inlib::sg::group::operator[] ( unsigned int  a_index) const [inline]

Definition at line 134 of file group.

                                              {
    //WARNING : no check is done on a_index.
    return m_children[a_index];    
  }
virtual void inlib::sg::group::pick ( pick_action a_action) [inline, virtual]

Reimplemented from inlib::sg::node.

Reimplemented in inlib::sg::_switch.

Definition at line 39 of file group.

                                           {
    std::vector<node*>::iterator it;
    for(it=m_children.begin();it!=m_children.end();++it) {
      (*it)->pick(a_action);
      if(a_action.done()) break;
    }    
  }
virtual void inlib::sg::group::render ( render_action a_action) [inline, virtual]

Reimplemented from inlib::sg::node.

Reimplemented in inlib::sg::_switch.

Definition at line 33 of file group.

                                               {
    std::vector<node*>::iterator it;
    for(it=m_children.begin();it!=m_children.end();++it) {
      (*it)->render(a_action);
    }    
  }
static const std::string& inlib::sg::group::s_class ( ) [inline, static]

Reimplemented from inlib::sg::node.

Definition at line 20 of file group.

                                    {
    static const std::string s_v("inlib::sg::group");
    return s_v;
  }
virtual const std::string& inlib::sg::group::s_cls ( ) const [inline, virtual]

Implements inlib::sg::node.

Definition at line 31 of file group.

{return s_class();}
virtual void inlib::sg::group::search ( search_action a_action) [inline, virtual]

Reimplemented from inlib::sg::node.

Reimplemented in inlib::sg::_switch.

Definition at line 59 of file group.

                                               {
    std::vector<node*>::iterator it;
    for(it=m_children.begin();it!=m_children.end();++it) {
      (*it)->search(a_action);
      if(a_action.done()) break;
    }
  }
void inlib::sg::group::set ( unsigned  a_index,
node a_node 
) [inline]

Definition at line 98 of file group.

                                          {
    //WARNING :  take ownership of a_node.
    //WARNING : no check is done on a_index.
    m_children[a_index] = a_node;
  }
unsigned int inlib::sg::group::size ( ) const [inline]

Definition at line 132 of file group.

{return m_children.size();}
virtual bool inlib::sg::group::write ( write_action a_action) [inline, virtual]

Reimplemented from inlib::sg::node.

Definition at line 66 of file group.

                                             {
    if(!a_action.beg_node(*this)) return false;
    if(!write_children(a_action)) return false;
    if(!a_action.end_node(*this)) return false;
    return true;
  }
bool inlib::sg::group::write_children ( write_action a_action) [inline, protected]

Definition at line 140 of file group.

                                              {
    std::vector<node*>::iterator it;
    for(it=m_children.begin();it!=m_children.end();++it) {
      if(!(*it)->write(a_action)) return false;
    }
    return true;
  }

Member Data Documentation

std::vector<node*> inlib::sg::group::m_children [protected]

Definition at line 148 of file group.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines