CPPGPGPU Library - Reference (Doxygen)

Main Page | General Use | Reference | Examples Info | Get/Download CPPGPGPU | SF.net Page

Node.h File Reference

#include <stdio.h>
#include <string>
#include <vector>
#include <map>

Go to the source code of this file.

Classes

class  Node
 Basic node, these are like smart pointers to NodeObjects. More...
class  NodeObject
 Base Class for All Nodes. More...
class  NodeManager
 Full Node Manager, access using NODEMAN. More...
struct  NodeManager::StringPair
 [Internal] Structure to hold all message data pairs. More...
struct  NodeManager::StringPairFloat
 [Internal] Structure to hold all information regarding active, waiting messages. More...

Defines

#define CLASS_RTTI(NAME, PARENT)
 RTTI Macro, place this in your class definition, under public:.
#define REGISTER_CLASS(CLASSNAME)
 Registeration Macro, place this in your class's cpp file.
#define NODE_CAST(Node, Type)   (Node.Get()?((Type*) (Node->IsTypeOf(#Type)?Node.Get():NULL)):NULL)
 Cast given node to a more/less generic Type, safely. If it is incorrect, return null.
#define GET_NODE_CAST(NodeName, Type)   ((Type*)NODEMAN->DerefGet( #Type, NodeName ))
 Get instance of object by name NodeName and do an unsafe cast.
#define CODERENDERNODE(NODENAME, CODEIN, CODEOUT)
 VERY Simple node instanciation. Things like lighting, etc can be used here.

Typedefs

typedef NodeObject *(* ProducerFunct )(const string &sObjectName)
 Function to generate a new NodeObject.

Variables

NodeManagerNODEMAN
 Instance of NodeManager singleton.


Define Documentation

#define CLASS_RTTI ( NAME,
PARENT   ) 

Value:

virtual string GetType() { return #NAME; } \
    virtual bool IsTypeOf( const string & sType ) { return (sType.compare( #NAME ) == 0)?true:PARENT::IsTypeOf( sType ); }
RTTI Macro, place this in your class definition, under public:.

Definition at line 160 of file Node.h.

#define CODERENDERNODE ( NODENAME,
CODEIN,
CODEOUT   ) 

Value:

class NODENAME : public NodeObject \
{ \
public: \
    NODENAME( const string & sName ) : NodeObject( sName ) { } \
    CLASS_RTTI( NODENAME, NodeObject ); \
 \
    virtual void Render() { CODEIN; NodeObject::Render(); CODEOUT; } \
};
VERY Simple node instanciation. Things like lighting, etc can be used here.

Definition at line 285 of file Node.h.

#define GET_NODE_CAST ( NodeName,
Type   )     ((Type*)NODEMAN->DerefGet( #Type, NodeName ))

Get instance of object by name NodeName and do an unsafe cast.

Definition at line 281 of file Node.h.

#define NODE_CAST ( Node,
Type   )     (Node.Get()?((Type*) (Node->IsTypeOf(#Type)?Node.Get():NULL)):NULL)

Cast given node to a more/less generic Type, safely. If it is incorrect, return null.

Definition at line 277 of file Node.h.

#define REGISTER_CLASS ( CLASSNAME   ) 

Value:

NodeObject * Produce##CLASSNAME( const string & sObjectName ) \
    { return new CLASSNAME( sObjectName ); } \
    class RegClass##CLASSNAME { public: \
        RegClass##CLASSNAME() { \
        NodeManager::Instance()->RegisterType( #CLASSNAME, Produce##CLASSNAME ); \
        } \
    }; \
    RegClass##CLASSNAME AUTOREG##CLASSNAME;
Registeration Macro, place this in your class's cpp file.

Definition at line 165 of file Node.h.


Typedef Documentation

typedef NodeObject*(* ProducerFunct)(const string &sObjectName)

Function to generate a new NodeObject.

Definition at line 176 of file Node.h.


Variable Documentation

NodeManager* NODEMAN

Instance of NodeManager singleton.

NODE MANAGER

Definition at line 208 of file Node.cpp.


© 2005-2007 Charles Lohr, Joshua Allen, David Chapman, Andrew Lohr. All material including documentation under the MIT/X11 license.