112a9d9c8Sopenharmony_ci// bindgen-flags: -- -std=c++14 212a9d9c8Sopenharmony_ci 312a9d9c8Sopenharmony_ciusing uint32_t = unsigned long; 412a9d9c8Sopenharmony_ciusing size_t = unsigned long long; 512a9d9c8Sopenharmony_ci 612a9d9c8Sopenharmony_citemplate<class KeyClass, class DataType> 712a9d9c8Sopenharmony_ciclass nsBaseHashtableET { 812a9d9c8Sopenharmony_ci}; 912a9d9c8Sopenharmony_ci 1012a9d9c8Sopenharmony_citemplate<class Entry> 1112a9d9c8Sopenharmony_ciclass nsTHashtable { 1212a9d9c8Sopenharmony_ci}; 1312a9d9c8Sopenharmony_ci 1412a9d9c8Sopenharmony_citemplate<class KeyClass, class DataType, class UserDataType> 1512a9d9c8Sopenharmony_ciclass nsBaseHashtable 1612a9d9c8Sopenharmony_ci : protected nsTHashtable<nsBaseHashtableET<KeyClass, DataType>> 1712a9d9c8Sopenharmony_ci{ 1812a9d9c8Sopenharmony_ci 1912a9d9c8Sopenharmony_cipublic: 2012a9d9c8Sopenharmony_ci typedef typename KeyClass::KeyType KeyType; 2112a9d9c8Sopenharmony_ci typedef nsBaseHashtableET<KeyClass, DataType> EntryType; 2212a9d9c8Sopenharmony_ci 2312a9d9c8Sopenharmony_ci using nsTHashtable<EntryType>::Contains; 2412a9d9c8Sopenharmony_ci using nsTHashtable<EntryType>::GetGeneration; 2512a9d9c8Sopenharmony_ci 2612a9d9c8Sopenharmony_ci nsBaseHashtable() {} 2712a9d9c8Sopenharmony_ci explicit nsBaseHashtable(uint32_t); 2812a9d9c8Sopenharmony_ci 2912a9d9c8Sopenharmony_ci struct LookupResult { 3012a9d9c8Sopenharmony_ci private: 3112a9d9c8Sopenharmony_ci EntryType* mEntry; 3212a9d9c8Sopenharmony_ci nsBaseHashtable& mTable; 3312a9d9c8Sopenharmony_ci 3412a9d9c8Sopenharmony_ci public: 3512a9d9c8Sopenharmony_ci LookupResult(EntryType*, nsBaseHashtable&); 3612a9d9c8Sopenharmony_ci }; 3712a9d9c8Sopenharmony_ci 3812a9d9c8Sopenharmony_ci struct EntryPtr { 3912a9d9c8Sopenharmony_ci private: 4012a9d9c8Sopenharmony_ci EntryType& mEntry; 4112a9d9c8Sopenharmony_ci bool mExistingEntry; 4212a9d9c8Sopenharmony_ci 4312a9d9c8Sopenharmony_ci public: 4412a9d9c8Sopenharmony_ci EntryPtr(nsBaseHashtable&, EntryType*, bool); 4512a9d9c8Sopenharmony_ci ~EntryPtr(); 4612a9d9c8Sopenharmony_ci }; 4712a9d9c8Sopenharmony_ci 4812a9d9c8Sopenharmony_ci}; 49