acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
pointer2.h
1#pragma once
2
3//CLASS_DECL_ACME void throw_resource_exception(const ::scoped_string & scopedstr);
4
5//template < class T >
6//inline pointer < T >::pointer(lparam& lparam)
7//{
8//
9// m_pparticle = (::particle*)(::iptr)lparam.m_lparam;
10// m_p = dynamic_cast <T*>(m_pparticle);
11// lparam.m_lparam = 0;
12//
13//}
14//
15//
24//template < class T >
25//inline pointer < T > ::pointer() :
26// m_p(nullptr),
27// m_pparticle(nullptr)
28//{
29//
30//}
31//
32//
33//template < class T >
34//inline pointer < T > ::pointer(nullptr_t):
35// m_p(nullptr),
36// m_pparticle(nullptr)
37//{
38//
39//}
40//
41//template < class T >
42//template < typename T2 >
43//inline pointer < T > ::pointer(enum_move_transfer, T2 * p)
44//{
45//
46// if(::is_set(p))
47// {
48//
49// m_p = dynamic_cast < T * > (p);
50//
51// m_pparticle = m_p;
52//
53// if(::is_null(m_p))
54// {
55//
56// ::release(p);
57//
58// m_p = nullptr;
59//
60// m_pparticle = nullptr;
61//
62// throw ::resource_exception("OBJECT * p is not of type T (pointer < T >).");
63//
64// }
65//
66// }
67// else
68// {
69//
70// m_p = nullptr;
71//
72// m_pparticle = nullptr;
73//
74// }
75//
76//}
77//
78//
79//template < class T >
80//inline pointer < T > ::pointer(const pointer & t) :
81// m_p(t.m_p),
82// m_pparticle(t.m_pparticle)
83//{
84//
85// if (::is_set(m_p))
86// {
87//
88// m_pparticle->increment_reference_count();
89//
90// }
91//
92//}
93//
94//
95//template < class T >
96//inline pointer < T > ::pointer(pointer && t) :
97//m_p(t.m_p),
98//m_pparticle(t.m_pparticle)
99//{
100//
101// t.m_p = nullptr;
102//
103// t.m_pparticle = nullptr;
104//
105//}
106//
107//
108//
119//
120//
121//
122//template < class T >
123//inline pointer < T > ::~pointer()
124//{
125//
126// release();
127//
128//}
129//
130//
131//template < class T >
132//inline T * pointer < T > ::operator ->()
133//{
134//
135// return m_p;
136//
137//}
138//
139//
140//template < class T >
141//inline T * pointer < T > ::operator ->() const
142//{
143//
144// return m_p;
145//
146//}
147//
148//
149//template < class T >
150//inline T & pointer < T > ::operator * ()
151//{
152//
153// return *m_p;
154//
155//}
156//
157//
158//template < class T >
159//inline T & pointer < T > ::operator * () const
160//{
161//
162// return *m_p;
163//
164//}
165//
166//
167//template < class T >
168//inline pointer < T > ::operator T * ()
169//{
170//
171// return m_p;
172//
173//}
174//
175//
176//template < class T >
177//inline pointer < T > ::operator T * const () const
178//{
179//
180// return m_p;
181//
182//}
183//
184//
185//template < class T >
186//inline T * pointer < T > ::get()
187//{
188//
189// return m_p;
190//
191//}
192//
193//
194//template < class T >
195//inline const T * pointer < T > ::get() const
196//{
197//
198// return m_p;
199//
200//}
201//
202//
203//template < class T >
204//inline bool pointer < T > ::is_null() const
205//{
206//
207// return ::is_null(m_p);
208//
209//}
210//
211//
212//template < class T >
213//inline bool pointer < T > ::is_set() const
214//{
215//
216// return ::is_set(m_p);
217//
218//}
219//
237//
238//
239//template < class T >
240//T* __dynamic_cast(const T* p)
241//{
242//
243// return (T*)p;
244//
245//}
246//
247//template < class T, typename T2 >
248//T * __dynamic_cast(const T2 * p)
249//{
250// return dynamic_cast <T*>((T2*)p);
251//}
252//
253//template < class T >
254//template < typename T2 >
255//inline pointer < T > & pointer < T > ::reset (T2 * pNew)
256//{
257//
258// if (::is_null(pNew))
259// {
260//
261// m_pparticle = nullptr;
262//
263// ::release(m_p);
264//
265// }
266// else
267// {
268//
269// T* p;
270//
271// __dynamic_cast(p, pNew);
272//
273// if (m_p != p)
274// {
275//
276// auto pOld = m_p;
277//
278// if (::is_set(p))
279// {
280//
281// p->increment_reference_count();
282//
283// m_p = p;
284//
285// m_pparticle = p;
286//
287// }
288// else
289// {
290//
291// m_p = nullptr;
292//
293// m_pparticle = nullptr;
294//
295// }
296//
297// if (::is_set(pOld))
298// {
299//
300// ::release(pOld);
301//
302// }
303//
304// }
305//
306// }
307//
308// return *this;
309//
310//}
311//
312//
313//template < class T >
314//inline pointer < T > & pointer < T > ::operator = (const pointer & t)
315//{
316// if (this != &t)
317// {
318//
319// auto pold = m_pparticle;
320//
321// m_p = t.m_p;
322//
323// m_pparticle = t.m_pparticle;
324//
325// if (::is_set(m_p))
326// {
327//
328// m_pparticle->increment_reference_count();
329//
330// }
331//
332// ::release(pold REF_DBG_COMMA_POINTER);
333//
334// }
335// return *this;
336//
337//}
338//
339//
340//template < class T >
341//inline pointer < T > & pointer < T > ::operator = (pointer && t)
342//{
343//
344// if(&t != this)
345// {
346//
347// auto pOld = m_pparticle;
348//
349// m_p = t.m_p;
350//
351// m_pparticle = t.m_pparticle;
352//
353// t.m_p = nullptr;
354//
355// t.m_pparticle = nullptr;
356//
357// ::release(pOld REF_DBG_COMMA_POINTER);
358//
359// }
360//
361// return *this;
362//
363//}
364//
365//
366//template < class T >
367//inline T * pointer < T > ::detach()
368//{
369//
370// auto p = m_p;
371//
372// m_p = nullptr;
373//
374// m_pparticle = nullptr;
375//
376// return p;
377//
378//}
379//
380//
383//template < class T >
384//inline ::i64 pointer <T>::release()
385//{
386//
387// m_p = nullptr;
388//
389// return ::release(m_pparticle);
390//
391//}
392//
393//
394//template < class T1, class T2 >
395//inline bool operator ==(const T1 * t1, const ::pointer<T2>& t2)
396//{
397// auto p1 = dynamic_cast < T1 * > (t2.m_p);
398// if(p1 != nullptr)
399// {
400// return p1 == t1;
401// }
402// auto p2 = dynamic_cast < T2 * > ((T1 *) t1);
403// if(p2 != nullptr)
404// {
405// return p2 == t2.m_p;
406// }
407// return false;
408//}
409//
410//
411//template < class T1, class T2 >
412//inline bool operator ==(const ::pointer<T1>& t1, const T2 * t2)
413//{
414// auto p1 = dynamic_cast < T1 * > ((T2 *) t2);
415// if(p1 != nullptr)
416// {
417// return p1 == t1.m_p;
418// }
419// auto p2 = dynamic_cast < T2 * > (t1.m_p);
420// if(p2 != nullptr)
421// {
422// return p2 == t2;
423// }
424// return false;
425//}
426//
427//
428//template < class T1, class T2 >
429//inline bool operator ==(const ::pointer<T1>& t1, const ::pointer<T2> t2)
430//{
431// auto p1 = dynamic_cast < T1 * > (t2.m_p);
432// if(p1 != nullptr)
433// {
434// return p1 == t1.m_p;
435// }
436// auto p2 = dynamic_cast < T2 * > (t1.m_p);
437// if(p2 != nullptr)
438// {
439// return p2 == t2.m_p;
440// }
441// return false;
442//}
443//
444//
445//template < class T1, class T2 >
446//inline bool operator ==(T1 * t1, const ::pointer<T2>& t2)
447//{
448//
449// return operator == ((const T1 *) t1, t2);
450//
451//}
452//
453//
454//template < class T1, class T2 >
455//inline bool operator ==(const ::pointer<T1>& t1, T2 * t2)
456//{
457//
458// return operator == (t1, (const T2 *) t2);
459//
460//}
461//
462//
463//template < class T1, class T2 >
464//inline bool operator !=(const T1 * t1, const ::pointer<T2>& t2)
465//{
466//
467// return !operator == (t1, t2);
468//
469//}
470//
471//
472//template < class T1, class T2 >
473//inline bool operator !=(const ::pointer<T1>& t1, const T2 * t2)
474//{
475//
476// return !operator == (t1, t2);
477//
478//}
479//
480//
481//template < class T1, class T2 >
482//inline bool operator !=(T1 * t1, const ::pointer<T2>& t2)
483//{
484//
485// return !operator == ((const T1 *) t1, t2);
486//
487//}
488//
489//
490//template < class T1, class T2 >
491//inline bool operator !=(const ::pointer<T1>& t1, T2 * t2)
492//{
493// return !operator == (t1, (const T2 *) t2);
494//}
495//
496//
497//template < class T1, class T2 >
498//inline bool operator !=(const ::pointer<T1>& t1, const ::pointer<T2> t2)
499//{
500//
501// return !operator == (t1, t2);
502//
503//}
511//
512//
520//
521//
522//template < typename TYPE >
523//inline ::pointer<TYPE>clone(const ::pointer<TYPE> & p)
524//{
525//
526// if (!p)
527// {
528//
529// return p;
530//
531// }
532//
533// auto pelement = p->clone();
534//
535// if(__pointer_is_null(pelement))
536// {
537//
538// throw ::exception(error_failed);
539//
540// }
541//
542// auto pNew = dynamic_cast < TYPE * > (pelement);
543//
544// if(__pointer_is_null(pNew))
545// {
546//
547// throw ::exception(error_wrong_type);
548//
549// }
550//
551// return ::pointer_transfer(pNew);
552//
553//}
554//
555//
556//template < typename TYPE >
557//inline ::pointer<TYPE>& clone(::pointer<TYPE> & p)
558//{
559//
560// return p = ::clone((const ::pointer<TYPE>&) p);
561//
562//}
563//
564//
565//template < typename TYPE >
566//inline ::pointer<TYPE>& defer_clone(::pointer<TYPE> & p)
567//{
568//
569// if (!p || p->reference_count() <= 1)
570// {
571//
572// return p;
573//
574// }
575//
576// return p = ::clone(p);
577//
578//}
579//
580//
581//template < typename TYPE >
582//ptr < TYPE > clone(TYPE * p)
583//{
584//
585// if(__pointer_is_null(p))
586// {
587//
588// throw ::exception(error_null_pointer);
589//
590// }
591//
592// auto pelement = p->clone();
593//
594// auto pNew = dynamic_cast < TYPE * > (pelement);
595//
596// if(__pointer_is_null(pNew))
597// {
598//
599// throw ::exception(error_wrong_type);
600//
601// }
602//
603// return ::pointer_transfer(pNew);
604//
605//}
606//
607//
608//