PropertiedClass.hpp File Reference

#include "dmtool/DMObject.hpp"
#include "libecs.hpp"

Include dependency graph for PropertiedClass.hpp:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  libecs

Classes

class  libecs::PropertiedClass
 Common base class for classes with PropertySlots. More...

Defines

#define LIBECS_DM_CLASS(CLASSNAME, BASE)
#define LIBECS_DM_OBJECT_ABSTRACT(CLASSNAME)
#define LIBECS_DM_OBJECT(CLASSNAME, DMTYPE)
#define LIBECS_DM_BASECLASS(CLASSNAME)   DM_BASECLASS( CLASSNAME )
#define LIBECS_DM_INIT(CLASSNAME, DMTYPE)
#define LIBECS_DM_INIT_STATIC(CLASSNAME, DMTYPE)
#define LIBECS_DM_OBJECT_DEF(CLASSNAME, DMTYPE)
 

For internal use only.


#define LIBECS_DM_OBJECT_DEF_ABSTRACT(CLASSNAME)
#define LIBECS_DM_EXPOSE_PROPERTYINTERFACE(CLASSNAME)
 

For internal use only.


#define INHERIT_PROPERTIES(BASECLASS)
#define CLASS_DESCRIPTION(DESCRIPTION)   CLASS_INFO( "Description", DESCRIPTION )
#define NOMETHOD   NULLPTR
#define CLASSINFO_TRUE   1
#define CLASSINFO_FALSE   0
#define METHODFLAG(METHODPTR, NULLVALUE)   METHODFLAG2( METHODPTR, NULLVALUE )
#define METHODFLAG2(METHODPTR, NULLVALUE)   ( # METHODPTR == # NULLVALUE ? CLASSINFO_FALSE : CLASSINFO_TRUE )
#define CLASS_INFO(FIELDNAME, FIELDVALUE)   PropertyInterface<TT>::setInfoField( String ( FIELDNAME ), String( FIELDVALUE ) )
 macro for setting class Info string Info is expected as PropertyName, Value both Strings Property descriptor strings
#define CLASSPROPERTY_INFO(PROPERTYNAME, TYPE, SETMETHOD, GETMETHOD, SAVEMETHOD, LOADMETHOD)
 macro for setting Property class info PropertyName, Type, set_flag, get_flag, save_flag, load_flag
#define PROPERTYSLOT(TYPE, NAME, SETMETHOD, GETMETHOD)
#define PROPERTYSLOT_LOAD_SAVE(TYPE, NAME, SETMETHOD, GETMETHOD, LOADMETHOD, SAVEMETHOD)
#define PROPERTYSLOT_NO_LOAD_SAVE(TYPE, NAME, SETMETHOD, GETMETHOD)
#define PROPERTYSLOT_SET_GET(TYPE, NAME)
#define PROPERTYSLOT_SET(TYPE, NAME)
#define PROPERTYSLOT_GET(TYPE, NAME)
#define PROPERTYSLOT_SET_GET_NO_LOAD_SAVE(TYPE, NAME)
#define PROPERTYSLOT_SET_NO_LOAD_SAVE(TYPE, NAME)
#define PROPERTYSLOT_GET_NO_LOAD_SAVE(TYPE, NAME)
#define LIBECS_DM_DEFINE_PROPERTIES()
 

For internal use only.


#define SET_SLOT(TYPE, METHODNAME)   void METHODNAME( libecs::Param<TYPE>::type value )
#define GET_SLOT(TYPE, METHODNAME)   const TYPE METHODNAME() const
#define SET_SLOT_DEF(TYPE, METHODNAME, CLASS)   SET_SLOT( TYPE, CLASS::METHODNAME )
#define GET_SLOT_DEF(TYPE, METHODNAME, CLASS)   GET_SLOT( TYPE, CLASS::METHODNAME )
#define SET_METHOD(TYPE, NAME)   SET_SLOT( TYPE, set ## NAME )
#define GET_METHOD(TYPE, NAME)   GET_SLOT( TYPE, get ## NAME )
#define LOAD_METHOD(TYPE, NAME)   SET_SLOT( TYPE, load ## NAME )
#define SAVE_METHOD(TYPE, NAME)   GET_SLOT( TYPE, save ## NAME )
#define SET_METHOD_DEF(TYPE, NAME, CLASS)   SET_SLOT_DEF( TYPE, set ## NAME, CLASS )
#define GET_METHOD_DEF(TYPE, NAME, CLASS)   GET_SLOT_DEF( TYPE, get ## NAME, CLASS )
#define LOAD_METHOD_DEF(TYPE, NAME, CLASS)   SET_SLOT_DEF( TYPE, load ## NAME, CLASS )
#define SAVE_METHOD_DEF(TYPE, NAME, CLASS)   GET_SLOT_DEF( TYPE, save ## NAME, CLASS )
#define SIMPLE_GET_METHOD(TYPE, NAME)
#define SIMPLE_SET_METHOD(TYPE, NAME)
#define SIMPLE_SET_GET_METHOD(TYPE, NAME)
#define NULLSET_SPECIALIZATION(TYPE)   template <> ECELL_API void PropertiedClass::nullSet<TYPE>( Param<TYPE>::type )
#define NULLGET_SPECIALIZATION(TYPE)   template <> ECELL_API const TYPE PropertiedClass::nullGet<TYPE>() const

Functions

 libecs::NULLSET_SPECIALIZATION (Real)
 libecs::NULLSET_SPECIALIZATION (Integer)
 libecs::NULLSET_SPECIALIZATION (String)
 libecs::NULLSET_SPECIALIZATION (Polymorph)
 libecs::NULLGET_SPECIALIZATION (Real)
 libecs::NULLGET_SPECIALIZATION (Integer)
 libecs::NULLGET_SPECIALIZATION (String)
 libecs::NULLGET_SPECIALIZATION (Polymorph)


Detailed Description


Define Documentation

#define CLASSPROPERTY_INFO ( PROPERTYNAME,
TYPE,
SETMETHOD,
GETMETHOD,
SAVEMETHOD,
LOADMETHOD   ) 

Value:

PropertyInterface<TT>::setPropertyInfoField( String( PROPERTYNAME ), String( TYPE ), \
                                                                                          METHODFLAG(SETMETHOD, NULLPTR ), METHODFLAG( GETMETHOD, NULLPTR ), \
METHODFLAG( SAVEMETHOD, NULLPTR ), METHODFLAG( LOADMETHOD, NULLPTR ) )
macro for setting Property class info PropertyName, Type, set_flag, get_flag, save_flag, load_flag

#define INHERIT_PROPERTIES ( BASECLASS   ) 

Value:

BASECLASS::initializePropertyInterface( Type2Type<TT>() );\
    CLASS_INFO( "Baseclass", # BASECLASS )

#define LIBECS_DM_CLASS ( CLASSNAME,
BASE   ) 

Value:

DECLARE_CLASS( CLASSNAME );\
  class CLASSNAME\
   :\
  public BASE

 
#define LIBECS_DM_DEFINE_PROPERTIES (  ) 

Value:

template<class TT>\
  static void initializePropertyInterface( Type2Type<TT> )

For internal use only.

#define LIBECS_DM_INIT ( CLASSNAME,
DMTYPE   ) 

Value:

DM_INIT( CLASSNAME, DMTYPE )\
  LIBECS_DM_INIT_STATIC( CLASSNAME, DMTYPE )

#define LIBECS_DM_INIT_STATIC ( CLASSNAME,
DMTYPE   ) 

Value:

template class PropertyInterface<CLASSNAME>;\
  libecs::PropertyInterface<CLASSNAME> CLASSNAME::thePropertyInterface

#define LIBECS_DM_OBJECT ( CLASSNAME,
DMTYPE   ) 

Value:

DM_OBJECT( CLASSNAME, DMTYPE );\
  LIBECS_DM_OBJECT_DEF( CLASSNAME, DMTYPE );\
  LIBECS_DM_EXPOSE_PROPERTYINTERFACE( CLASSNAME );\
  LIBECS_DM_DEFINE_PROPERTIES()

#define LIBECS_DM_OBJECT_ABSTRACT ( CLASSNAME   ) 

Value:

LIBECS_DM_OBJECT_DEF_ABSTRACT( CLASSNAME );\
  LIBECS_DM_EXPOSE_PROPERTYINTERFACE( CLASSNAME );\
  LIBECS_DM_DEFINE_PROPERTIES()

#define LIBECS_DM_OBJECT_DEF ( CLASSNAME,
DMTYPE   ) 

Value:

typedef DMTYPE _LIBECS_DMTYPE_;\
  LIBECS_DM_OBJECT_DEF_ABSTRACT( CLASSNAME )

For internal use only.

#define LIBECS_DM_OBJECT_DEF_ABSTRACT ( CLASSNAME   ) 

Value:

typedef CLASSNAME _LIBECS_CLASS_;\
  virtual StringLiteral getClassName() const { return XSTR( CLASSNAME ); }

#define PROPERTYSLOT ( TYPE,
NAME,
SETMETHOD,
GETMETHOD   ) 

Value:

PropertyInterface<TT>::registerPropertySlot( # NAME,\
         new ConcretePropertySlot<TT,TYPE>( SETMETHOD, GETMETHOD ) );\
CLASSPROPERTY_INFO( # NAME, # TYPE, SETMETHOD, GETMETHOD, SETMETHOD, GETMETHOD )

#define PROPERTYSLOT_GET ( TYPE,
NAME   ) 

Value:

PROPERTYSLOT( TYPE, NAME,\
                NULLPTR,\
                & _LIBECS_CLASS_::get ## NAME )

#define PROPERTYSLOT_GET_NO_LOAD_SAVE ( TYPE,
NAME   ) 

Value:

PROPERTYSLOT_NO_LOAD_SAVE( TYPE, NAME,\
                             NULLPTR,\
                             & _LIBECS_CLASS_::get ## NAME )

#define PROPERTYSLOT_LOAD_SAVE ( TYPE,
NAME,
SETMETHOD,
GETMETHOD,
LOADMETHOD,
SAVEMETHOD   ) 

Value:

PropertyInterface<TT>::registerPropertySlot( # NAME,\
         new LoadSaveConcretePropertySlot<TT,TYPE>( SETMETHOD, GETMETHOD,\
                                                    LOADMETHOD, SAVEMETHOD ) );\
CLASSPROPERTY_INFO( # NAME, # TYPE, SETMETHOD, GETMETHOD, SAVEMETHOD, LOADMETHOD )

#define PROPERTYSLOT_NO_LOAD_SAVE ( TYPE,
NAME,
SETMETHOD,
GETMETHOD   ) 

Value:

PROPERTYSLOT_LOAD_SAVE( TYPE, NAME, SETMETHOD, GETMETHOD,\
                                NULLPTR, NULLPTR )

#define PROPERTYSLOT_SET ( TYPE,
NAME   ) 

Value:

PROPERTYSLOT( TYPE, NAME,\
                & _LIBECS_CLASS_::set ## NAME,\
                NULLPTR )

#define PROPERTYSLOT_SET_GET ( TYPE,
NAME   ) 

Value:

PROPERTYSLOT( TYPE, NAME,\
                & _LIBECS_CLASS_::set ## NAME,\
                & _LIBECS_CLASS_::get ## NAME )

#define PROPERTYSLOT_SET_GET_NO_LOAD_SAVE ( TYPE,
NAME   ) 

Value:

PROPERTYSLOT_NO_LOAD_SAVE( TYPE, NAME,\
                             & _LIBECS_CLASS_::set ## NAME,\
                             & _LIBECS_CLASS_::get ## NAME )

#define PROPERTYSLOT_SET_NO_LOAD_SAVE ( TYPE,
NAME   ) 

Value:

PROPERTYSLOT_NO_LOAD_SAVE( TYPE, NAME,\
                             & _LIBECS_CLASS_::set ## NAME,\
                             NULLPTR )

#define SIMPLE_GET_METHOD ( TYPE,
NAME   ) 

Value:

GET_METHOD( TYPE, NAME )\
  {\
    return NAME;\
  }

#define SIMPLE_SET_GET_METHOD ( TYPE,
NAME   ) 

Value:

SIMPLE_SET_METHOD( TYPE, NAME )\
  SIMPLE_GET_METHOD( TYPE, NAME )

#define SIMPLE_SET_METHOD ( TYPE,
NAME   ) 

Value:

SET_METHOD( TYPE, NAME )\
  {\
    NAME = value;\
  }


Generated on Mon Dec 18 07:30:06 2006 for E-CELL C++ libraries (libecs and libemc) 3.1.105 by  doxygen 1.5.1