fwd.h 3.9 KB

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