prime/include/rstl/map.hpp

44 lines
1.1 KiB
C++
Raw Normal View History

#ifndef _RSTL_MAP
#define _RSTL_MAP
#include "types.h"
#include "rstl/pair.hpp"
#include "rstl/red_black_tree.hpp"
2022-08-09 23:03:51 +00:00
#include "rstl/rmemory_allocator.hpp"
namespace rstl {
template < typename K, typename V, typename Cmp = less< K >, typename Alloc = rmemory_allocator >
class map {
public:
typedef pair< K, V > value_type;
private:
2022-10-25 12:50:23 +00:00
// TODO: some things use a 0, others use a 1
typedef red_black_tree< K, value_type, 0, select1st< value_type >, Cmp, Alloc > rep_type;
public:
2022-11-10 02:06:24 +00:00
typedef typename rep_type::iterator iterator;
typedef typename rep_type::const_iterator const_iterator;
2022-11-10 02:06:24 +00:00
iterator insert(const value_type& item) { return inner.insert(item); }
2022-10-25 14:29:23 +00:00
const_iterator begin() const { return inner.begin(); }
const_iterator end() const { return inner.end(); }
2022-11-10 02:06:24 +00:00
iterator find(const K& key) { return inner.find(key); }
2022-10-25 14:29:23 +00:00
const_iterator find(const K& key) const { return inner.find(key); }
2022-10-25 12:50:23 +00:00
2022-11-10 02:06:24 +00:00
void erase(iterator it) { inner.erase(it); }
rep_type& get_inner() { return inner; } // hack for CWeaponMgr inlining depth
private:
rep_type inner;
};
typedef map< char, char > unk_map;
CHECK_SIZEOF(unk_map, 0x14)
} // namespace rstl
#endif // _RSTL_MAP