2005/5/9

     
 

acdksmartptr

artefaktur
Modules   Namespace List   Class Hierarchy   Alphabetical List   Compound List   Namespace Members   Compound Members   Related Pages  

SmartPointers and Garbage Collection


Detailed Description

Types and Macros used in connection of smart pointer and garbage collection.

Please refer also to  Language.


Compounds

class  ExtObjectPtr
 Wrapper to external class pointer. More...

class  ExtObjectSharedRef
 RefHolder type (R-type) for external (foreign) pointer. More...

class  ExtObjectVal
 Wrapper to external classes. More...

class  InterfaceHolder
 InterfaceHolder is the base template class to hold references to Interfaces. More...

class  LockedProxy
 A Proxy for synchronized access to acdk::lang::Object. More...

class  ObjectArrayImpl
 template implementation of acdk::lang::Object Arrays This will be used via the ACDK_DECL_CLASS() macro. More...

class  RBasicArray
 Smart Pointer wrapper for BasicArray<T>. More...

class  RefHolder
 RefHolder is the base template class to hold references. More...

class  RObjectArrayImpl
 reference holder for an array More...

class  RString
 specialization of RefClass1Interface<String, acdk::lang::Object, RComparable> to enable String related operators API: Java
More...

class  StaticObjectWrapper
 In case an Object has to be defined statically, this class helps to manage initialization and deinitialion order. More...

class  StaticObjectWrapper1
class  StaticObjectWrapper2
class  ThrowableHolder
 ThrowableHolder is the base template class to hold references to Throwables. More...


Defines

#define ACDK_DECL_EXT_CLASS_PTR(ClassName)
 Wrapp a non-ACDK pointer as a ACDK compible class.

#define ACDK_DECL_EXT_CLASS_VAL(ClassName)
 Wrapp a non-ACDK value as a ACDK compible class.

#define ACDK_DECL_CLASS(ClassName)
 Macro to declare a ACDK class It defines following types: - ClassName - RClassName - ClassNameArray - RClassNameArray.

#define ACDK_DECL_INTERFACE(InterfaceName)
 Macro to declare a ACDK interface It defines following types: - ClassName - RClassName - ClassNameArray - RClassNameArray.

#define ACDK_DECL_THROWABLE(ClassName, SuperName)
 Macro to declare a ACDK exception type.

#define ACDK_DECL_THROWABLE_FQ(ClassName, sns, SuperName)
 Macro to declare a ACDK exception type.

#define ACDK_DECL_CLASS_ARRAY(ClassName)
 Macro to declare a ACDK class Array.

#define USING_CLASS(Namespace, ClassName)
 used to import the given ACDK-Class into current namespace imports following type names: - ClassName - RClassName - ClassNameArray - RClassNameArray

#define SR(Type, obj)   asStackRef<R##Type, Type>(obj)
 SR(Type, object) is just a more brief macro for the template: template <class RT, class T> RT asStackRef(const T& obj).

#define SR_FQ(ns, Type, obj)   asStackRef<ns R##Type, ns Type>(obj)
 fully qualified version of macro SR(Type, obj)

#define ACDK_STATIC_INSTANCE0(Type, name)   static ::acdk::lang::sys::StaticObjectWrapper<Type, R##Type> name
 use this macro in method to declare a static method.

#define ACDK_STATIC_INSTANCE1(Type, ArgType1, arg1, name)   static ::acdk::lang::sys::StaticObjectWrapper1<Type, R##Type, ArgType1> name(arg1)
 use this macro in method to declare a static method.

#define ACDK_STATIC_INSTANCE2(Type, ArgType1, arg1, ArgType2, arg2, name)   static ::acdk::lang::sys::StaticObjectWrapper2<Type, R##Type, ArgType1, ArgType2> name(arg1, arg2)
 use this macro in method to declare a static method.


Functions

template<class RT, class T> RT asStackRef (const T &obj)
 Convert acdk::lang::Object allocated on Stack or static into a RefHolder.


Define Documentation

#define ACDK_DECL_CLASS ClassName   ) 
 

Value:

class ClassName; \
typedef ::RefHolder<ClassName> R##ClassName; \
typedef ::ObjectArrayImpl<R##ClassName> ClassName##Array; \
typedef ::RObjectArrayImpl<R##ClassName> R##ClassName##Array
Macro to declare a ACDK class It defines following types: - ClassName - RClassName - ClassNameArray - RClassNameArray.

#define ACDK_DECL_CLASS_ARRAY ClassName   ) 
 

Value:

typedef ::ObjectArrayImpl<R##ClassName> ClassName##Array; \
typedef ::RObjectArrayImpl<R##ClassName> R##ClassName##Array
Macro to declare a ACDK class Array.

This is usefull to declare Arrays from Arrays It defines following types:

  • ClassNameArray
  • RClassNameArray

#define ACDK_DECL_EXT_CLASS_PTR ClassName   ) 
 

Value:

class ClassName; \
typedef ::ExtObjectPtr<ClassName> ClassName##ObjectPtr; \
typedef ::ExtObjectSharedRef<ClassName##ObjectPtr> R##ClassName##ObjectPtr; \
typedef ::ObjectArrayImpl<R##ClassName##ObjectPtr> ClassName##ObjectPtr##Array; \
typedef ::RObjectArrayImpl<ClassName##ObjectPtr##Array> R##ClassName##ObjectPtr##Array
Wrapp a non-ACDK pointer as a ACDK compible class.

#define ACDK_DECL_EXT_CLASS_VAL ClassName   ) 
 

Value:

class ClassName; \
typedef ::ExtObjectVal<ClassName> ClassName##acdk::lang::Object; \
typedef ::RefHolder<ClassName##acdk::lang::Object> R##ClassName##acdk::lang::Object; \
typedef ::ObjectArrayImpl<R##ClassName##acdk::lang::Object> ClassName##acdk::lang::Object##Array; \
typedef ::RObjectArrayImpl<R##ClassName##acdk::lang::Object> R##ClassName##acdk::lang::Object##Array
Wrapp a non-ACDK value as a ACDK compible class.

#define ACDK_DECL_INTERFACE InterfaceName   ) 
 

Value:

class InterfaceName; \
typedef ::InterfaceHolder<InterfaceName> R##InterfaceName; \
typedef ::ObjectArrayImpl<R##InterfaceName> InterfaceName##Array; \
typedef ::RObjectArrayImpl<R##InterfaceName> R##InterfaceName##Array
Macro to declare a ACDK interface It defines following types: - ClassName - RClassName - ClassNameArray - RClassNameArray.

#define ACDK_DECL_THROWABLE ClassName,
SuperName   ) 
 

Value:

class ClassName; \
typedef ::ThrowableHolder<ClassName, R##SuperName> R##ClassName; \
typedef ::ObjectArrayImpl<R##ClassName> ClassName##Array; \
typedef ::RObjectArrayImpl<R##ClassName> R##ClassName##Array
Macro to declare a ACDK exception type.

Parameters:
ClassName name of the exception type
SuperName name of the derived exception type It defines following types:
  • ClassName
  • RClassName
  • ClassNameArray
  • RClassNameArray
See also:
ACDK_DECL_THROWABLE_FQ

#define ACDK_DECL_THROWABLE_FQ ClassName,
sns,
SuperName   ) 
 

Value:

class ClassName; \
typedef ::ThrowableHolder<ClassName, sns R##SuperName> R##ClassName; \
typedef ::ObjectArrayImpl<R##ClassName> ClassName##Array; \
typedef ::RObjectArrayImpl<R##ClassName> R##ClassName##Array
Macro to declare a ACDK exception type.

Parameters:
ClassName name of the exception type
sns namespace of the derived exception type
SuperName name of the derived exception type It defines following types:
  • ClassName
  • RClassName
  • ClassNameArray
  • RClassNameArray

#define ACDK_STATIC_INSTANCE0 Type,
name   )     static ::acdk::lang::sys::StaticObjectWrapper<Type, R##Type> name
 

use this macro in method to declare a static method.

See usage in acdk/util/logging/LogManager.cpp

Parameters:
Type type of the hold static instance
name of the static variable

#define ACDK_STATIC_INSTANCE1 Type,
ArgType1,
arg1,
name   )     static ::acdk::lang::sys::StaticObjectWrapper1<Type, R##Type, ArgType1> name(arg1)
 

use this macro in method to declare a static method.

See usage in acdk/util/logging/LogManager.cpp

Parameters:
Type type of the hold static instance
name of the static variable
ArgTyp1 type of the first constructor argument to create Type
arg1 variable delivered to constructor of Type

#define ACDK_STATIC_INSTANCE2 Type,
ArgType1,
arg1,
ArgType2,
arg2,
name   )     static ::acdk::lang::sys::StaticObjectWrapper2<Type, R##Type, ArgType1, ArgType2> name(arg1, arg2)
 

use this macro in method to declare a static method.

See usage in acdk/util/logging/LogManager.cpp

Parameters:
Type type of the hold static instance
name of the static variable
ArgTyp1 type of the first constructor argument to create Type
arg1 variable delivered to constructor of Type

#define SR Type,
obj   )     asStackRef<R##Type, Type>(obj)
 

SR(Type, object) is just a more brief macro for the template: template <class RT, class T> RT asStackRef(const T& obj).

#define SR_FQ ns,
Type,
obj   )     asStackRef<ns R##Type, ns Type>(obj)
 

fully qualified version of macro SR(Type, obj)

#define USING_CLASS Namespace,
ClassName   ) 
 

Value:

using Namespace ClassName;\
  using Namespace R##ClassName; \
  using Namespace ClassName##Array; \
  using Namespace R##ClassName##Array
used to import the given ACDK-Class into current namespace imports following type names: - ClassName - RClassName - ClassNameArray - RClassNameArray

Parameters:
Namespace the namspace of the class
ClassName the class name


Function Documentation

template<class RT, class T>
RT asStackRef const T &  obj  ) 
 

Convert acdk::lang::Object allocated on Stack or static into a RefHolder.

Prevents from deleting, if Reference count is 0