1 // bindgen-flags: -- -std=c++14
2 
3 using uint32_t = unsigned long;
4 using size_t = unsigned long long;
5 
6 template<class KeyClass, class DataType>
7 class nsBaseHashtableET {
8 };
9 
10 template<class Entry>
11 class nsTHashtable {
12 };
13 
14 template<class KeyClass, class DataType, class UserDataType>
15 class nsBaseHashtable
16   : protected nsTHashtable<nsBaseHashtableET<KeyClass, DataType>>
17 {
18 
19 public:
20   typedef typename KeyClass::KeyType KeyType;
21   typedef nsBaseHashtableET<KeyClass, DataType> EntryType;
22 
23   using nsTHashtable<EntryType>::Contains;
24   using nsTHashtable<EntryType>::GetGeneration;
25 
nsBaseHashtable()26   nsBaseHashtable() {}
27   explicit nsBaseHashtable(uint32_t);
28 
29   struct LookupResult {
30   private:
31     EntryType* mEntry;
32     nsBaseHashtable& mTable;
33 
34   public:
35     LookupResult(EntryType*, nsBaseHashtable&);
36   };
37 
38   struct EntryPtr {
39   private:
40     EntryType& mEntry;
41     bool mExistingEntry;
42 
43   public:
44     EntryPtr(nsBaseHashtable&, EntryType*, bool);
45     ~EntryPtr();
46   };
47 
48 };
49