summaryrefslogtreecommitdiff
path: root/tests/headers/nsBaseHashtable.hpp
blob: 36a480f20fbf55ffe50e0a84baa771771105018a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// bindgen-flags: -- -std=c++14

using uint32_t = unsigned long;
using size_t = unsigned long long;

template<class KeyClass, class DataType>
class nsBaseHashtableET {
};

template<class Entry>
class nsTHashtable {
};

template<class KeyClass, class DataType, class UserDataType>
class nsBaseHashtable
  : protected nsTHashtable<nsBaseHashtableET<KeyClass, DataType>>
{

public:
  typedef typename KeyClass::KeyType KeyType;
  typedef nsBaseHashtableET<KeyClass, DataType> EntryType;

  using nsTHashtable<EntryType>::Contains;
  using nsTHashtable<EntryType>::GetGeneration;

  nsBaseHashtable() {}
  explicit nsBaseHashtable(uint32_t);

  struct LookupResult {
  private:
    EntryType* mEntry;
    nsBaseHashtable& mTable;

  public:
    LookupResult(EntryType*, nsBaseHashtable&);
  };

  struct EntryPtr {
  private:
    EntryType& mEntry;
    bool mExistingEntry;

  public:
    EntryPtr(nsBaseHashtable&, EntryType*, bool);
    ~EntryPtr();
  };

};