Compare commits
No commits in common. "9dfb6e4740211796745014f8d0d97368544d553f" and "eaad6ba6e0a175cfa9f930bf459cdd69d41756d3" have entirely different histories.
9dfb6e4740
...
eaad6ba6e0
@ -96,7 +96,7 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#define rcp_managed_root(classname) \
|
#define rcp_root() \
|
||||||
public: \
|
public: \
|
||||||
void rcp_inc() const \
|
void rcp_inc() const \
|
||||||
{ \
|
{ \
|
||||||
@ -110,11 +110,9 @@ public:
|
|||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
private: \
|
private: \
|
||||||
mutable std::atomic<int> ref_count{0}; \
|
mutable std::atomic<int> ref_count{0}
|
||||||
rcp_managed(classname)
|
|
||||||
|
|
||||||
#define rcp_managed(classname) \
|
#define rcp_managed(classname) \
|
||||||
public: \
|
|
||||||
rcp<classname> get_rcp() \
|
rcp<classname> get_rcp() \
|
||||||
{ \
|
{ \
|
||||||
return rcp<classname>(this); \
|
return rcp<classname>(this); \
|
||||||
@ -123,5 +121,4 @@ public:
|
|||||||
static rcp<classname> create(Args&&... args) \
|
static rcp<classname> create(Args&&... args) \
|
||||||
{ \
|
{ \
|
||||||
return (new classname(std::forward<Args>(args)...))->get_rcp(); \
|
return (new classname(std::forward<Args>(args)...))->get_rcp(); \
|
||||||
} \
|
}
|
||||||
private:
|
|
||||||
|
|||||||
@ -8,7 +8,7 @@ static int myderived_destruct;
|
|||||||
|
|
||||||
class MyBase
|
class MyBase
|
||||||
{
|
{
|
||||||
rcp_managed_root(MyBase);
|
rcp_root();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
MyBase(int x, int y)
|
MyBase(int x, int y)
|
||||||
@ -20,12 +20,13 @@ protected:
|
|||||||
{
|
{
|
||||||
mybase_destruct++;
|
mybase_destruct++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
rcp_managed(MyBase);
|
||||||
};
|
};
|
||||||
|
|
||||||
class MyDerived : public MyBase
|
class MyDerived : public MyBase
|
||||||
{
|
{
|
||||||
rcp_managed(MyDerived);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
MyDerived(double v) : MyBase(1, 2)
|
MyDerived(double v) : MyBase(1, 2)
|
||||||
{
|
{
|
||||||
@ -36,6 +37,9 @@ protected:
|
|||||||
{
|
{
|
||||||
myderived_destruct++;
|
myderived_destruct++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
rcp_managed(MyDerived)
|
||||||
};
|
};
|
||||||
|
|
||||||
void t1()
|
void t1()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user