#include <assert.h>
#include "std/config.H"
#include "std/thread_mutex.H"
Go to the source code of this file.
Compounds | |
class | REFcounter |
class | REFlock |
class | REFptr |
Defines | |
#define | REF_CLASS(FOO) FOO; typedef REFptr<FOO> FOO##ptr; class FOO |
#define | FD_REF_CLASS(FOO) FOO; typedef REFptr<FOO> FOO##ptr |
#define | cREFptr const REFptr |
#define | REF_ME(A) ((REFcounter *)A) |
#define | MAKE_PTR_BASEC(A) |
#define | MAKE_PTR_SUBC(A, B) |
|
|
|
|
|
Value: class A; \ class A##subc { \ public : \ virtual A *A##cast() const = 0; \ }; \ typedef const class A##ptr c##A##ptr; \ class A##ptr : public REFptr<A>, public A##subc { \ public : \ A##ptr() { }\ A##ptr(A *g): REFptr<A>(g) { }\ A##ptr(const A##ptr &p): REFptr<A>(p.p_) { }\ A##ptr(const A##subc &p): REFptr<A>(p.A##cast()) { } \ \ virtual A *A##cast() const { return p_; } \ } |
|
Value: class A; \ class A##subc: public B##subc { \ public : \ virtual A *A##cast() const = 0; \ virtual B *B##cast() const { return (B *)A##cast(); } \ }; \ typedef const class A##ptr c##A##ptr; \ class A##ptr : public REFptr<A>, public A##subc { \ public : \ A##ptr() { }\ A##ptr(A *g): REFptr<A>(g) { }\ A##ptr(const A##ptr &p): REFptr<A>(p.p_) { }\ A##ptr(const A##subc &p): REFptr<A>(p.A##cast()) { } \ \ virtual A *A##cast() const { return p_; } \ } |
|
|
|
|