Jafar
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Classes | Namespaces | Defines
parents.hpp File Reference

Detailed Description

Date:
19/04/2010
Author:
nmansard

Definition in file parents.hpp.

Go to the source code of this file.

Classes

class  jafar::rtslam::ParentOf< Child >
class  jafar::rtslam::ChildOf< Parent >
class  jafar::rtslam::SpecificChildOf< Parent >
class  jafar::rtslam::WeakParentOf< Child >
class  jafar::rtslam::WeakParentOf< Child >::generic_iterator< basic_iterator >
struct  jafar::rtslam::WeakParentOf< Child >::WeakPtrComparison

Namespaces

namespace  jafar
 

Transport info from GDAL Datasets to Bands' internal data.


namespace  jafar::rtslam
 

Namespace rtslam for real-time slam module.


Defines

#define ENABLE_ACCESS_TO_CHILDREN(Child, typeName, accessName)
#define ENABLE_LINK_TO_FATHER(Parent, Child)
#define ENABLE_LINK_TO_PARENT(Parent, name, Child)
#define ENABLE_ACCESS_TO_FATHER(Parent)
#define ENABLE_ACCESS_TO_PARENT(Parent, accessName)
#define ENABLE_LINK_TO_SPECIFIC_FATHER(ParentGen, ParentSpec, Child)
 Connect the link to the Parent, and register into parent.
#define ENABLE_LINK_TO_SPECIFIC_PARENT(ParentGen, ParentSpec, name, Child)
#define ENABLE_ACCESS_TO_SPECIFIC_PARENT(Parent, accessName)
#define ENABLE_ACCESS_TO_WEAK_CHILDREN(Child, typeName, accessName)
#define ENABLE_LINK_TO_WEAK_PARENT(Parent, Child)
#define UNREGISTER_FROM_WEAK_PARENT(Parent)
#define ENABLE_LINK_TO_WEAK_SPECIFIC_PARENT(ParentAbs, ParentSpec, ChildAbs, ChildSpec, name)
#define UNREGISTER_FROM_WEAK_SPECIFIC_PARENT(Parent, Child)

Define Documentation

#define ENABLE_ACCESS_TO_CHILDREN (   Child,
  typeName,
  accessName 
)
Value:
public: typedef ParentOf<Child>::ChildList typeName##List; \
  typeName##List & accessName##List( void )           \
  {  return ParentOf<Child>::childList; }     \
  const typeName##List & accessName##List( void ) const           \
  {  return ParentOf<Child>::childList; }     \

Definition at line 75 of file parents.hpp.

#define ENABLE_ACCESS_TO_FATHER (   Parent)
Value:
public: \
  boost::shared_ptr<Parent> father##Ptr( void )               \
  {  return ChildOf<Parent>::parentPtr(); }                   \
  const boost::shared_ptr<Parent> father##Ptr( void ) const               \
  {  return ChildOf<Parent>::parentPtr(); }                   \
  Parent& father( void )                                      \
  {    return ChildOf<Parent>::parent();  }                   \
  const Parent& father( void ) const                          \
  {    return ChildOf<Parent>::parent();  }

Definition at line 183 of file parents.hpp.

#define ENABLE_ACCESS_TO_PARENT (   Parent,
  accessName 
)
Value:
public: \
  boost::shared_ptr<Parent> accessName##Ptr( void )           \
  {  return ChildOf<Parent>::parentPtr(); }                   \
  const boost::shared_ptr<Parent> accessName##Ptr( void ) const           \
  {  return ChildOf<Parent>::parentPtr(); }                   \
  Parent& accessName( void )                                  \
  {    return ChildOf<Parent>::parent();  }                   \
  const Parent& accessName( void ) const                      \
  {    return ChildOf<Parent>::parent();  }

Definition at line 197 of file parents.hpp.

#define ENABLE_ACCESS_TO_SPECIFIC_PARENT (   Parent,
  accessName 
)
Value:
public: boost::shared_ptr<Parent> accessName##Ptr( void )       \
  {  return SpecificChildOf<Parent>::parentPtr(); }                 \
  Parent& accessName( void )                                        \
  {    return SpecificChildOf<Parent>::parent();  }                 \
  const Parent& accessName( void ) const                            \
  {    return SpecificChildOf<Parent>::parent();  }

Definition at line 326 of file parents.hpp.

#define ENABLE_ACCESS_TO_WEAK_CHILDREN (   Child,
  typeName,
  accessName 
)
Value:
public: typedef WeakParentOf<Child>::ChildList typeName##List;  \
  typeName##List & accessName##List( void )       \
  {  return WeakParentOf<Child>::childList; }       \
  const typeName##List & accessName##List( void ) const     \
  {  return WeakParentOf<Child>::childList; }

Definition at line 486 of file parents.hpp.

#define ENABLE_LINK_TO_FATHER (   Parent,
  Child 
)
Value:
public: void linkToParent( boost::shared_ptr<Parent> ptr )          \
  {                                                           \
    ChildOf<Parent>::linkToParent(ptr);                       \
    ptr->ParentOf<Child>::registerChild(shared_from_this());  \
  }

Definition at line 163 of file parents.hpp.

#define ENABLE_LINK_TO_PARENT (   Parent,
  name,
  Child 
)
Value:
public: void linkToParent##name( boost::shared_ptr<Parent> ptr )  \
  {                                                           \
    ChildOf<Parent>::linkToParent(ptr);                       \
    ptr->ParentOf<Child>::registerChild(shared_from_this());  \
  }

Definition at line 172 of file parents.hpp.

#define ENABLE_LINK_TO_SPECIFIC_FATHER (   ParentGen,
  ParentSpec,
  Child 
)
Value:
public: void linkToParent( const boost::shared_ptr<ParentGen>& ptr )       \
  {                                                                  \
    ChildOf<ParentGen>::linkToParent( ptr );                         \
    SpecificChildOf<ParentSpec>::linkToParentSpecific( ptr );        \
    ptr->ParentOf<Child>::registerChild(shared_from_this());         \
  } \
  void linkToParent( const boost::shared_ptr<ParentSpec>& ptr )      \
  {                                                                  \
    ChildOf<ParentGen>::linkToParent( ptr );                         \
    SpecificChildOf<ParentSpec>::linkToParentSpecific( ptr );        \
    ptr->ParentOf<Child>::registerChild(shared_from_this());         \
  }

Connect the link to the Parent, and register into parent.

To be defined as a public member of the child class. PRE:

  • The class <Parent> should be known at the call of the macros.
  • The child class (where the macro is called) should have enable_shared_from_this. The <Child> class is the real child, not the specific class (that is a SpecificChild). For example, the ObservationAHP is not the Child, but ObservationAbstract is.

Definition at line 295 of file parents.hpp.

#define ENABLE_LINK_TO_SPECIFIC_PARENT (   ParentGen,
  ParentSpec,
  name,
  Child 
)
Value:
public: void linkToParent##name( const boost::shared_ptr<ParentGen>& ptr )  \
  {                                                                             \
    ChildOf<ParentGen>::linkToParent( ptr );                                    \
    SpecificChildOf<ParentSpec>::linkToParentSpecific( ptr );                   \
    ptr->ParentOf<Child>::registerChild(shared_from_this());                    \
  }                                                                             \
  void linkToParent##name( const boost::shared_ptr<ParentSpec>& ptr )           \
  {                                                                             \
    ChildOf<ParentGen>::linkToParent( ptr );                                    \
    SpecificChildOf<ParentSpec>::linkToParentSpecific( ptr );                   \
    ptr->ParentOf<Child>::registerChild(shared_from_this());                    \
  }

Definition at line 309 of file parents.hpp.

#define ENABLE_LINK_TO_WEAK_PARENT (   Parent,
  Child 
)
Value:
void linkToWeakParent##Parent( boost::shared_ptr<Parent> ptr )  \
  {                 \
    ChildOf<Parent>::linkToParent(ptr);         \
    ptr->WeakParentOf<Child>::registerChild                             \
         (boost::enable_shared_from_this<Child>::shared_from_this()); \
  }

Definition at line 504 of file parents.hpp.

#define ENABLE_LINK_TO_WEAK_SPECIFIC_PARENT (   ParentAbs,
  ParentSpec,
  ChildAbs,
  ChildSpec,
  name 
)
Value:
void linkToWeakParent##name( boost::shared_ptr<ParentSpec> ptr )      \
  {                     \
    ChildOf<ParentSpec>::linkToParent(ptr);                                 \
    ptr->WeakParentOf<ChildSpec>::registerChild                             \
         (SPTR_CAST<ChildSpec>(shared_from_this()));      \
    ChildOf<ParentAbs>::linkToParent(ptr);                                  \
    ptr->WeakParentOf<ChildAbs>::registerChild(shared_from_this());         \
  }

Definition at line 565 of file parents.hpp.

#define UNREGISTER_FROM_WEAK_PARENT (   Parent)
Value:
try { ChildOf<Parent>::parentPtr()->cleanExpired(); } \
  catch(const char *e) { if (strcmp(e,"WEAK")) throw e; }

Definition at line 516 of file parents.hpp.

#define UNREGISTER_FROM_WEAK_SPECIFIC_PARENT (   Parent,
  Child 
)
Value:
try { ChildOf<Parent>::parentPtr()->WeakParentOf<Child>::cleanExpired(); } \
  catch(const char *e) { if (strcmp(e,"WEAK")) throw e; }

Definition at line 578 of file parents.hpp.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on Wed Oct 15 2014 00:37:29 for Jafar by doxygen 1.7.6.1
LAAS-CNRS