PixelLightAPI  .
Classes | Namespaces | Defines
Rtti.h File Reference
#include "PLCore/Base/ClassReal.h"
#include "PLCore/Base/ClassManager.h"
#include "PLCore/Base/Var/Var.h"
#include "PLCore/Base/Var/Attribute.h"
#include "PLCore/Base/Func/Method.h"
#include "PLCore/Base/Func/Constructor.h"
#include "PLCore/Base/Event/Signal.h"
#include "PLCore/Base/Event/Slot.h"
#include "PLCore/Base/Tools/TypeTraits.h"

Go to the source code of this file.

Classes

class  PLCore::ModuleID< T >
 Class to give each module a unique ID. More...

Namespaces

namespace  PLCore

Defines

#define PLCORE_IS_DEBUGMODE   false
 Debug mode.
#define __pl_enum(ENUM)
 Create class for an enumeration type.
#define __pl_enum_direct(ENUM, TYPE)
 Create class for an direct enumeration type (not using enum{}, e.g. for float 'enums')
#define __pl_enum_base(ENUM)
 Declare base enumeration type (add all values of an existing enumeration type)
#define __pl_enum_value(VALUE, DESCRIPTION)
 Add enumeration value.
#define __pl_enum_value_direct(NAME, VALUE, DESCRIPTION)
 Add enumeration value by directly specifying the value.
#define __pl_enum_end
 End enumeration class.
#define __pl_class(CLASS, NAMESPACE, BASECLASS, BASECLASSNAME, DESCRIPTION)
 Create class.
#define __pl_rtti_export(EXPORT)
 Mark export flag.
#define __pl_guard(CLASS)
 Create guard for class.
#define __pl_getclass()
 Create virtual function GetClass()
#define __pl_class_impl(CLASS)
 Create class implementation (static variables)
#define __pl_prop_meth
 Create class for properties.
#define __pl_prop_prop(NAME, VALUE)   static_cast<_Class*>(pClass)->AddProperty(NAME, VALUE); \
 Add property.
#define __pl_prop_class_end   } \
 End class for properties.
#define __pl_attr_stor(NAME, TYPE, STORAGE)
 Create get/set storage class for an attribute.
#define __pl_attr_desc(NAME, TYPE, DEFAULT, DESCRIPTION, ANNOTATION)
 Create descriptor class for an attribute.
#define __pl_attr_attr(NAME, TYPE, DEFAULT, ACCESS, STORAGE)
 Create class for an attribute.
#define __pl_attr_decl(NAME, TYPE)   NAME##_Attr NAME; \
 Create attribute variable.
#define __pl_method_desc(NAME, RET, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, DESCRIPTION, ANNOTATION)
 Create descriptor class for a method.
#define __pl_method_meth(NAME)
 Create class for a method.
#define __pl_signal_desc(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, DESCRIPTION, ANNOTATION)
 Create descriptor class for a signal.
#define __pl_signal_evnt(NAME)
 Create class for a signal.
#define __pl_signal_decl(NAME)   NAME##_Signal NAME; \
 Create signal variable.
#define __pl_slot_desc(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, DESCRIPTION, ANNOTATION)
 Create descriptor class for a slot.
#define __pl_slot_evth(NAME)
 Create class for a slot.
#define __pl_slot_decl(NAME)   NAME##_Slot Slot##NAME; \
 Create slot variable.
#define __pl_constructor_desc(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, DESCRIPTION, ANNOTATION)
 Create descriptor class for a constructor.
#define __pl_constructor_cons(NAME)
 Create class for an event handler.
#define pl_current_module_id()   ( PLCore::ModuleID<int>::GetModuleID() )
 Get current module ID.
#define pl_enum(ENUM)   __pl_enum(ENUM) \
 Declare enumeration type.
#define pl_enum_direct(ENUM, TYPE)   __pl_enum_direct(ENUM, TYPE) \
 Declare direct enumeration type (not using enum{}, e.g. for float 'enums')
#define pl_enum_base(ENUM)   __pl_enum_base(ENUM) \
 Declare base enumeration type (add all values of an existing enumeration type)
#define pl_enum_value(VALUE, DESCRIPTION)   __pl_enum_value(VALUE, DESCRIPTION) \
 Declare enumeration value.
#define pl_enum_value_direct(NAME, VALUE, DESCRIPTION)   __pl_enum_value_direct(NAME, VALUE, DESCRIPTION) \
 Add enumeration value by directly specifying the value.
#define pl_enum_end   __pl_enum_end \
 End enumeration.
#define pl_class(EXPORT, CLASS, NAMESPACE, BASECLASS, DESCRIPTION)
 Declare class.
#define pl_rtti_export   1
 Export RTTI class (use in macro pl_class)
#define pl_rtti_import   0
 Export RTTI class (use in macro pl_class)
#define pl_class_internal(EXPORT, CLASS, NAMESPACE, BASECLASS, DESCRIPTION)
 Declare class - internal (only for PLCore::Object)
#define pl_properties   __pl_prop_meth \
 Begin class properties.
#define pl_property(NAME, VALUE)   __pl_prop_prop(NAME, VALUE) \
 Declare class property.
#define pl_properties_end   __pl_prop_class_end \
 End class properties.
#define pl_attribute(NAME, TYPE, DEFAULT, ACCESS, STORAGE, DESCRIPTION, ANNOTATION)
 Declare attribute.
#define pl_enum_type(ENUM)   PLCore::EnumType< ENUM##__plcore_enum__ >
 Declare an enum type for an attribute.
#define pl_flag_type(ENUM)   PLCore::FlagType< ENUM##__plcore_enum__ >
 Declare a flags type for an attribute.
#define pl_method_16(NAME, RET, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, DESCRIPTION, ANNOTATION)
 Declare method.
#define pl_method_15(NAME, RET, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, DESCRIPTION, ANNOTATION)   pl_method_16(NAME, RET, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_method_14(NAME, RET, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, DESCRIPTION, ANNOTATION)   pl_method_16(NAME, RET, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_method_13(NAME, RET, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, DESCRIPTION, ANNOTATION)   pl_method_16(NAME, RET, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_method_12(NAME, RET, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, DESCRIPTION, ANNOTATION)   pl_method_16(NAME, RET, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_method_11(NAME, RET, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, DESCRIPTION, ANNOTATION)   pl_method_16(NAME, RET, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_method_10(NAME, RET, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, DESCRIPTION, ANNOTATION)   pl_method_16(NAME, RET, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_method_9(NAME, RET, T0, T1, T2, T3, T4, T5, T6, T7, T8, DESCRIPTION, ANNOTATION)   pl_method_16(NAME, RET, T0, T1, T2, T3, T4, T5, T6, T7, T8, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_method_8(NAME, RET, T0, T1, T2, T3, T4, T5, T6, T7, DESCRIPTION, ANNOTATION)   pl_method_16(NAME, RET, T0, T1, T2, T3, T4, T5, T6, T7, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_method_7(NAME, RET, T0, T1, T2, T3, T4, T5, T6, DESCRIPTION, ANNOTATION)   pl_method_16(NAME, RET, T0, T1, T2, T3, T4, T5, T6, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_method_6(NAME, RET, T0, T1, T2, T3, T4, T5, DESCRIPTION, ANNOTATION)   pl_method_16(NAME, RET, T0, T1, T2, T3, T4, T5, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_method_5(NAME, RET, T0, T1, T2, T3, T4, DESCRIPTION, ANNOTATION)   pl_method_16(NAME, RET, T0, T1, T2, T3, T4, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_method_4(NAME, RET, T0, T1, T2, T3, DESCRIPTION, ANNOTATION)   pl_method_16(NAME, RET, T0, T1, T2, T3, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_method_3(NAME, RET, T0, T1, T2, DESCRIPTION, ANNOTATION)   pl_method_16(NAME, RET, T0, T1, T2, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_method_2(NAME, RET, T0, T1, DESCRIPTION, ANNOTATION)   pl_method_16(NAME, RET, T0, T1, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_method_1(NAME, RET, T0, DESCRIPTION, ANNOTATION)   pl_method_16(NAME, RET, T0, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_method_0(NAME, RET, DESCRIPTION, ANNOTATION)   pl_method_16(NAME, RET, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_signal_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, DESCRIPTION, ANNOTATION)
 Declare signal.
#define pl_signal_15(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, DESCRIPTION, ANNOTATION)   pl_signal_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_signal_14(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, DESCRIPTION, ANNOTATION)   pl_signal_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_signal_13(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, DESCRIPTION, ANNOTATION)   pl_signal_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_signal_12(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, DESCRIPTION, ANNOTATION)   pl_signal_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_signal_11(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, DESCRIPTION, ANNOTATION)   pl_signal_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_signal_10(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, DESCRIPTION, ANNOTATION)   pl_signal_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_signal_9(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, DESCRIPTION, ANNOTATION)   pl_signal_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_signal_8(NAME, T0, T1, T2, T3, T4, T5, T6, T7, DESCRIPTION, ANNOTATION)   pl_signal_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_signal_7(NAME, T0, T1, T2, T3, T4, T5, T6, DESCRIPTION, ANNOTATION)   pl_signal_16(NAME, T0, T1, T2, T3, T4, T5, T6, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_signal_6(NAME, T0, T1, T2, T3, T4, T5, DESCRIPTION, ANNOTATION)   pl_signal_16(NAME, T0, T1, T2, T3, T4, T5, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_signal_5(NAME, T0, T1, T2, T3, T4, DESCRIPTION, ANNOTATION)   pl_signal_16(NAME, T0, T1, T2, T3, T4, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_signal_4(NAME, T0, T1, T2, T3, DESCRIPTION, ANNOTATION)   pl_signal_16(NAME, T0, T1, T2, T3, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_signal_3(NAME, T0, T1, T2, DESCRIPTION, ANNOTATION)   pl_signal_16(NAME, T0, T1, T2, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_signal_2(NAME, T0, T1, DESCRIPTION, ANNOTATION)   pl_signal_16(NAME, T0, T1, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_signal_1(NAME, T0, DESCRIPTION, ANNOTATION)   pl_signal_16(NAME, T0, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_signal_0(NAME, DESCRIPTION, ANNOTATION)   pl_signal_16(NAME, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_slot_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, DESCRIPTION, ANNOTATION)
 Declare slot.
#define pl_slot_15(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, DESCRIPTION, ANNOTATION)   pl_slot_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_slot_14(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, DESCRIPTION, ANNOTATION)   pl_slot_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_slot_13(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, DESCRIPTION, ANNOTATION)   pl_slot_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_slot_12(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, DESCRIPTION, ANNOTATION)   pl_slot_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_slot_11(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, DESCRIPTION, ANNOTATION)   pl_slot_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_slot_10(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, DESCRIPTION, ANNOTATION)   pl_slot_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_slot_9(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, DESCRIPTION, ANNOTATION)   pl_slot_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_slot_8(NAME, T0, T1, T2, T3, T4, T5, T6, T7, DESCRIPTION, ANNOTATION)   pl_slot_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_slot_7(NAME, T0, T1, T2, T3, T4, T5, T6, DESCRIPTION, ANNOTATION)   pl_slot_16(NAME, T0, T1, T2, T3, T4, T5, T6, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_slot_6(NAME, T0, T1, T2, T3, T4, T5, DESCRIPTION, ANNOTATION)   pl_slot_16(NAME, T0, T1, T2, T3, T4, T5, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_slot_5(NAME, T0, T1, T2, T3, T4, DESCRIPTION, ANNOTATION)   pl_slot_16(NAME, T0, T1, T2, T3, T4, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_slot_4(NAME, T0, T1, T2, T3, DESCRIPTION, ANNOTATION)   pl_slot_16(NAME, T0, T1, T2, T3, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_slot_3(NAME, T0, T1, T2, DESCRIPTION, ANNOTATION)   pl_slot_16(NAME, T0, T1, T2, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_slot_2(NAME, T0, T1, DESCRIPTION, ANNOTATION)   pl_slot_16(NAME, T0, T1, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_slot_1(NAME, T0, DESCRIPTION, ANNOTATION)   pl_slot_16(NAME, T0, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_slot_0(NAME, DESCRIPTION, ANNOTATION)   pl_slot_16(NAME, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_constructor_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, DESCRIPTION, ANNOTATION)
 Declare constructor.
#define pl_constructor_15(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, DESCRIPTION, ANNOTATION)   pl_constructor_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_constructor_14(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, DESCRIPTION, ANNOTATION)   pl_constructor_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_constructor_13(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, DESCRIPTION, ANNOTATION)   pl_constructor_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_constructor_12(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, DESCRIPTION, ANNOTATION)   pl_constructor_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_constructor_11(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, DESCRIPTION, ANNOTATION)   pl_constructor_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_constructor_10(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, DESCRIPTION, ANNOTATION)   pl_constructor_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_constructor_9(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, DESCRIPTION, ANNOTATION)   pl_constructor_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_constructor_8(NAME, T0, T1, T2, T3, T4, T5, T6, T7, DESCRIPTION, ANNOTATION)   pl_constructor_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_constructor_7(NAME, T0, T1, T2, T3, T4, T5, T6, DESCRIPTION, ANNOTATION)   pl_constructor_16(NAME, T0, T1, T2, T3, T4, T5, T6, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_constructor_6(NAME, T0, T1, T2, T3, T4, T5, DESCRIPTION, ANNOTATION)   pl_constructor_16(NAME, T0, T1, T2, T3, T4, T5, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_constructor_5(NAME, T0, T1, T2, T3, T4, DESCRIPTION, ANNOTATION)   pl_constructor_16(NAME, T0, T1, T2, T3, T4, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_constructor_4(NAME, T0, T1, T2, T3, DESCRIPTION, ANNOTATION)   pl_constructor_16(NAME, T0, T1, T2, T3, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_constructor_3(NAME, T0, T1, T2, DESCRIPTION, ANNOTATION)   pl_constructor_16(NAME, T0, T1, T2, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_constructor_2(NAME, T0, T1, DESCRIPTION, ANNOTATION)   pl_constructor_16(NAME, T0, T1, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_constructor_1(NAME, T0, DESCRIPTION, ANNOTATION)   pl_constructor_16(NAME, T0, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_constructor_0(NAME, DESCRIPTION, ANNOTATION)   pl_constructor_16(NAME, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_ret_type(RET)   RET
 Declare return type for a method.
#define pl_class_end
 End class declaration.
#define pl_implement_class(CLASS)   __pl_class_impl(CLASS) \
 Define class.

Define Documentation

#define PLCORE_IS_DEBUGMODE   false

Debug mode.

#define __pl_enum (   ENUM)
Value:
class ENUM##__plcore_enum__ { \
        public: \
            typedef int  _BaseType; \
            typedef ENUM _Type; \
            \
            static bool GetEnumValue(int nIndex, ENUM &nValue, PLCore::String &sName, PLCore::String &sDescription) { \
                int nCount = 0; \

Create class for an enumeration type.

Parameters:
[in]ENUMEnumeration name
#define __pl_enum_direct (   ENUM,
  TYPE 
)
Value:
class ENUM##__plcore_enum__ { \
        public: \
            typedef TYPE _BaseType; \
            typedef TYPE _Type; \
            \
            static bool GetEnumValue(int nIndex, TYPE &nValue, PLCore::String &sName, PLCore::String &sDescription) { \
                int nCount = 0; \

Create class for an direct enumeration type (not using enum{}, e.g. for float 'enums')

Parameters:
[in]ENUMEnumeration name
[in]TYPEEnumeration type
#define __pl_enum_base (   ENUM)
Value:
nCount = PLCore::EnumType<ENUM##__plcore_enum__>::GetNumOfEnumValues(); \
                if (nIndex >= 0 && nIndex < nCount) { \
                    return ENUM##__plcore_enum__::GetEnumValue(nIndex, reinterpret_cast<ENUM&>(nValue), sName, sDescription); \
                } else if (nIndex == -1) { \
                    if (ENUM##__plcore_enum__::GetEnumValue(-1, reinterpret_cast<ENUM&>(nValue), sName, sDescription)) \
                        return true; \
                } \

Declare base enumeration type (add all values of an existing enumeration type)

Parameters:
[in]ENUMEnumeration name of base data type
#define __pl_enum_value (   VALUE,
  DESCRIPTION 
)
Value:
if (nIndex == nCount)                                       { nValue = VALUE; sName = #VALUE; return true; } \
                else if (nIndex == -1 && !sName.GetLength() && nValue == VALUE) { sName = #VALUE; return true; } \
                else if (nIndex == -1 && sName == #VALUE)                       { nValue = VALUE; sDescription = DESCRIPTION; return true; } \
                nCount++; \

Add enumeration value.

Parameters:
[in]VALUEEnumeration value
[in]DESCRIPTIONEnumeration description
#define __pl_enum_value_direct (   NAME,
  VALUE,
  DESCRIPTION 
)
Value:
if (nIndex == nCount)                                       { nValue = VALUE; sName = #NAME; return true; } \
                else if (nIndex == -1 && !sName.GetLength() && nValue == VALUE) { sName = #NAME;  return true; } \
                else if (nIndex == -1 && sName == #NAME)                        { nValue = VALUE; sDescription = DESCRIPTION; return true; } \
                nCount++; \

Add enumeration value by directly specifying the value.

Parameters:
[in]NAMEEnumeration name
[in]VALUEEnumeration value
[in]DESCRIPTIONEnumeration description
#define __pl_enum_end
Value:
return false; \
            } \
    }; \

End enumeration class.

#define __pl_class (   CLASS,
  NAMESPACE,
  BASECLASS,
  BASECLASSNAME,
  DESCRIPTION 
)

Create class.

Parameters:
[in]CLASSClass name (without namespace)
[in]NAMESPACENamespace
[in]BASECLASSBase class name (with namespace)
[in]DESCRIPTIONClass description
#define __pl_rtti_export (   EXPORT)
Value:
enum { \
            _RttiExport = EXPORT \
        }; \
        \

Mark export flag.

Parameters:
[in]EXPORTExport definition (must be defined as either 1 or 0)
#define __pl_guard (   CLASS)
Value:
/* Creation and destruction guard */ \
        class _Guard { \
            public: \
                /* Constructor */ \
                _Guard() { \
                    _Class::GetSingleton(); \
                } \
                \
                /* Destructor */ \
                ~_Guard() { \
                    /* Make sure that class instance is removed on shutdown */ \
                    _Class::GetSingleton(false); \
                } \
        }; \

Create guard for class.

Parameters:
[in]CLASSClass name (without namespace)
#define __pl_getclass ( )
Value:
/* Public virtual PLCore::Object function */ \
        virtual PLCore::Class *GetClass() const override \
        { \
            return _Class::GetSingleton()->GetClass(); \
        } \

Create virtual function GetClass()

#define __pl_class_impl (   CLASS)
Value:
/* Guard */ \
    CLASS::_Guard cGuard_##CLASS; \

Create class implementation (static variables)

Parameters:
[in]CLASSClass name (without namespace)
#define __pl_prop_meth
Value:
/* Class properties */ \
        static inline void _RegisterProperties(PLCore::ClassReal *pClass) { \

Create class for properties.

#define __pl_prop_prop (   NAME,
  VALUE 
)    static_cast<_Class*>(pClass)->AddProperty(NAME, VALUE); \

Add property.

Parameters:
[in]NAMEProperty name
[in]VALUEProperty value
#define __pl_prop_class_end   } \

End class for properties.

#define __pl_attr_stor (   NAME,
  TYPE,
  STORAGE 
)
Value:
template <typename CLASS> class NAME##_GetSet { \
            public: \
                typedef PLCore::StorageGetSet StorageType; \
                typedef PLCore::StorageGetSet BaseStorageType; \
                static inline PLCore::Type<TYPE>::_Type Get(PLCore::Object *pObject) { \
                    return static_cast<CLASS*>(pObject)->Get##NAME(); \
                } \
                static inline void Set(PLCore::Object *pObject, const PLCore::Type<TYPE>::_Type &Value) { \
                    static_cast<CLASS*>(pObject)->Set##NAME(Value); \
                } \
        }; \
        \
        template <typename BASE> class NAME##_ModAttr { \
            public: \
                typedef PLCore::StorageModifyAttr                       StorageType; \
                typedef typename BASE::NAME##_Storage::BaseStorageType  BaseStorageType; \
                static inline PLCore::Type<TYPE>::_Type Get(PLCore::Object *pObject) { \
                    return static_cast<BASE*>(pObject)->NAME.Get(); \
                } \
                static inline void Set(PLCore::Object *pObject, const PLCore::Type<TYPE>::_Type &Value) { \
                    static_cast<BASE*>(pObject)->NAME.Set(Value); \
                } \
        }; \

Create get/set storage class for an attribute.

Parameters:
[in]NAMEAttribute name
[in]TYPEAttribute type
[in]STORAGEAttribute storage type (DirectValue/GetSet/ModifyAttr)
#define __pl_attr_desc (   NAME,
  TYPE,
  DEFAULT,
  DESCRIPTION,
  ANNOTATION 
)
Value:
class NAME##_Desc : public PLCore::VarDesc { \
            public: \
                NAME##_Desc() : PLCore::VarDesc(PLCore::Type<TYPE>::TypeID, PLCore::Type<TYPE>::GetTypeName(), #NAME, DESCRIPTION, ANNOTATION) { \
                    bool bRegister = static_cast<bool>(_Self::_RttiExport); \
                    if (bRegister) \
                        Register(_Class::GetSingleton()); \
                } \
                ~NAME##_Desc() { \
                } \
            private: \
                virtual PLCore::String GetDefault() const override { \
                    return PLCore::Type<TYPE>::ConvertToString(DEFAULT); \
                } \
                virtual PLCore::DynVar *GetAttribute(const Object &cObject) const override { \
                    return &reinterpret_cast<_Self&>(const_cast<Object&>(cObject)).NAME; \
                } \
        }; \

Create descriptor class for an attribute.

Parameters:
[in]NAMEAttribute name
[in]TYPEAttribute type
[in]DEFAULTAttribute default value
[in]DESCRIPTIONAttribute description
[in]ANNOTATIONAttribute annotation
#define __pl_attr_attr (   NAME,
  TYPE,
  DEFAULT,
  ACCESS,
  STORAGE 
)
Value:
typedef PLCore::SpecializeIfEqual<PLCore::Storage##STORAGE, PLCore::StorageGetSet,     NAME##_GetSet,  _Self>::Type NAME##_ClassGetSet; \
        typedef PLCore::SpecializeIfEqual<PLCore::Storage##STORAGE, PLCore::StorageModifyAttr, NAME##_ModAttr, _Base>::Type NAME##_ClassModAttr; \
        typedef PLCore::StorageChooser<PLCore::Storage##STORAGE, NAME##_ClassGetSet, NAME##_ClassModAttr>::Storage          NAME##_Storage; \
        \
        class NAME##_Attr : public PLCore::Attribute<TYPE, PLCore::Access##ACCESS, NAME##_Storage, NAME##_Desc> { \
            public: \
                typedef PLCore::Type< TYPE >::_Type _Type; \
                NAME##_Attr(_Self *pObject) : PLCore::Attribute<TYPE, PLCore::Access##ACCESS, NAME##_Storage, NAME##_Desc>(DEFAULT, pObject) { \
                } \
                \
                NAME##_Attr &operator =(const _Type &Value) { \
                    return static_cast<NAME##_Attr&>(PLCore::Attribute<TYPE, PLCore::Access##ACCESS, NAME##_Storage, NAME##_Desc>::operator =(Value)); \
                } \
        }; \

Create class for an attribute.

Parameters:
[in]NAMEAttribute name
[in]TYPEAttribute type
[in]DEFAULTAttribute default value
[in]ACCESSAttribute access type (ReadWrite/ReadOnly)
[in]STORAGEAttribute storage type (DirectValue/GetSet/ModifyAttr)
#define __pl_attr_decl (   NAME,
  TYPE 
)    NAME##_Attr NAME; \

Create attribute variable.

Parameters:
[in]NAMEAttribute name
[in]TYPEAttribute type
#define __pl_method_desc (   NAME,
  RET,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  T10,
  T11,
  T12,
  T13,
  T14,
  T15,
  DESCRIPTION,
  ANNOTATION 
)
Value:
class NAME##_Desc : public PLCore::FuncDesc { \
            public: \
                typedef _Self                                                                                                                               ClassType; \
                typedef PLCore::Functor<RET,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15>                                                          FuncType; \
                typedef PLCore::Signature<RET,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15>                                                        SigType; \
                typedef PLCore::ClassTypelist< _Self, PLCore::Typelist<RET,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15> >::TypeMethodSignature    MethType; \
            public: \
                NAME##_Desc() : PLCore::FuncDesc(SigType::GetSignatureID(), #NAME, #DESCRIPTION, #ANNOTATION) { \
                    bool bRegister = static_cast<bool>(_Self::_RttiExport); \
                    if (bRegister) \
                        Register(_Class::GetSingleton()); \
                } \
                ~NAME##_Desc() { \
                } \
                virtual PLCore::DynFuncPtr GetMethod(Object &cObject) const override { \
                    return new NAME##_Method(reinterpret_cast<_Self&>(cObject)); \
                } \
            private: \
                FuncType m_cFunctor; \
        }; \

Create descriptor class for a method.

Parameters:
[in]NAMEMethod name
[in]RETReturn type
[in]T0- T15 Parameter types
[in]DESCRIPTIONMethod description
[in]ANNOTATIONMethod annotation
#define __pl_method_meth (   NAME)
Value:
class NAME##_Method : public PLCore::Method<NAME##_Desc> { \
            public: \
                /* Cast away the const within the method pointer using a good old C-style cast to be as flexible as possible in here, if this is not done, only non-const methods can be exposed to the RTTI which isn't that comfortable */ \
                NAME##_Method() : PLCore::Method<NAME##_Desc>((NAME##_Desc::MethType::MemFuncType)(&_Self::NAME), nullptr) { \
                    /* There are no automatic RTTI class method instances per RTTI class instance because there's no need for it and this safes RTTI class instance memory */ \
                } \
                /* Cast away the const within the method pointer using a good old C-style cast to be as flexible as possible in here, if this is not done, only non-const methods can be exposed to the RTTI which isn't that comfortable */ \
                NAME##_Method(_Self &cObject) : PLCore::Method<NAME##_Desc>((NAME##_Desc::MethType::MemFuncType)(&_Self::NAME), &cObject) { \
                } \
        }; \

Create class for a method.

Parameters:
[in]NAMEMethod name
#define __pl_signal_desc (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  T10,
  T11,
  T12,
  T13,
  T14,
  T15,
  DESCRIPTION,
  ANNOTATION 
)
Value:
class NAME##_Desc : public PLCore::EventDesc { \
            public: \
                typedef _Self                                                                           ClassType; \
                typedef PLCore::Event<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15>            EventType; \
                typedef PLCore::Signature<void,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15>   SigType; \
            public: \
                NAME##_Desc() : PLCore::EventDesc(SigType::GetSignatureID(), #NAME, #DESCRIPTION, #ANNOTATION) { \
                    bool bRegister = static_cast<bool>(_Self::_RttiExport); \
                    if (bRegister) \
                        Register(_Class::GetSingleton()); \
                } \
                ~NAME##_Desc() { \
                } \
            private: \
                virtual PLCore::DynEvent *GetSignal(const Object &cObject) const override { \
                    return &reinterpret_cast<_Self&>(const_cast<Object&>(cObject)).NAME; \
                } \
        }; \

Create descriptor class for a signal.

Parameters:
[in]NAMESignal name
[in]T0- T15 Parameter types
[in]DESCRIPTIONSignal description
[in]ANNOTATIONSignal annotation
#define __pl_signal_evnt (   NAME)
Value:
class NAME##_Signal : public PLCore::Signal<NAME##_Desc> { \
            public: \
                NAME##_Signal() : PLCore::Signal<NAME##_Desc>() { \
                } \
        }; \

Create class for a signal.

Parameters:
[in]NAMESignal name
#define __pl_signal_decl (   NAME)    NAME##_Signal NAME; \

Create signal variable.

Parameters:
[in]NAMESignal name
#define __pl_slot_desc (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  T10,
  T11,
  T12,
  T13,
  T14,
  T15,
  DESCRIPTION,
  ANNOTATION 
)
Value:
class NAME##_Desc : public PLCore::EventHandlerDesc { \
            public: \
                typedef _Self                                                                                                                               ClassType; \
                typedef PLCore::EventHandler<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15>                                                         EventHandlerType; \
                typedef PLCore::Signature<void,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15>                                                       SigType; \
                typedef PLCore::ClassTypelist< _Self, PLCore::Typelist<void,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15> >::TypeMethodSignature   MethType; \
            public: \
                NAME##_Desc() : PLCore::EventHandlerDesc(SigType::GetSignatureID(), #NAME, #DESCRIPTION, #ANNOTATION) { \
                    bool bRegister = static_cast<bool>(_Self::_RttiExport); \
                    if (bRegister) \
                        Register(_Class::GetSingleton()); \
                } \
                ~NAME##_Desc() { \
                } \
            private: \
                virtual PLCore::DynEventHandler *GetSlot(const Object &cObject) const override { \
                    return &reinterpret_cast<_Self&>(const_cast<Object&>(cObject)).Slot##NAME; \
                } \
        }; \

Create descriptor class for a slot.

Parameters:
[in]NAMEEvent handler name
[in]T0- T15 Parameter types
[in]DESCRIPTIONEvent handler description
[in]ANNOTATIONEvent handler annotation
#define __pl_slot_evth (   NAME)
Value:
class NAME##_Slot : public PLCore::Slot<NAME##_Desc> { \
            public: \
                NAME##_Slot(_Self *pObject) : PLCore::Slot<NAME##_Desc>(&_Self::NAME, pObject) { \
                } \
        }; \

Create class for a slot.

Parameters:
[in]NAMESlot name
#define __pl_slot_decl (   NAME)    NAME##_Slot Slot##NAME; \

Create slot variable.

Parameters:
[in]NAMEEvent handler name
#define __pl_constructor_desc (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  T10,
  T11,
  T12,
  T13,
  T14,
  T15,
  DESCRIPTION,
  ANNOTATION 
)

Create descriptor class for a constructor.

Parameters:
[in]NAMEConstructor name
[in]T0- T15 Parameter types
[in]DESCRIPTIONConstructor description
[in]ANNOTATIONConstructor annotation
#define __pl_constructor_cons (   NAME)
Value:
class NAME##_Constructor : public PLCore::Constructor<NAME##_Desc> { \
            public: \
                NAME##_Constructor() { \
                } \
        }; \

Create class for an event handler.

Parameters:
[in]NAMEEvent handler name
#define pl_current_module_id ( )    ( PLCore::ModuleID<int>::GetModuleID() )

Get current module ID.

#define pl_enum (   ENUM)    __pl_enum(ENUM) \

Declare enumeration type.

Parameters:
[in]ENUMEnumeration name
#define pl_enum_direct (   ENUM,
  TYPE 
)    __pl_enum_direct(ENUM, TYPE) \

Declare direct enumeration type (not using enum{}, e.g. for float 'enums')

Parameters:
[in]ENUMEnumeration name
[in]TYPEEnumeration type
#define pl_enum_base (   ENUM)    __pl_enum_base(ENUM) \

Declare base enumeration type (add all values of an existing enumeration type)

Parameters:
[in]ENUMEnumeration name of base data type
#define pl_enum_value (   VALUE,
  DESCRIPTION 
)    __pl_enum_value(VALUE, DESCRIPTION) \

Declare enumeration value.

Parameters:
[in]VALUEEnumeration value
[in]DESCRIPTIONEnumeration description
#define pl_enum_value_direct (   NAME,
  VALUE,
  DESCRIPTION 
)    __pl_enum_value_direct(NAME, VALUE, DESCRIPTION) \

Add enumeration value by directly specifying the value.

Parameters:
[in]NAMEEnumeration name
[in]VALUEEnumeration value
[in]DESCRIPTIONEnumeration description
#define pl_enum_end   __pl_enum_end \

End enumeration.

#define pl_class (   EXPORT,
  CLASS,
  NAMESPACE,
  BASECLASS,
  DESCRIPTION 
)
Value:
__pl_class(CLASS, NAMESPACE, BASECLASS, #BASECLASS, DESCRIPTION) \
    __pl_guard(CLASS) \
    __pl_getclass() \
    __pl_rtti_export(EXPORT) \

Declare class.

Parameters:
[in]EXPORTExport definition (must be defined as either 1 or 0)
[in]CLASSClass name (without namespace)
[in]NAMESPACENamespace
[in]BASECLASSBase class name (with namespace)
[in]DESCRIPTIONClass description
#define pl_rtti_export   1

Export RTTI class (use in macro pl_class)

Remarks:
Use pl_rtti_export to mark a class as being exported to other libraries/applications. Usually, you should define this in a global header file for your project to either pl_rtti_export(1) or pl_rtti_import(0), depending on whether the project is currently built itself or imported into another project (just as the dllimport/dllexport macros). However, if your project is an application that is not included anywhere else, you can directly pass pl_rtti_export to pl_class, as your classes are only exported and never imported.
#define pl_rtti_import   0

Export RTTI class (use in macro pl_class)

Remarks:
Use pl_rtti_import to mark a class as being imported by other libraries/applications (see pl_rtti_export).
#define pl_class_internal (   EXPORT,
  CLASS,
  NAMESPACE,
  BASECLASS,
  DESCRIPTION 
)
Value:
__pl_class(CLASS, NAMESPACE, PLCore::ObjectBase, #BASECLASS, DESCRIPTION) \
    __pl_guard(CLASS) \
    __pl_getclass() \
    __pl_rtti_export(EXPORT) \

Declare class - internal (only for PLCore::Object)

Parameters:
[in]EXPORTExport definition (must be defined as either 1 or 0)
[in]CLASSClass name (without namespace)
[in]NAMESPACENamespace
[in]BASECLASSBase class name (with namespace)
[in]DESCRIPTIONClass description
Remarks:
This macro is only used for PLCore::Object. As this is the base class for all RTTI classes, the virtual function GetClass() can not be overwritten here.
#define pl_properties   __pl_prop_meth \

Begin class properties.

#define pl_property (   NAME,
  VALUE 
)    __pl_prop_prop(NAME, VALUE) \

Declare class property.

Parameters:
[in]NAMEProperty name
[in]VALUEProperty value

End class properties.

#define pl_attribute (   NAME,
  TYPE,
  DEFAULT,
  ACCESS,
  STORAGE,
  DESCRIPTION,
  ANNOTATION 
)
Value:
__pl_attr_stor(NAME, TYPE, STORAGE) \
    __pl_attr_desc(NAME, TYPE, DEFAULT, DESCRIPTION, ANNOTATION) \
    __pl_attr_attr(NAME, TYPE, DEFAULT, ACCESS, STORAGE) \
    __pl_attr_decl(NAME, TYPE) \

Declare attribute.

Parameters:
[in]NAMEAttribute name
[in]TYPEAttribute type
[in]DEFAULTAttribute default value
[in]ACCESSAttribute access type (ReadWrite/ReadOnly)
[in]STORAGEAttribute storage type (DirectValue/GetSet/ModifyAttr)
[in]DESCRIPTIONAttribute description
[in]ANNOTATIONAttribute annotation
#define pl_enum_type (   ENUM)    PLCore::EnumType< ENUM##__plcore_enum__ >

Declare an enum type for an attribute.

Parameters:
[in]ENUMName of enum type
#define pl_flag_type (   ENUM)    PLCore::FlagType< ENUM##__plcore_enum__ >

Declare a flags type for an attribute.

Parameters:
[in]ENUMName of enum type
#define pl_method_16 (   NAME,
  RET,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  T10,
  T11,
  T12,
  T13,
  T14,
  T15,
  DESCRIPTION,
  ANNOTATION 
)
Value:
private: /* RTTI class methods are private to avoid misuse */ \
    __pl_method_desc(NAME, RET, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, DESCRIPTION, ANNOTATION) \
    __pl_method_meth(NAME) \
    public: \

Declare method.

Parameters:
[in]NAMEMethod name
[in]RETReturn type
[in]T0- T15 Parameter types
[in]DESCRIPTIONMethod description
[in]ANNOTATIONMethod annotation
#define pl_method_15 (   NAME,
  RET,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  T10,
  T11,
  T12,
  T13,
  T14,
  DESCRIPTION,
  ANNOTATION 
)    pl_method_16(NAME, RET, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_method_14 (   NAME,
  RET,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  T10,
  T11,
  T12,
  T13,
  DESCRIPTION,
  ANNOTATION 
)    pl_method_16(NAME, RET, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_method_13 (   NAME,
  RET,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  T10,
  T11,
  T12,
  DESCRIPTION,
  ANNOTATION 
)    pl_method_16(NAME, RET, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_method_12 (   NAME,
  RET,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  T10,
  T11,
  DESCRIPTION,
  ANNOTATION 
)    pl_method_16(NAME, RET, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_method_11 (   NAME,
  RET,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  T10,
  DESCRIPTION,
  ANNOTATION 
)    pl_method_16(NAME, RET, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_method_10 (   NAME,
  RET,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  DESCRIPTION,
  ANNOTATION 
)    pl_method_16(NAME, RET, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_method_9 (   NAME,
  RET,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  DESCRIPTION,
  ANNOTATION 
)    pl_method_16(NAME, RET, T0, T1, T2, T3, T4, T5, T6, T7, T8, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_method_8 (   NAME,
  RET,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  DESCRIPTION,
  ANNOTATION 
)    pl_method_16(NAME, RET, T0, T1, T2, T3, T4, T5, T6, T7, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_method_7 (   NAME,
  RET,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  DESCRIPTION,
  ANNOTATION 
)    pl_method_16(NAME, RET, T0, T1, T2, T3, T4, T5, T6, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_method_6 (   NAME,
  RET,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  DESCRIPTION,
  ANNOTATION 
)    pl_method_16(NAME, RET, T0, T1, T2, T3, T4, T5, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_method_5 (   NAME,
  RET,
  T0,
  T1,
  T2,
  T3,
  T4,
  DESCRIPTION,
  ANNOTATION 
)    pl_method_16(NAME, RET, T0, T1, T2, T3, T4, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_method_4 (   NAME,
  RET,
  T0,
  T1,
  T2,
  T3,
  DESCRIPTION,
  ANNOTATION 
)    pl_method_16(NAME, RET, T0, T1, T2, T3, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_method_3 (   NAME,
  RET,
  T0,
  T1,
  T2,
  DESCRIPTION,
  ANNOTATION 
)    pl_method_16(NAME, RET, T0, T1, T2, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_signal_16 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  T10,
  T11,
  T12,
  T13,
  T14,
  T15,
  DESCRIPTION,
  ANNOTATION 
)
Value:
__pl_signal_desc(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, DESCRIPTION, ANNOTATION) \
    __pl_signal_evnt(NAME) \
    __pl_signal_decl(NAME) \

Declare signal.

Parameters:
[in]NAMEEvent name
[in]T0- T15 Parameter types
[in]DESCRIPTIONEvent description
[in]ANNOTATIONEvent annotation
#define pl_signal_15 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  T10,
  T11,
  T12,
  T13,
  T14,
  DESCRIPTION,
  ANNOTATION 
)    pl_signal_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_signal_14 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  T10,
  T11,
  T12,
  T13,
  DESCRIPTION,
  ANNOTATION 
)    pl_signal_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_signal_13 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  T10,
  T11,
  T12,
  DESCRIPTION,
  ANNOTATION 
)    pl_signal_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_signal_12 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  T10,
  T11,
  DESCRIPTION,
  ANNOTATION 
)    pl_signal_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_signal_11 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  T10,
  DESCRIPTION,
  ANNOTATION 
)    pl_signal_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_signal_10 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  DESCRIPTION,
  ANNOTATION 
)    pl_signal_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_signal_9 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  DESCRIPTION,
  ANNOTATION 
)    pl_signal_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_signal_8 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  DESCRIPTION,
  ANNOTATION 
)    pl_signal_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_signal_7 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  DESCRIPTION,
  ANNOTATION 
)    pl_signal_16(NAME, T0, T1, T2, T3, T4, T5, T6, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_signal_6 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  DESCRIPTION,
  ANNOTATION 
)    pl_signal_16(NAME, T0, T1, T2, T3, T4, T5, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_signal_5 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  DESCRIPTION,
  ANNOTATION 
)    pl_signal_16(NAME, T0, T1, T2, T3, T4, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_signal_4 (   NAME,
  T0,
  T1,
  T2,
  T3,
  DESCRIPTION,
  ANNOTATION 
)    pl_signal_16(NAME, T0, T1, T2, T3, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_slot_16 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  T10,
  T11,
  T12,
  T13,
  T14,
  T15,
  DESCRIPTION,
  ANNOTATION 
)
Value:
__pl_slot_desc(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, DESCRIPTION, ANNOTATION) \
    __pl_slot_evth(NAME) \
    __pl_slot_decl(NAME) \

Declare slot.

Parameters:
[in]NAMEEvent handler name
[in]T0- T15 Parameter types
[in]DESCRIPTIONEvent handler description
[in]ANNOTATIONEvent handler annotation
#define pl_slot_15 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  T10,
  T11,
  T12,
  T13,
  T14,
  DESCRIPTION,
  ANNOTATION 
)    pl_slot_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_slot_14 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  T10,
  T11,
  T12,
  T13,
  DESCRIPTION,
  ANNOTATION 
)    pl_slot_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_slot_13 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  T10,
  T11,
  T12,
  DESCRIPTION,
  ANNOTATION 
)    pl_slot_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_slot_12 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  T10,
  T11,
  DESCRIPTION,
  ANNOTATION 
)    pl_slot_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_slot_11 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  T10,
  DESCRIPTION,
  ANNOTATION 
)    pl_slot_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_slot_10 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  DESCRIPTION,
  ANNOTATION 
)    pl_slot_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_slot_9 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  DESCRIPTION,
  ANNOTATION 
)    pl_slot_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_slot_8 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  DESCRIPTION,
  ANNOTATION 
)    pl_slot_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_slot_7 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  DESCRIPTION,
  ANNOTATION 
)    pl_slot_16(NAME, T0, T1, T2, T3, T4, T5, T6, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_slot_6 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  DESCRIPTION,
  ANNOTATION 
)    pl_slot_16(NAME, T0, T1, T2, T3, T4, T5, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_slot_5 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  DESCRIPTION,
  ANNOTATION 
)    pl_slot_16(NAME, T0, T1, T2, T3, T4, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_slot_4 (   NAME,
  T0,
  T1,
  T2,
  T3,
  DESCRIPTION,
  ANNOTATION 
)    pl_slot_16(NAME, T0, T1, T2, T3, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_slot_3 (   NAME,
  T0,
  T1,
  T2,
  DESCRIPTION,
  ANNOTATION 
)    pl_slot_16(NAME, T0, T1, T2, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_constructor_16 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  T10,
  T11,
  T12,
  T13,
  T14,
  T15,
  DESCRIPTION,
  ANNOTATION 
)
Value:
__pl_constructor_desc(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, DESCRIPTION, ANNOTATION) \
    __pl_constructor_cons(NAME) \

Declare constructor.

Parameters:
[in]NAMEConstructor name
[in]T0- T15 Parameter types
[in]DESCRIPTIONConstructor description
[in]ANNOTATIONConstructor annotation
#define pl_constructor_15 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  T10,
  T11,
  T12,
  T13,
  T14,
  DESCRIPTION,
  ANNOTATION 
)    pl_constructor_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_constructor_14 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  T10,
  T11,
  T12,
  T13,
  DESCRIPTION,
  ANNOTATION 
)    pl_constructor_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_constructor_13 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  T10,
  T11,
  T12,
  DESCRIPTION,
  ANNOTATION 
)    pl_constructor_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_constructor_12 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  T10,
  T11,
  DESCRIPTION,
  ANNOTATION 
)    pl_constructor_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_constructor_11 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  T10,
  DESCRIPTION,
  ANNOTATION 
)    pl_constructor_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_constructor_10 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  T9,
  DESCRIPTION,
  ANNOTATION 
)    pl_constructor_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_constructor_9 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  T8,
  DESCRIPTION,
  ANNOTATION 
)    pl_constructor_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, T8, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_constructor_8 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  T7,
  DESCRIPTION,
  ANNOTATION 
)    pl_constructor_16(NAME, T0, T1, T2, T3, T4, T5, T6, T7, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_constructor_7 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  T6,
  DESCRIPTION,
  ANNOTATION 
)    pl_constructor_16(NAME, T0, T1, T2, T3, T4, T5, T6, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_constructor_6 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  T5,
  DESCRIPTION,
  ANNOTATION 
)    pl_constructor_16(NAME, T0, T1, T2, T3, T4, T5, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_constructor_5 (   NAME,
  T0,
  T1,
  T2,
  T3,
  T4,
  DESCRIPTION,
  ANNOTATION 
)    pl_constructor_16(NAME, T0, T1, T2, T3, T4, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_constructor_4 (   NAME,
  T0,
  T1,
  T2,
  T3,
  DESCRIPTION,
  ANNOTATION 
)    pl_constructor_16(NAME, T0, T1, T2, T3, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, PLCore::NullType, DESCRIPTION, ANNOTATION)
#define pl_ret_type (   RET)    RET

Declare return type for a method.

Parameters:
[in]RETReturn type
Remarks:
This macro is there to provide a better readability of the RTTI declaration macros by marking the first type explicitly as a return type. Actually you don't need to use it, but it is recommended to do so :-)
#define pl_class_end

End class declaration.

#define pl_implement_class (   CLASS)    __pl_class_impl(CLASS) \

Define class.

Parameters:
[in]CLASSClass name (without namespace)


PixelLight PixelLight 0.9.10-R1
Copyright (C) 2002-2011 by The PixelLight Team
Last modified Fri Dec 23 2011 15:51:06
The content of this PixelLight document is published under the
Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported