Classes | |
struct | IsVObj< T > |
struct | doKeepRef< T > |
struct | doConstructGlobal< T > |
struct | doConstructLocal< T > |
struct | DoFullType2Int< T > |
struct | DynObjHolder< T > |
struct | DynObjPtr< T > |
struct | DynWeakRef< T > |
struct | RefCntDynObjPtr< T > |
struct | ScopedDynObj< T > |
Enumerations | |
enum | HoldMode { hmOwn = 1, hmShared, hmStatic, hmWeakRef, hmAutoOwn, hmAutoNoOwn, hmAuto } |
Functions | |
template<class U, class T> | |
internal U | do_cast (T *pt, doCastAlgo algo=doCastFull) |
template<class U, class T> | |
U | do_cast_ref (T &t, doCastAlgo algo=doCastFull) |
template<class U, class T> | |
U | do_cast_str (T *pt, doCastAlgo algo=doCastFull) |
template<class U, class T> | |
U | do_cast_ref_str (T &t, doCastAlgo algo=doCastFull) |
template<class T> | |
VObj * | to_vobj (T t) |
template<class I> | |
void | do_try (DynI *pdi, void(docall I::*func)()) |
template<class I, class RV> | |
RV | do_try (DynI *pdi, RV(docall I::*func)(), RV rv=0) |
template<class I, class A1, class _A1> | |
void | do_try (DynI *pdi, void(docall I::*func)(A1), _A1 a1) |
template<class I, class RV, class A1, class _A1> | |
RV | do_try (DynI *pdi, RV(docall I::*func)(A1), _A1 a1, RV rv=0) |
template<class I, class A1, class A2, class _A1, class _A2> | |
void | do_try (DynI *pdi, void(docall I::*func)(A1, A2), _A1 a1, _A2 a2) |
template<class I, class RV, class A1, class A2, class _A1, class _A2> | |
RV | do_try (DynI *pdi, RV(docall I::*func)(A1, A2), _A1 a1, _A2 a2, RV rv=0) |
template<class T, class A> | |
internal T * | do_new (A arg) |
template<class T> | |
T * | do_new () |
enum HoldMode |
Different modes to setup and hold an interface/class pointer.
internal U do_cast | ( | T * | pt, | |
doCastAlgo | algo = doCastFull | |||
) | [inline] |
Cast a pointer to another C++ type across DLL/SO boundaries. This does type lookup using information from the library compiler. It is the equivalent of dynamic_cast in C++ or QueryInterface in COM. It uses integer type ID:s internally (not type strings) and is therefore faster then string based casts.
U do_cast_ref | ( | T & | t, | |
doCastAlgo | algo = doCastFull | |||
) | [inline] |
Cast a reference to another C++ type across DLL/SO boundaries. This does type lookup using information from the source object compiler. It is the equivalent of dynamic_cast in C++ or QueryInterface in COM. It uses integer type ID:s internally (not type strings) and is therefore faster then string based casts.
U do_cast_ref_str | ( | T & | t, | |
doCastAlgo | algo = doCastFull | |||
) | [inline] |
As above but uses type strings and for references.
U do_cast_str | ( | T * | pt, | |
doCastAlgo | algo = doCastFull | |||
) | [inline] |
As above but uses type strings (and can therefore find custom objects). Using string based casts is slower than casts based on integer ID.
T* do_new | ( | ) | [inline] |
Create a new DynObj based on C++ type. No argument version. New object will receive a NULL pointer in constructor.
internal T* do_new | ( | A | arg | ) | [inline] |
RV do_try | ( | DynI * | pdi, | |
RV(docall I::*)(A1, A2) | func, | |||
_A1 | a1, | |||
_A2 | a2, | |||
RV | rv = 0 | |||
) | [inline] |
As above, two args, return value
void do_try | ( | DynI * | pdi, | |
void(docall I::*)(A1, A2) | func, | |||
_A1 | a1, | |||
_A2 | a2 | |||
) | [inline] |
As above, two args, no return value
RV do_try | ( | DynI * | pdi, | |
RV(docall I::*)(A1) | func, | |||
_A1 | a1, | |||
RV | rv = 0 | |||
) | [inline] |
As above, one arg, return value
void do_try | ( | DynI * | pdi, | |
void(docall I::*)(A1) | func, | |||
_A1 | a1 | |||
) | [inline] |
As above, one arg, no return value
RV do_try | ( | DynI * | pdi, | |
RV(docall I::*)() | func, | |||
RV | rv = 0 | |||
) | [inline] |
As above, but no args, return value
void do_try | ( | DynI * | pdi, | |
void(docall I::*)() | func | |||
) | [inline] |
A template to try to execute a single function on another interface. The function and arguments are passed along, and a default return value as last argument (0 if not specified). If cast to the other interface fails, the default value is returned. A reference cannot be returned in this way.
VObj* to_vobj | ( | T | t | ) | [inline] |