Main Page   Modules   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

InterfaceRegistry.h File Reference

Classes for storing and accessing object interfaces. More...

#include <string>
#include <vector>
#include <map>
#include <SimData/Export.h>
#include <SimData/HashUtility.h>
#include <SimData/TypeAdapter.h>
#include <SimData/ObjectInterface.h>
#include <SimData/Namespace.h>
#include <SimData/Exception.h>

Go to the source code of this file.

Compounds

class  InterfaceProxy
 Base class for interface proxy classes. More...

class  InterfaceRegistry
 Singleton class to store and access all ObjectInterfaces in the application. More...

class  Singleton
 Creates a single, static instance of the templated class. More...


Defines

#define __SIMDATA_XML_INTERFACE_0(classname, baseinterface)
 interface macro 0

#define __SIMDATA_XML_INTERFACE_1(classname)
 interface macro 1 for normal classes

#define __SIMDATA_XML_INTERFACE_V(classname)
 interface macro 1 for abstract classes: no createObject

#define __SIMDATA_XML_INTERFACE_2(classname, baseinterface, nqbaseinterface)
 interface macro 2

#define BEGIN_SIMDATA_XML_INTERFACE(classname)
 Begin an interface declaration.

#define BEGIN_SIMDATA_XML_VIRTUAL_INTERFACE(classname)
 Begin an interface declaration for an abstract class.

#define EXTEND_SIMDATA_XML_INTERFACE(classname, basename)
 Extend an interface declaration.

#define EXTEND_SIMDATA_XML_VIRTUAL_INTERFACE(classname, basename)
 Extend an interface declaration for an abstract class.

#define SIMDATA_XML(id, var, req)   .def(id, &var, req)
 Declare a member variable accessible to external data sources.

#define SIMDATA_BIT(id, var, bit, req)   .def(id, &var, bit, req)
 Declare a bit-masked member variable accessible to external data sources.

#define END_SIMDATA_XML_INTERFACE
 End an object interface declaration.

#define SIMDATA_REGISTER_INTERFACE(classname)
 Register an object class interface.

#define SIMDATA_REGISTER_INNER_INTERFACE(prefix, classname)
 Register an object class interface declared within a named scope.


Variables

NAMESPACE_SIMDATA class Object


Detailed Description

Classes for storing and accessing object interfaces.


Define Documentation

#define __SIMDATA_XML_INTERFACE_0 classname,
baseinterface   
 

Value:

class classname##InterfaceProxy; \
friend class classname##InterfaceProxy; \
class classname##InterfaceProxy: public baseinterface \
{ \
        SIMDATA(ObjectInterface)<classname> *_interface; \
public:
interface macro 0

For internal use only. See Object Interface Macros for details.

#define __SIMDATA_XML_INTERFACE_1 classname   
 

Value:

virtual SIMDATA(Object)* createObject() const { \
                SIMDATA(Object) *o = new classname; \
                assert(o); \
                return o; \
        } \
        virtual bool isVirtual() const { return false; } \
        virtual bool isStatic() const { return classname::_isClassStatic(); }
interface macro 1 for normal classes

For internal use only. See Object Interface Macros for details.

#define __SIMDATA_XML_INTERFACE_2 classname,
baseinterface,
nqbaseinterface   
 

Value:

virtual SIMDATA(hasht) getClassHash() const { return classname::_getClassHash(); } \
        virtual const char * getClassName() const { return classname::_getClassName(); } \
        classname##InterfaceProxy(const char * cname = #classname, SIMDATA(hasht) (*chash)() = &classname::_getClassHash): \
                baseinterface(cname, chash) \
        { \
                std::string _classname = #classname; \
                SIMDATA(hasht) _classhash = classname::_getClassHash(); \
                _interface = new SIMDATA(ObjectInterface)<classname>; \
                (*_interface)
interface macro 2

For internal use only. See Object Interface Macros for details.

#define __SIMDATA_XML_INTERFACE_V classname   
 

Value:

virtual SIMDATA(Object)* createObject() const { assert(0); return 0; } \
        virtual bool isVirtual() const { return true; }
interface macro 1 for abstract classes: no createObject

For internal use only. See Object Interface Macros for details.

#define BEGIN_SIMDATA_XML_INTERFACE classname   
 

Value:

Begin an interface declaration.

See Object Interface Macros for details.

#define BEGIN_SIMDATA_XML_VIRTUAL_INTERFACE classname   
 

Value:

Begin an interface declaration for an abstract class.

See Object Interface Macros for details.

#define END_SIMDATA_XML_INTERFACE
 

Value:

.pass(); \
                        addInterface(_interface, _classname, _classhash); \
                } \
        };
End an object interface declaration.

See Object Interface Macros for details.

#define EXTEND_SIMDATA_XML_INTERFACE classname,
basename   
 

Value:

__SIMDATA_XML_INTERFACE_0(classname, basename::basename##InterfaceProxy) \
                __SIMDATA_XML_INTERFACE_1(classname) \
                __SIMDATA_XML_INTERFACE_2(classname, basename::basename##InterfaceProxy, basename##InterfaceProxy)
Extend an interface declaration.

See Object Interface Macros for details.

#define EXTEND_SIMDATA_XML_VIRTUAL_INTERFACE classname,
basename   
 

Value:

__SIMDATA_XML_INTERFACE_0(classname, basename::basename##InterfaceProxy) \
                __SIMDATA_XML_INTERFACE_V(classname) \
                __SIMDATA_XML_INTERFACE_2(classname, basename::basename##InterfaceProxy, basename##InterfaceProxy)
Extend an interface declaration for an abstract class.

See Object Interface Macros for details.

#define SIMDATA_BIT id,
var,
bit,
req       .def(id, &var, bit, req)
 

Declare a bit-masked member variable accessible to external data sources.

See Object Interface Macros for details.

#define SIMDATA_REGISTER_INNER_INTERFACE prefix,
classname   
 

Value:

namespace { \
        parent::classname::classname##InterfaceProxy __##prefix##_##classname##_interface; \
}
Register an object class interface declared within a named scope.

See Object Interface Macros for details.

#define SIMDATA_REGISTER_INTERFACE classname   
 

Value:

namespace { \
        classname::classname##InterfaceProxy __##classname##_interface; \
}
Register an object class interface.

See Object Interface Macros for details.

#define SIMDATA_XML id,
var,
req       .def(id, &var, req)
 

Declare a member variable accessible to external data sources.

See Object Interface Macros for details.


Variable Documentation

NAMESPACE_SIMDATA class Object
 


SimData version pre-0.4.0. For more information on SimData, visit the SimData Homepage.

Generated on Tue Oct 14 12:06:39 2003, using Doxygen 1.2.18.

[SF.net]