You.i Engine
YiDeleteFunctors.h
Go to the documentation of this file.
1 // © You i Labs Inc. 2000-2017. All rights reserved.
2 #ifndef _YI_DELETE_FUNCTORS_H_
3 #define _YI_DELETE_FUNCTORS_H_
4 
9 
25 template<typename YI_PTR_TYPE>
26 void YI_CHECKED_DELETE(YI_PTR_TYPE *pPtr)
27 {
28  // Enforcing a complete type by giving compile error if we're attempting to delete a forward declared type
29  typedef char YI_CHECKER[ sizeof(YI_PTR_TYPE)? 1 : -1 ];
30  (void) sizeof(YI_CHECKER);
31  delete pPtr;
32 }
33 
49 template<typename YI_PTR_TYPE>
50 void YI_CHECKED_ARRAY_DELETE(YI_PTR_TYPE pArray[])
51 {
52  // Enforcing a complete type by giving compile error if we're attempting to delete a forward declared type
53  typedef char YI_CHECKER[ sizeof(YI_PTR_TYPE)? 1 : -1 ];
54  (void) sizeof(YI_CHECKER);
55  delete [] pArray;
56 }
57 
63 template<typename YI_PTR_TYPE>
65 {
67  {
68  }
69 
70  template<typename YI_PTR_OTHER_TYPE>
72  {
73  }
74 
75  void operator()(YI_PTR_TYPE *pPtr)
76  {
77  YI_CHECKED_DELETE(pPtr);
78  }
79 };
80 
84 template<typename YI_PTR_TYPE>
86 {
87  void operator()(YI_PTR_TYPE pArray[])
88  {
90  }
91 };
92 
95 #endif
void YI_CHECKED_ARRAY_DELETE(YI_PTR_TYPE pArray[])
Definition: YiDeleteFunctors.h:50
CYICheckedDeleteFunctor(const CYICheckedDeleteFunctor< YI_PTR_OTHER_TYPE > &)
Definition: YiDeleteFunctors.h:71
Definition: YiDeleteFunctors.h:85
void operator()(YI_PTR_TYPE *pPtr)
Definition: YiDeleteFunctors.h:75
void operator()(YI_PTR_TYPE pArray[])
Definition: YiDeleteFunctors.h:87
void YI_CHECKED_DELETE(YI_PTR_TYPE *pPtr)
Definition: YiDeleteFunctors.h:26
Definition: YiDeleteFunctors.h:64
CYICheckedDeleteFunctor()
Definition: YiDeleteFunctors.h:66