17#ifndef LIMA_DATA_STRINGSPOOL_H
18#define LIMA_DATA_STRINGSPOOL_H
27#include <unordered_map>
29#include <ext/hash_map>
32#include <boost/serialization/strong_typedef.hpp>
36class StringsPoolPrivate;
38#define STRINGS_POOL_INDEX_TYPE uint64_t
40#define STRINGS_POOL_INDEX_MAX_VALUE std::numeric_limits<STRINGS_POOL_INDEX_TYPE>::max()
52 StringsPoolIndex operator[](
const LimaString& str)
const;
53 StringsPoolIndex operator[](
const LimaString& str);
55 const LimaString& operator[](
const StringsPoolIndex ind)
const;
56 LimaString& operator[](
const StringsPoolIndex ind);
58 void registerUser(
void* p);
59 void unregisterUser(
void* p);
61 void endResourcesPool();
64 uint64_t size()
const;
78template<>
struct hash<
Lima::StringsPoolIndex> {
79 std::size_t operator()(
const Lima::StringsPoolIndex s)
const noexcept {
80 return (
size_t) qHash(s);
#define LIMA_COMMONMISC_EXPORT
StringsPool & operator=(const StringsPool &)=delete
StringsPool(const StringsPool &)=delete
BOOST_STRONG_TYPEDEF(char, NoParameters)
#define STRINGS_POOL_INDEX_TYPE