fwd.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. #pragma once
  2. #include <util/system/defaults.h>
  3. #include <stlfwd>
  4. template <typename TCharType, typename TTraits = std::char_traits<TCharType>>
  5. class TBasicString;
  6. using TString = TBasicString<char>;
  7. using TUtf16String = TBasicString<wchar16>;
  8. using TUtf32String = TBasicString<wchar32>;
  9. template <typename TCharType, typename TTraits = std::char_traits<TCharType>>
  10. class TBasicStringBuf;
  11. using TStringBuf = TBasicStringBuf<char>;
  12. using TWtringBuf = TBasicStringBuf<wchar16>;
  13. using TUtf32StringBuf = TBasicStringBuf<wchar32>;
  14. //misc
  15. class TBuffer;
  16. //functors
  17. template <class T = void>
  18. struct TLess;
  19. template <class T = void>
  20. struct TGreater;
  21. template <class T = void>
  22. struct TEqualTo;
  23. template <class T>
  24. struct THash;
  25. //intrusive containers
  26. struct TIntrusiveListDefaultTag;
  27. template <class T, class Tag = TIntrusiveListDefaultTag>
  28. class TIntrusiveList;
  29. template <class T, class D, class Tag = TIntrusiveListDefaultTag>
  30. class TIntrusiveListWithAutoDelete;
  31. template <class T, class Tag = TIntrusiveListDefaultTag>
  32. class TIntrusiveSList;
  33. template <class T, class C>
  34. class TAvlTree;
  35. template <class TValue, class TCmp>
  36. class TRbTree;
  37. //containers
  38. template <class T, class A = std::allocator<T>>
  39. class TVector;
  40. template <class T, class A = std::allocator<T>>
  41. class TDeque;
  42. template <class T, class S = TDeque<T>>
  43. class TQueue;
  44. template <class T, class S = TVector<T>, class C = TLess<T>>
  45. class TPriorityQueue;
  46. template <class Key, class T, class HashFcn = THash<Key>, class EqualKey = TEqualTo<Key>, class Alloc = std::allocator<Key>>
  47. class THashMap;
  48. template <class Key, class T, class HashFcn = THash<Key>, class EqualKey = TEqualTo<Key>, class Alloc = std::allocator<Key>>
  49. class THashMultiMap;
  50. template <class Value, class HashFcn = THash<Value>, class EqualKey = TEqualTo<Value>, class Alloc = std::allocator<Value>>
  51. class THashSet;
  52. template <class Value, class HashFcn = THash<Value>, class EqualKey = TEqualTo<Value>, class Alloc = std::allocator<Value>>
  53. class THashMultiSet;
  54. template <class T, class A = std::allocator<T>>
  55. class TList;
  56. template <class K, class V, class Less = TLess<K>, class A = std::allocator<K>>
  57. class TMap;
  58. template <class K, class V, class Less = TLess<K>, class A = std::allocator<K>>
  59. class TMultiMap;
  60. template <class K, class L = TLess<K>, class A = std::allocator<K>>
  61. class TSet;
  62. template <class K, class L = TLess<K>, class A = std::allocator<K>>
  63. class TMultiSet;
  64. template <class T, class S = TDeque<T>>
  65. class TStack;
  66. template <size_t BitCount, typename TChunkType = ui64>
  67. class TBitMap;
  68. //autopointers
  69. class TDelete;
  70. class TDeleteArray;
  71. class TFree;
  72. class TCopyNew;
  73. template <class T, class D = TDelete>
  74. class TAutoPtr;
  75. template <class T, class D = TDelete>
  76. class THolder;
  77. template <class T, class C, class D = TDelete>
  78. class TRefCounted;
  79. template <class T>
  80. class TDefaultIntrusivePtrOps;
  81. template <class T, class Ops>
  82. class TSimpleIntrusiveOps;
  83. template <class T, class Ops = TDefaultIntrusivePtrOps<T>>
  84. class TIntrusivePtr;
  85. template <class T, class Ops = TDefaultIntrusivePtrOps<T>>
  86. class TIntrusiveConstPtr;
  87. template <class T, class Ops = TDefaultIntrusivePtrOps<T>>
  88. using TSimpleIntrusivePtr = TIntrusivePtr<T, TSimpleIntrusiveOps<T, Ops>>;
  89. template <class T, class C, class D = TDelete>
  90. class TSharedPtr;
  91. template <class T, class C = TCopyNew, class D = TDelete>
  92. class TCopyPtr;
  93. template <class TPtr, class TCopy = TCopyNew>
  94. class TCowPtr;
  95. template <typename T>
  96. class TPtrArg;
  97. template <typename T>
  98. using TArrayHolder = THolder<T, TDeleteArray>;
  99. template <typename T>
  100. using TMallocHolder = THolder<T, TFree>;
  101. template <typename T>
  102. using TArrayPtr = TAutoPtr<T, TDeleteArray>;
  103. template <typename T>
  104. using TMallocPtr = TAutoPtr<T, TFree>;
  105. //maybe
  106. namespace NMaybe {
  107. struct TPolicyUndefinedExcept;
  108. }
  109. template <class T, class Policy = ::NMaybe::TPolicyUndefinedExcept>
  110. class TMaybe;
  111. struct TGUID;
  112. template <class T>
  113. class TArrayRef;
  114. template <class T>
  115. using TConstArrayRef = TArrayRef<const T>;