Diarkis C++Client Library API Document
common.h
Go to the documentation of this file.
1 // © 2019-2024 Diarkis Inc. All rights reserved.
2 
3 #pragma once
4 
5 #ifdef DIARKIS_ENABLE_UE_BUILD
6 
7 #include "CoreMinimal.h"
8 
9 #if PLATFORM_WINDOWS
10 #include "Windows/WindowsSystemIncludes.h"
11 #include "Windows/AllowWindowsPlatformTypes.h"
12 #endif
13 
14 THIRD_PARTY_INCLUDES_START
15 
16 #endif // DIARKIS_ENABLE_UE_BUILD
17 
18 #include "diarkis/config.h"
19 #include "diarkis/diarkis_export.h"
20 #include "system/stringHash.h"
21 
22 #include <type_traits>
23 #include <vector>
24 #include <string>
25 #include <cstring>
26 #include <memory>
27 #include <queue>
28 #include <deque>
29 #include <map>
30 #include <unordered_map>
31 #include <atomic>
32 #include <cassert>
33 
34 #ifdef DIARKIS_ENABLE_UE_BUILD
35 
36 THIRD_PARTY_INCLUDES_END
37 
38 #if PLATFORM_WINDOWS
39 #include "Windows/HideWindowsPlatformTypes.h"
40 #endif
41 
42 #endif // DIARKIS_ENABLE_UE_BUILD
43 
44 #ifndef DIARKIS_ENABLE_UE_BUILD
45 // When the runtime is built as a UE plugin, some interface classes will be exported from the plugin, so we need to specify DIARKIS_API for each class.
46 // But this macro won't be defined when the runtime is built alone, so we define this macro with empty to commonize the source code between the alone build and the UE build.
47 #define DIARKIS_API
48 #endif
49 
50 // A macro suppressing the warning for unused variables by the compiler.
51 #define DIARKIS_UNUSED(var) (void)var
52 // The behavior of the macro is the same as DIARKIS_UNUSED, but this macro means there could be a warning in some build configurations only.
53 #define DIARKIS_UNUSED_IN_RELEASE(var) DIARKIS_UNUSED(var)
54 
55 #define DIARKIS_ASSERT(x, msg) assert(x && msg)
56 
57 #define DIARKIS_AUTHKEY_LEN 16
58 
59 // we might want to move to another header file
60 struct Credentials {
64 };
65 struct AuthInfo {
67  struct Credentials cred;
68 };
69 
70 // ADD NAMESPACE NAME TAG
71 namespace Diarkis
72 {
73  static const char* diarkisVersion = "v1.0.0";
74 
75  inline const char* GetVersion()
76  {
77  return Diarkis::diarkisVersion;
78  }
79 
92  class DIARKIS_EXPORT ICustomAllocator
93  {
94  public:
96  virtual ~ICustomAllocator() {}
97 
98  virtual void* Allocate(size_t size, int flag) = 0;
99  virtual void* AlignedAllocate(size_t size, size_t align, int flag) = 0;
100  virtual void Deallocate(void* ptr) = 0;
101  };
102 
109  class DIARKIS_EXPORT DiarkisDefaultAllocator : public ICustomAllocator
110  {
111  public:
113  virtual ~DiarkisDefaultAllocator();
114 
115  virtual void* Allocate(size_t size, int flag) override;
116  virtual void* AlignedAllocate(size_t size, size_t align, int flag) override;
117  virtual void Deallocate(void* ptr) override;
118 
119  size_t GetAllocatedSize() const;
120 
121  private:
122  std::atomic<size_t>* allocatedSize_;
123  char buff_[sizeof(std::atomic<size_t>)];
124  };
125 
126  class DIARKIS_EXPORT IFixedAreaMemoryAllocator : public ICustomAllocator
127  {
128  public:
131 
132  virtual int Initialize(void* startAddr, std::size_t mainAreaSize, size_t manageAreaSize, std::size_t align) = 0;
133  virtual void DeInitialize() = 0;
134 
135  virtual std::size_t GetAllocatedSize() const = 0;
136  virtual void PrintStatistics() const = 0;
137 
138  static std::size_t GetManageAreaMemorySize(std::size_t size, std::size_t align);
139  };
140 
147  DIARKIS_EXPORT ICustomAllocator* SetCustomAllocator(ICustomAllocator* pAllocator);
148 
157  DIARKIS_EXPORT DiarkisDefaultAllocator* GetDefaultAllocator();
158 
167  DIARKIS_EXPORT IFixedAreaMemoryAllocator* GetFixedAreaMemoryAllocator();
168 
169  DIARKIS_EXPORT void* DiarkisAlloc(size_t size, int flag = 0);
170 
171  DIARKIS_EXPORT void* DiarkisAlignedAlloc(size_t size, size_t align, int flag = 0);
172 
173  DIARKIS_EXPORT void DiarkisFree(void* ptr);
174 
175  template<class T, class... _Types>
176  inline T* DiarkisNew(_Types&&... _Args)
177  {
178  void* pMemory = DiarkisAlloc(sizeof(T));
179  return new(pMemory) T(std::forward<_Types>(_Args)...);
180  }
181 
182  template <class T, typename std::enable_if<std::is_array<T>::value, int>::type = 0>
183  inline typename std::remove_extent<T>::type* DiarkisNew(const size_t N)
184  {
185  using _Elem = typename std::remove_extent<T>::type;
186  void* pMemory = DiarkisAlloc(sizeof(_Elem) * N);
187  return new(pMemory) _Elem[N];
188  }
189 
190  template<class T>
191  inline void DiarkisDelete(T* ptr)
192  {
193  ptr->~T();
194  DiarkisFree((void*)(ptr));
195  }
196 
197  template <class T>
199  using value_type = T;
200 
202 
203  template <class U>
205 
206  T* allocate(std::size_t n)
207  {
208  return reinterpret_cast<T*>(DiarkisAlloc(sizeof(T) * n));
209  }
210 
211  void deallocate(T* p, std::size_t n)
212  {
213  static_cast<void>(n);
214  DiarkisFree(p);
215  }
216  };
217 
218  template <class T, class U>
220  {
221  return true;
222  }
223 
224  template <class T, class U>
226  {
227  return false;
228  }
229 
230  // deleter for StdUniquePtr
231  template<class T>
233  {
234  constexpr DiarkisAllocatorDeleter() noexcept = default;
235 
236  template<
237  typename U,
238  typename std::enable_if<std::is_convertible<U*, T*>::value, std::nullptr_t>::type = nullptr
239  >
240 
242 
243  void operator()(T* ptr) const
244  {
245  DiarkisDelete(ptr);
246  }
247  };
248 
249  // deleter for StdUniquePtr to array of unknown size
250  template<class T>
252  {
253  constexpr DiarkisAllocatorDeleter() noexcept = default;
254 
255  template<
256  typename U,
257  typename std::enable_if<std::is_convertible<U(*)[], T(*)[]>::value, std::nullptr_t>::type = nullptr
258  >
260 
261  void operator()(T* ptr) const
262  {
263  DiarkisDelete(ptr);
264  }
265  };
266 #if defined(DIARKIS_DISABLE_CUSTOM_ALLOCATOR_FOR_STD_LIBS)
267  template<class T>
268  using StdUniquePtr = std::unique_ptr<T>;
269 
270  template <class T, class... _Types, typename std::enable_if<!std::is_array<T>::value, int>::type = 0>
271  inline StdUniquePtr<T> DiarkisAllocUnique(_Types&&... _Args)
272  {
273  return std::move(StdUniquePtr<T>(DiarkisNew<T>(std::forward<_Types>(_Args)...)));
274  }
275 
276  template <class T, typename std::enable_if<std::is_array<T>::value, int>::type = 0>
277  inline StdUniquePtr<T> DiarkisAllocUnique(const size_t N)
278  {
279  return std::move(StdUniquePtr<T>(DiarkisNew<T>(N)));
280  }
281 
282  template<class T, class... _Types>
283  inline std::shared_ptr<T> DiarkisAllocShared(_Types&&... _Args)
284  {
285  std::allocator<T> alloc;
286  return std::allocate_shared<T>(alloc, std::forward<_Types>(_Args)...);
287  }
288 
289  template<class T>
290  using StdVector = std::vector<T>;
291 
292  template<class T>
293  using StdBasicString = std::basic_string<T, std::char_traits<T>>;
294 
295  using StdString = StdBasicString<char>;
296 
297  template<class T>
298  using StdBasicStringBuf = std::basic_stringbuf<T, std::char_traits<T>>;
299 
300  template<class T>
301  using StdBasicIStringStream = std::basic_istringstream<T, std::char_traits<T>>;
302 
303  template<class T>
304  using StdBasicOStringStream = std::basic_ostringstream<T, std::char_traits<T>>;
305 
306  template<class T>
307  using StdBasicStringStream = std::basic_stringstream<T, std::char_traits<T>>;
308 
309  using StdStringBuf = StdBasicStringBuf<char>;
310  using StdIStringStream = StdBasicIStringStream<char>;
311  using StdOStringStream = StdBasicOStringStream<char>;
312  using StdStringStream = StdBasicStringStream<char>;
313 
314  template <typename T>
315  struct StdStringHash
316  {
317  std::size_t operator()(const T& obj) const noexcept
318  {
319  // Fallback implementation.
320  auto hashfn = std::hash<T> {};
321  return hashfn(obj);
322  }
323  };
324 
325  template <>
326  struct StdStringHash<StdString>
327  {
328  std::size_t operator()(const StdString& s) const noexcept
329  {
330  return hash_bytes(s.data(), s.size());
331  }
332  };
333 
334  template<class T>
335  using StdDeque = std::deque<T>;
336 
337  template<class T>
338  using StdQueue = std::queue<T, StdDeque<T>>;
339 
340  template<class Key, class Value>
341  using StdMap = std::map<Key, Value, std::less<Key>>;
342 
343  template<class Key, class Value>
344  using StdUnorderedMap = std::unordered_map<Key, Value, StdStringHash<Key>, std::equal_to<Key>>;
345 
346  inline StdString to_string(int value)
347  {
348  return std::to_string(value);
349  }
350  inline StdString to_string(long value)
351  {
352  return std::to_string(value);
353  }
354  inline StdString to_string(long long value)
355  {
356  return std::to_string(value);
357  }
358  inline StdString to_string(unsigned value)
359  {
360  return std::to_string(value);
361  }
362  inline StdString to_string(unsigned long value)
363  {
364  return std::to_string(value);
365  }
366  inline StdString to_string(unsigned long long value)
367  {
368  return std::to_string(value);
369  }
370  inline StdString to_string(float value)
371  {
372  return std::to_string(value);
373  }
374  inline StdString to_string(double value)
375  {
376  return std::to_string(value);
377  }
378  inline StdString to_string(long double value)
379  {
380  return std::to_string(value);
381  }
382 #else
383  template<class T>
384  using StdUniquePtr = std::unique_ptr<T, Diarkis::DiarkisAllocatorDeleter<T>>;
385 
386  template <class T, class... _Types, typename std::enable_if<!std::is_array<T>::value, int>::type = 0>
387  inline StdUniquePtr<T> DiarkisAllocUnique(_Types&&... _Args)
388  {
389  return std::move(StdUniquePtr<T>(DiarkisNew<T>(std::forward<_Types>(_Args)...)));
390  }
391 
392  template <class T, typename std::enable_if<std::is_array<T>::value, int>::type = 0>
393  inline StdUniquePtr<T> DiarkisAllocUnique(const size_t N)
394  {
395  return std::move(StdUniquePtr<T>(DiarkisNew<T>(N)));
396  }
397 
398  template<class T, class... _Types>
399  inline std::shared_ptr<T> DiarkisAllocShared(_Types&&... _Args)
400  {
402  return std::allocate_shared<T>(alloc, std::forward<_Types>(_Args)...);
403  }
404 
405  template<class T>
406  class StdVector : public std::vector<T, DiarkisStdAllocator<T>>
407  {
408  public:
409  StdVector() : std::vector<T, DiarkisStdAllocator<T>>() {}
410  StdVector(size_t count) : std::vector<T, DiarkisStdAllocator<T>>(count) {}
411  StdVector(size_t count, const T& value) : std::vector<T, DiarkisStdAllocator<T>>(count, value) {}
412  StdVector(std::initializer_list<T> ilist) : std::vector<T, DiarkisStdAllocator<T>>(ilist) {}
413  template <class _Iter>
414  StdVector(_Iter _First, _Iter _Last) : std::vector<T, DiarkisStdAllocator<T>>(_First, _Last) {}
415  StdVector(const std::vector<T>& data) : std::vector<T, DiarkisStdAllocator<T>>(data.begin(), data.end()) {}
416  StdVector(const StdVector<T>& data) : std::vector<T, DiarkisStdAllocator<T>>(data) {}
417 
418  inline StdVector& operator=(const std::vector<T>& data)
419  {
420  std::vector<T, DiarkisStdAllocator<T>>::operator=(data);
421  return *this;
422  }
423  inline StdVector& operator=(const StdVector&) = default;
424  inline StdVector& operator=(StdVector&&) = default;
425  inline operator std::vector<T>() const
426  {
427  return std::vector<T>(std::vector<T, DiarkisStdAllocator<T>>::cbegin(), std::vector<T, DiarkisStdAllocator<T>>::cend());
428  }
429 
430  };
431 
432  class StdString : public std::basic_string<char, std::char_traits<char>, DiarkisStdAllocator<char>>
433  {
434  public:
435  StdString() : std::basic_string<char, std::char_traits<char>, DiarkisStdAllocator<char>>() {}
436  StdString(const char *str) : std::basic_string<char, std::char_traits<char>, DiarkisStdAllocator<char>>(str) {}
437  StdString(const std::string &s) : std::basic_string<char, std::char_traits<char>, DiarkisStdAllocator<char>>(s.begin(), s.end()) {}
438  StdString(const char* str, size_t size) : std::basic_string<char, std::char_traits<char>, DiarkisStdAllocator<char>>(str, size) {}
439  StdString(const StdString &s) : std::basic_string<char, std::char_traits<char>, DiarkisStdAllocator<char>>(s.begin(), s.end()) {}
440  StdString(const std::basic_string<char, std::char_traits<char>, DiarkisStdAllocator<char>> str) : std::basic_string<char, std::char_traits<char>, DiarkisStdAllocator<char>>(str) {}
441  StdString(size_t count, char ch) : std::basic_string<char, std::char_traits<char>, DiarkisStdAllocator<char>>(count, ch) {}
442 
443  template <class _Iter>
444  StdString(_Iter _First, _Iter _Last) : std::basic_string<char, std::char_traits<char>, DiarkisStdAllocator<char>>(_First, _Last) {}
445 
446  inline StdString& operator=(const char *str)
447  {
448  std::basic_string<char, std::char_traits<char>, DiarkisStdAllocator<char>>::operator=(str);
449  return *this;
450  }
451  inline StdString& operator=(const std::string& s)
452  {
453  std::basic_string<char, std::char_traits<char>, DiarkisStdAllocator<char>>::operator=(s.c_str());
454  return *this;
455  }
456  inline StdString& operator=(const StdString&) = default;
457  inline StdString& operator=(StdString&&) = default;
458 
459  inline operator std::string() const
460  {
461  return std::string(std::basic_string<char, std::char_traits<char>, DiarkisStdAllocator<char>>::cbegin(), std::basic_string<char, std::char_traits<char>, DiarkisStdAllocator<char>>::cend());
462  }
463  };
464 
465  inline StdString operator+ (const StdString& lhs, const StdString& rhs)
466  {
467  StdString result(lhs);
468  result += rhs;
469  return result;
470  }
471  inline StdString operator+ (const StdString& lhs, const char* rhs)
472  {
473  return operator+(lhs, StdString(rhs));
474  }
475  inline StdString operator+ (const char* lhs, const StdString& rhs)
476  {
477  return operator+(StdString(lhs), rhs);
478  }
479  inline StdString operator+ (const StdString& lhs, const char rhs)
480  {
481  return operator+(lhs, StdString(1, rhs));
482  }
483  inline StdString operator+ (const char lhs, const StdString& rhs)
484  {
485  return operator+(StdString(1, lhs), rhs);
486  }
487 
488  template<class T>
489  using StdBasicStringBuf = std::basic_stringbuf<T, std::char_traits<T>, DiarkisStdAllocator<T>>;
490 
491  template<class T>
492  using StdBasicIStringStream = std::basic_istringstream<T, std::char_traits<T>, DiarkisStdAllocator<T>>;
493 
494  template<class T>
495  using StdBasicOStringStream = std::basic_ostringstream<T, std::char_traits<T>, DiarkisStdAllocator<T>>;
496 
497  template<class T>
498  using StdBasicStringStream = std::basic_stringstream<T, std::char_traits<T>, DiarkisStdAllocator<T>>;
499 
504 
505  template <typename T>
507  {
508  std::size_t operator()(const T& obj) const noexcept
509  {
510  // Fallback implementation.
511  auto hashfn = std::hash<T> {};
512  return hashfn(obj);
513  }
514  };
515 
516  template <>
518  {
519  std::size_t operator()(const StdString& s) const noexcept
520  {
521  return hash_bytes(s.data(), s.size());
522  }
523  };
524 
525  template<class T>
526  using StdDeque = std::deque<T, Diarkis::DiarkisStdAllocator<T>>;
527 
528  template<class T>
529  using StdQueue = std::queue<T, StdDeque<T>>;
530 
531  template<class Key, class Value>
532  using StdMap = std::map<Key, Value, std::less<Key>, Diarkis::DiarkisStdAllocator<std::pair<const Key, Value>>>;
533 
534  template<class Key, class Value>
535  using StdUnorderedMap = std::unordered_map<Key, Value, StdStringHash<Key>, std::equal_to<Key>, Diarkis::DiarkisStdAllocator<std::pair<const Key, Value>>>;
536 
537  inline StdString to_string(int value)
538  {
539  char buf[sizeof(int) * 4];
540  snprintf(buf, sizeof(buf), "%d", value);
541  return StdString(buf);
542  }
543  inline StdString to_string(long value)
544  {
545  char buf[sizeof(long) * 4];
546  snprintf(buf, sizeof(buf), "%ld", value);
547  return StdString(buf);
548  }
549  inline StdString to_string(long long value)
550  {
551  char buf[sizeof(long long) * 4];
552  snprintf(buf, sizeof(buf), "%lld", value);
553  return StdString(buf);
554  }
555  inline StdString to_string(unsigned value)
556  {
557  char buf[sizeof(unsigned) * 4];
558  snprintf(buf, sizeof(buf), "%u", value);
559  return StdString(buf);
560  }
561  inline StdString to_string(unsigned long value)
562  {
563  char buf[sizeof(unsigned long) * 4];
564  snprintf(buf, sizeof(buf), "%lu", value);
565  return StdString(buf);
566  }
567  inline StdString to_string(unsigned long long value)
568  {
569  char buf[sizeof(unsigned long long) * 4];
570  snprintf(buf, sizeof(buf), "%llu", value);
571  return StdString(buf);
572  }
573  inline StdString to_string(float value)
574  {
575  char buf[sizeof(float) * 4];
576  snprintf(buf, sizeof(buf), "%f", value);
577  return StdString(buf);
578  }
579  inline StdString to_string(double value)
580  {
581  char buf[sizeof(double) * 4];
582  snprintf(buf, sizeof(buf), "%f", value);
583  return StdString(buf);
584  }
585  inline StdString to_string(long double value)
586  {
587  char buf[sizeof(long double) * 4];
588  snprintf(buf, sizeof(buf), "%Lf", value);
589  return StdString(buf);
590  }
591 #endif // ENABLE_CUSTOM_ALLOCATOR
592 
599  bool DIARKIS_EXPORT ParseErrStruct(uint8_t status, const Diarkis::StdVector<uint8_t>& payload, uint16_t& errCode, Diarkis::StdString& errString);
600 }
601 // ADD NAMESPACE } TAG
602 
603 #ifndef DIARKIS_DISABLE_CUSTOM_ALLOCATOR_FOR_STD_LIBS
604 namespace std
605 {
606  template <>
607  class hash<Diarkis::StdString>
608  {
609  public:
610  size_t operator()(const Diarkis::StdString& str) const
611  {
612  return hash_bytes(str.data(), str.length());;
613  }
614  };
615 }
616 #endif
Diarkis::StdStringHash::operator()
std::size_t operator()(const T &obj) const noexcept
Definition: common.h:508
Diarkis::StdString::StdString
StdString(size_t count, char ch)
Definition: common.h:441
Diarkis::to_string
StdString to_string(int value)
Definition: common.h:537
Diarkis::StdVector::StdVector
StdVector(const StdVector< T > &data)
Definition: common.h:416
Diarkis::StdVector::StdVector
StdVector(const std::vector< T > &data)
Definition: common.h:415
Diarkis::DiarkisAllocatorDeleter::DiarkisAllocatorDeleter
DiarkisAllocatorDeleter(const DiarkisAllocatorDeleter< U > &) noexcept
Definition: common.h:241
Diarkis::StdBasicStringBuf
std::basic_stringbuf< T, std::char_traits< T >, DiarkisStdAllocator< T > > StdBasicStringBuf
Definition: common.h:489
Diarkis::StdVector::operator=
StdVector & operator=(const std::vector< T > &data)
Definition: common.h:418
Diarkis::StdIStringStream
StdBasicIStringStream< char > StdIStringStream
Definition: common.h:501
Diarkis::to_string
StdString to_string(long double value)
Definition: common.h:585
Diarkis::DiarkisStdAllocator::value_type
T value_type
Definition: common.h:199
Credentials
Definition: common.h:60
Diarkis::DiarkisAllocatorDeleter
Definition: common.h:232
Diarkis::DiarkisAllocatorDeleter< T[]>::operator()
void operator()(T *ptr) const
Definition: common.h:261
Credentials::iv
uint8_t iv[DIARKIS_AUTHKEY_LEN]
Definition: common.h:62
Diarkis::DiarkisAllocatorDeleter::operator()
void operator()(T *ptr) const
Definition: common.h:243
Credentials::key
uint8_t key[DIARKIS_AUTHKEY_LEN]
Definition: common.h:61
Diarkis::ICustomAllocator::ICustomAllocator
ICustomAllocator()
Definition: common.h:95
Diarkis::StdBasicOStringStream
std::basic_ostringstream< T, std::char_traits< T >, DiarkisStdAllocator< T > > StdBasicOStringStream
Definition: common.h:495
Diarkis::StdStringHash< StdString >::operator()
std::size_t operator()(const StdString &s) const noexcept
Definition: common.h:519
Diarkis::StdString::StdString
StdString(const StdString &s)
Definition: common.h:439
Diarkis::StdString
Definition: common.h:432
Diarkis::StdMap
std::map< Key, Value, std::less< Key >, Diarkis::DiarkisStdAllocator< std::pair< const Key, Value > >> StdMap
Definition: common.h:532
std::hash< Diarkis::StdString >::operator()
size_t operator()(const Diarkis::StdString &str) const
Definition: common.h:610
Diarkis::StdString::StdString
StdString(const char *str)
Definition: common.h:436
Diarkis::StdUnorderedMap
std::unordered_map< Key, Value, StdStringHash< Key >, std::equal_to< Key >, Diarkis::DiarkisStdAllocator< std::pair< const Key, Value > >> StdUnorderedMap
Definition: common.h:535
Diarkis::StdVector::StdVector
StdVector(size_t count, const T &value)
Definition: common.h:411
Diarkis::DiarkisAllocatorDeleter::DiarkisAllocatorDeleter
constexpr DiarkisAllocatorDeleter() noexcept=default
Diarkis::StdString::StdString
StdString(const std::basic_string< char, std::char_traits< char >, DiarkisStdAllocator< char >> str)
Definition: common.h:440
AuthInfo::cred
struct Credentials cred
Definition: common.h:67
Diarkis::DiarkisStdAllocator::allocate
T * allocate(std::size_t n)
Definition: common.h:206
Diarkis::StdUniquePtr
std::unique_ptr< T, Diarkis::DiarkisAllocatorDeleter< T > > StdUniquePtr
Definition: common.h:384
Diarkis::StdBasicStringStream
std::basic_stringstream< T, std::char_traits< T >, DiarkisStdAllocator< T > > StdBasicStringStream
Definition: common.h:498
Diarkis::StdVector
Definition: common.h:406
Diarkis::operator==
bool operator==(const DiarkisStdAllocator< T > &, const DiarkisStdAllocator< U > &)
Definition: common.h:219
Diarkis::DiarkisNew
T * DiarkisNew(_Types &&... _Args)
Definition: common.h:176
AuthInfo::sid
uint8_t sid[DIARKIS_AUTHKEY_LEN]
Definition: common.h:66
Diarkis::StdString::operator=
StdString & operator=(const std::string &s)
Definition: common.h:451
Diarkis::DiarkisAlignedAlloc
DIARKIS_EXPORT void * DiarkisAlignedAlloc(size_t size, size_t align, int flag=0)
Diarkis::ICustomAllocator
Base class for implementing a custom memory allocator.
Definition: common.h:92
Diarkis::operator!=
bool operator!=(const DiarkisStdAllocator< T > &, const DiarkisStdAllocator< U > &)
Definition: common.h:225
Diarkis::DiarkisAllocUnique
StdUniquePtr< T > DiarkisAllocUnique(_Types &&... _Args)
Definition: common.h:387
DIARKIS_AUTHKEY_LEN
#define DIARKIS_AUTHKEY_LEN
Definition: common.h:57
Diarkis::DiarkisStdAllocator
Definition: common.h:198
Diarkis::DiarkisDefaultAllocator
Diarkisランタイムのデフォルトアロケーター。
Definition: common.h:109
Diarkis::StdStringBuf
StdBasicStringBuf< char > StdStringBuf
Definition: common.h:500
Diarkis::StdString::operator=
StdString & operator=(const char *str)
Definition: common.h:446
Diarkis::StdString::StdString
StdString()
Definition: common.h:435
Diarkis::StdString::StdString
StdString(_Iter _First, _Iter _Last)
Definition: common.h:444
Diarkis
Definition: commands.h:9
Diarkis::StdString::StdString
StdString(const char *str, size_t size)
Definition: common.h:438
Diarkis::StdVector::StdVector
StdVector(std::initializer_list< T > ilist)
Definition: common.h:412
AuthInfo
Definition: common.h:65
Diarkis::DiarkisAlloc
DIARKIS_EXPORT void * DiarkisAlloc(size_t size, int flag=0)
Diarkis::StdBasicIStringStream
std::basic_istringstream< T, std::char_traits< T >, DiarkisStdAllocator< T > > StdBasicIStringStream
Definition: common.h:492
Diarkis::StdOStringStream
StdBasicOStringStream< char > StdOStringStream
Definition: common.h:502
Diarkis::StdStringHash
Definition: common.h:506
Diarkis::GetVersion
const char * GetVersion()
Definition: common.h:75
Diarkis::SetCustomAllocator
DIARKIS_EXPORT ICustomAllocator * SetCustomAllocator(ICustomAllocator *pAllocator)
Specify the custom allocator.
Diarkis::DiarkisDelete
void DiarkisDelete(T *ptr)
Definition: common.h:191
Diarkis::StdDeque
std::deque< T, Diarkis::DiarkisStdAllocator< T > > StdDeque
Definition: common.h:526
Diarkis::IFixedAreaMemoryAllocator::IFixedAreaMemoryAllocator
IFixedAreaMemoryAllocator()
Definition: common.h:129
Diarkis::DiarkisStdAllocator::DiarkisStdAllocator
DiarkisStdAllocator()
Definition: common.h:201
Diarkis::DiarkisAllocShared
std::shared_ptr< T > DiarkisAllocShared(_Types &&... _Args)
Definition: common.h:399
std
Definition: common.h:604
Diarkis::IFixedAreaMemoryAllocator
Definition: common.h:126
Diarkis::DiarkisStdAllocator::deallocate
void deallocate(T *p, std::size_t n)
Definition: common.h:211
Diarkis::DiarkisFree
DIARKIS_EXPORT void DiarkisFree(void *ptr)
Diarkis::GetDefaultAllocator
DIARKIS_EXPORT DiarkisDefaultAllocator * GetDefaultAllocator()
Get the Diarkis default allocator pointer.
Diarkis::ICustomAllocator::~ICustomAllocator
virtual ~ICustomAllocator()
Definition: common.h:96
Diarkis::StdVector::StdVector
StdVector()
Definition: common.h:409
Diarkis::StdVector::StdVector
StdVector(size_t count)
Definition: common.h:410
Diarkis::DiarkisAllocatorDeleter< T[]>::DiarkisAllocatorDeleter
DiarkisAllocatorDeleter(const DiarkisAllocatorDeleter< U[]> &) noexcept
Definition: common.h:259
Diarkis::StdVector::StdVector
StdVector(_Iter _First, _Iter _Last)
Definition: common.h:414
Diarkis::ParseErrStruct
bool DIARKIS_EXPORT ParseErrStruct(uint8_t status, const Diarkis::StdVector< uint8_t > &payload, uint16_t &errCode, Diarkis::StdString &errString)
Parse payload of the error struct data, which is received in the response handlers.
Diarkis::operator+
StdString operator+(const StdString &lhs, const StdString &rhs)
Definition: common.h:465
Credentials::mac
uint8_t mac[DIARKIS_AUTHKEY_LEN]
Definition: common.h:63
Diarkis::StdString::StdString
StdString(const std::string &s)
Definition: common.h:437
Diarkis::StdQueue
std::queue< T, StdDeque< T > > StdQueue
Definition: common.h:529
Diarkis::DiarkisStdAllocator::DiarkisStdAllocator
DiarkisStdAllocator(const DiarkisStdAllocator< U > &)
Definition: common.h:204
Diarkis::GetFixedAreaMemoryAllocator
DIARKIS_EXPORT IFixedAreaMemoryAllocator * GetFixedAreaMemoryAllocator()
Get the pointer of the instance of FixedAreaMemoryAllocator.
Diarkis::IFixedAreaMemoryAllocator::~IFixedAreaMemoryAllocator
virtual ~IFixedAreaMemoryAllocator()
Definition: common.h:130
Diarkis::StdStringStream
StdBasicStringStream< char > StdStringStream
Definition: common.h:503