acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
aaa_member.h
1//
2// member.h
3// acme
4//
5// Created by Camilo Sasuke Thomas Borregaard Soerensen on 28/02/20.
6//
7#pragma once
8
12//
13//
14// template < typename TYPE >
15// class member// :
16// //virtual public matter
17// {
18// public:
19//
20//
21// member() : m_p(nullptr) {}
22//
23// TYPE* get() { return m_p; }
24// TYPE* get() const { return m_p; }
25//
26// operator TYPE* () const { return m_p; }
27// operator TYPE* () { return m_p; }
28//
29// TYPE* operator ->() const { return m_p; }
30// TYPE* operator ->() { return m_p; }
31//
32// bool is_null() const { return __pointer_is_null(m_p); }
33// bool is_set() const { return __pointer_is_set(m_p); }
34// bool operator !() const { return is_null(); }
35//
36// template < typename OBJECT >
37// ::pointer<OBJECT>cast() const;
38//
39//
40// protected:
41//
42// friend class ::object;
43//
44// TYPE* m_p;
45// void clear_member() { m_p = nullptr; }
46//
47//
48// public:
49//
50// member& operator = (const ::prototype::member < TYPE >& member) { m_p = member.m_p; return *this; }
51//
52// template < typename OBJECT >
53// member& operator = (const ::pointer<OBJECT>& p) { m_p = dynamic_cast <TYPE*> ((OBJECT*)p.m_p); return *this; }
54//
55// template < typename OBJECT >
56// member& operator = (const ::ptr< OBJECT >& p) { m_p = dynamic_cast <TYPE*> ((OBJECT*)p.m_p); return *this; }
57//
58// template < typename OBJECT >
59// member& operator = (const OBJECT* p) { m_p = dynamic_cast <TYPE*> ((OBJECT*)p); return *this; }
60//
61// //virtual void clear_member() override { m_p = nullptr; }
62//
63// //bool is_composite()const
64// //{
65// // return is_set() && m_p->m_eobject & e_object_composite;
66// //}
67//
68// };
69//
70//
71// template < typename TYPE >
72// class composite :
73// public member < TYPE >
74// //virtual public member < TYPE >
75// {
76// public:
77//
78//
79// //composite() : matter(e_object_acquire) { }
80//
81//
82//
83// protected:
84// friend class ::object;
85// using member < TYPE > ::operator =;
86//
87// bool is_composite()const { return true; }
88//
89// };
90//
91//
92// template < typename TYPE >
93// class reference :
94// public member < TYPE >
95// //virtual public member < TYPE >
96// {
97// public:
98//
99//
100// reference() { }
101//
102// protected:
103// friend class ::object;
104// using member < TYPE > ::operator =;
105//
106//
107// };
108//
111
112//
113//#define __member(TYPE) ::prototype::member < TYPE >
114//#define ::pointer<TYPE>::prototype::composite < TYPE >
115//#define ::pointer<TYPE>::prototype::reference < TYPE >
116
117//
118//template<typename TYPE>
119//inline bool is_null(const ::pointer<TYPE>& p)
120//{
121//
122// return p.is_null();
123//
124//}
125
126
127
128
129