Forward.h 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. // Copyright (C) 2009-present, Panagiotis Christopoulos Charitos and contributors.
  2. // All rights reserved.
  3. // Code licensed under the BSD License.
  4. // http://www.anki3d.org/LICENSE
  5. /// @file It contains forward declarations of util classes.
  6. #pragma once
  7. #include <AnKi/Util/StdTypes.h>
  8. namespace anki {
  9. class DefaultMemoryPool;
  10. template<typename TMemoryPool>
  11. class SingletonMemoryPoolWrapper;
  12. template<U32 kBitCount, typename TChunkType>
  13. class BitSet;
  14. template<typename T>
  15. class BitMask;
  16. template<typename, typename, typename, typename, typename>
  17. class HashMap;
  18. template<typename TKey>
  19. class DefaultHasher;
  20. class HashMapSparseArrayConfig;
  21. template<typename T, typename TMemoryPool>
  22. class Hierarchy;
  23. template<typename T, typename TMemoryPool>
  24. class List;
  25. template<typename T, typename TMemoryPool, typename TConfig>
  26. class SparseArray;
  27. class BlockArrayDefaultConfig;
  28. template<typename T, typename TMemoryPool, typename TConfig>
  29. class BlockArray;
  30. class CString;
  31. template<typename>
  32. class BaseString;
  33. template<typename>
  34. class BaseStringList;
  35. class ThreadHive;
  36. class ThreadJobManager;
  37. template<typename TFunc, typename TMemoryPool = SingletonMemoryPoolWrapper<DefaultMemoryPool>, PtrSize kPreallocatedStorage = ANKI_SAFE_ALIGNMENT>
  38. class Function;
  39. template<typename, PtrSize>
  40. class Array;
  41. template<typename T, typename TSize>
  42. class WeakArray;
  43. template<typename T, typename TSize>
  44. class ConstWeakArray;
  45. template<typename T, typename TMemoryPool, typename TSize>
  46. class DynamicArray;
  47. class F16;
  48. template<typename TMemoryPool>
  49. class XmlDocument;
  50. /// This macro defines typedefs for all the common containers that take a memory pool using a singleton memory pool
  51. /// memory pool.
  52. #define ANKI_DEFINE_SUBMODULE_UTIL_CONTAINERS(submoduleName, singletonMemoryPool) \
  53. using submoduleName##MemPoolWrapper = SingletonMemoryPoolWrapper<singletonMemoryPool>; \
  54. using submoduleName##String = BaseString<submoduleName##MemPoolWrapper>; \
  55. template<typename T, typename TSize = U32> \
  56. using submoduleName##DynamicArray = DynamicArray<T, submoduleName##MemPoolWrapper, TSize>; \
  57. template<typename T, typename TSize = PtrSize> \
  58. using submoduleName##DynamicArrayLarge = DynamicArray<T, submoduleName##MemPoolWrapper, TSize>; \
  59. template<typename TKey, typename TValue, typename THasher = DefaultHasher<TKey>> \
  60. using submoduleName##HashMap = HashMap<TKey, TValue, THasher, submoduleName##MemPoolWrapper, HashMapSparseArrayConfig>; \
  61. template<typename T> \
  62. using submoduleName##List = List<T, submoduleName##MemPoolWrapper>; \
  63. using submoduleName##StringList = BaseStringList<submoduleName##MemPoolWrapper>; \
  64. using submoduleName##XmlDocument = XmlDocument<submoduleName##MemPoolWrapper>; \
  65. template<typename T> \
  66. using submoduleName##Hierarchy = Hierarchy<T, submoduleName##MemPoolWrapper>; \
  67. template<typename T, typename TConfig = BlockArrayDefaultConfig> \
  68. using submoduleName##BlockArray = BlockArray<T, submoduleName##MemPoolWrapper, TConfig>;
  69. } // end namespace anki