16 #ifndef INCLUDE_NN_NLIB_EXI_EXIALLOCATOR_H_ 17 #define INCLUDE_NN_NLIB_EXI_EXIALLOCATOR_H_ 23 #include "nn/nlib/Swap.h" 25 #if defined(_MSC_VER) && defined(nx_exi_EXPORTS) 26 #undef NLIB_VIS_PUBLIC 27 #define NLIB_VIS_PUBLIC NLIB_WINEXPORT 33 struct ExiAllocatorInfo;
49 void* Realloc(
void* ptr,
size_t from_nbytes,
size_t nbytes)
NLIB_NOEXCEPT;
61 ExiAllocatorInfo* prv_;
62 friend class ExiAllocator;
70 static void* Realloc(
void* ptr,
size_t from_nbytes,
size_t nbytes)
NLIB_NOEXCEPT;
87 if (m_Al) ExiAllocator::Swap(rhs);
90 if (m_Swapped) ExiAllocator::Swap(m_Al);
99 #ifdef NN_PLATFORM_CTR 101 #define NEXI_DEF_NEW_DELETE(typeName) \ 102 static void* operator new(size_t size) throw() { \ 103 NLIB_ASSERT(size == sizeof(typeName)); \ 104 return ExiAllocator::Alloc(size); \ 106 static void* operator new(size_t size, const std::nothrow_t&) throw() { \ 107 NLIB_ASSERT(size == sizeof(typeName)); \ 108 return ExiAllocator::Alloc(size); \ 110 static void* operator new(size_t size, void* ptr) throw() { \ 111 return ::operator new(size, ptr); \ 113 static void operator delete(void* p) throw() { ExiAllocator::Dealloc(p); } \ 114 static void* operator new[](size_t size, void* p) throw(); \ 115 static void operator delete[](void* p) throw() 117 #define NEXI_DISALLOW_NEW_DELETE(typeName) \ 119 static void* operator new(size_t size, void* ptr) throw() { \ 120 return ::operator new(size, ptr); \ 124 static void* operator new(size_t size) throw(); \ 125 static void* operator new(size_t size, const std::nothrow_t&) throw(); \ 126 static void operator delete(void* p) throw(); \ 127 static void* operator new[](size_t size, void* p) throw(); \ 128 static void* operator new[](size_t size, const std::nothrow_t&) throw(); \ 129 static void operator delete[](void* p) throw() 131 #define NEXI_DEF_NEW_DELETE(typeName) \ 133 static void* operator new[](size_t size); \ 134 static void* operator new[](size_t size, void* p) NLIB_NOEXCEPT; \ 135 static void* operator new[](size_t size, const std::nothrow_t&) NLIB_NOEXCEPT; \ 136 static void operator delete[](void* p) NLIB_NOEXCEPT; \ 137 static void operator delete[](void* p, void* ptr) NLIB_NOEXCEPT; \ 138 static void operator delete[](void* p, const std::nothrow_t&) NLIB_NOEXCEPT; \ 141 static void* operator new(size_t size) { \ 142 NLIB_ASSERT(size == sizeof(typeName)); \ 143 return ExiAllocator::Alloc(size); \ 145 static void* operator new(size_t size, const std::nothrow_t&) NLIB_NOEXCEPT { \ 146 NLIB_ASSERT(size == sizeof(typeName)); \ 147 return ExiAllocator::Alloc(size); \ 149 static void* operator new(size_t size, void* ptr) NLIB_NOEXCEPT { \ 150 return ::operator new(size, ptr); \ 152 static void operator delete(void* p)NLIB_NOEXCEPT { ExiAllocator::Dealloc(p); } \ 153 static void operator delete(void* p, const std::nothrow_t&)NLIB_NOEXCEPT { \ 154 ExiAllocator::Dealloc(p); \ 156 static void operator delete(void* p, void* ptr)NLIB_NOEXCEPT { \ 157 return ::operator delete(p, ptr); \ 161 #define NEXI_DISALLOW_NEW_DELETE(typeName) \ 163 static void* operator new(size_t size, void* ptr) NLIB_NOEXCEPT { \ 164 return ::operator new(size, ptr); \ 166 static void operator delete(void* p, void* ptr)NLIB_NOEXCEPT { \ 167 return ::operator delete(p, ptr); \ 169 static void operator delete(void* p)NLIB_NOEXCEPT { \ 175 static void* operator new(size_t size); \ 176 static void* operator new(size_t size, const std::nothrow_t&) NLIB_NOEXCEPT; \ 177 static void operator delete(void* p, const std::nothrow_t&)NLIB_NOEXCEPT; \ 178 static void* operator new[](size_t size); \ 179 static void* operator new[](size_t size, void* p) NLIB_NOEXCEPT; \ 180 static void* operator new[](size_t size, const std::nothrow_t&) NLIB_NOEXCEPT; \ 181 static void operator delete[](void* p) NLIB_NOEXCEPT; \ 182 static void operator delete[](void* p, void* ptr) NLIB_NOEXCEPT; \ 183 static void operator delete[](void* p, const std::nothrow_t&) NLIB_NOEXCEPT 185 #define NEXI_DISALLOW_NEW_DELETE(typeName) NLIB_STATIC_ASSERT(true) 192 #if defined(_MSC_VER) && defined(nx_exi_EXPORTS) 193 #undef NLIB_VIS_PUBLIC 194 #define NLIB_VIS_PUBLIC NLIB_WINIMPORT 197 #endif // INCLUDE_NN_NLIB_EXI_EXIALLOCATOR_H_ XMLパーサーが内部で利用するアロケータです。ユーザーが利用することもできます。
文字列型のtypedefやユーティリティマクロ等が定義されています。
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
#define NLIB_SAFE_BOOL(class_name, exp)
クラス内に安全なoperator bool()を定義します。 可能であればC++11のexplicit boolを利用します。 ...
constexpr ExiAllocatorEx() noexcept
デフォルトコンストラクタです。
XmlStreamReader, XmlStreamWriter の各インスタンス毎に設定できるアロケータです。
ExiAllocatorEx & operator=(const ExiAllocatorEx &rhs) noexcept
代入演算子です。
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
#define NLIB_CEXPR
利用可能であればconstexprが定義されます。そうでない場合は空文字列です。
~ExiAllocatorEx() noexcept
デストラクタです。
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
ExiAllocatorEx(const ExiAllocatorEx &rhs) noexcept
コピーコンストラクタです。