14 #include <unordered_map>    67 template <
short NumStrings>
    76 template <
short NumStrings>
   108   MultiString(
const char *t1, 
const char *t2, 
const char *t3, 
const char *t4)
   117   MultiString(
const char *t1, 
const char *t2, 
const char *t3, 
const char *t4,
   118               const char *t5, 
const char *t6, 
const char *t7, 
const char *t8
   137       for(
int i=0; i < mStringLen ;i++)
   143   inline short length()
 const { 
return mStringLen;}
   163 template <
short NumStrings>
   200               const char* key4, 
const char* key5, 
const char* key6,
   201               const char* key7, 
const char* key8)
   204                                           key5, key6, key7, key8);
   241 template <
short NumStrings>
   248   static_assert((NumStrings==1) || (NumStrings==2) || (NumStrings==3)
   249                 || (NumStrings==4) || (NumStrings==8),
   250                 "invalid NumStrings must be: [1,2,3,4,8]");
   272 template <
short NumStrings, 
class ParamValue>
   278   std::unordered_map<KeyType, size_t, TupleStringHash<NumStrings>> 
tupleMap;
   289       if (it->second == 
index) {
   311                      const ParamValue &mValue)
   314     const auto ret = 
tupleMap.emplace(std::make_pair(tKey,newPlace));
   325                                                    const ParamValue &mValue)
   328     auto ret = 
tupleMap.emplace(std::make_pair(tKey,newPlace));
   333     return std::make_pair(ret.second, &
paramVector[ret.first->second]);
   339     const auto ret = 
tupleMap.find(findKey);
   342         return std::make_pair(
true, ret->second);
   353     const auto ret = 
tupleMap.find(findKey);
   374     typedef std::pair<TupleString<NumStrings>, 
size_t> TSKeypair;
   375     std::vector <TSKeypair> sortVector;
   376     std::vector <ParamValue> sortValues;
   379         sortVector.push_back(apair);
   381     std::sort(sortVector.begin(), sortVector.end(),
   382               [] (TSKeypair a, TSKeypair b)
   384                 return a.first.tupleCat<b.first.tupleCat;
   386     for(
int newIndex=0; newIndex < sortVector.size(); ++newIndex)
   388         sortValues.push_back(
paramVector[sortVector[newIndex].second]);
   389         tupleMap[sortVector[newIndex].first]=newIndex;
 ParamValue * get_param(const size_t &index)
 
bool operator<(const MultiString &rhs) const
 
TupleString< 1 > TupleString1
 
ParamValue * get_param_by_key(const KeyType &findKey)
 
MultiString(const MultiString< NumStrings > &rhs)
 
MultiString(const char *t1, const char *t2, const char *t3, const char *t4)
 
TupleString(const char *key1, const char *key2, const char *key3, const char *key4)
 
bool operator==(const TupleString &rhs) const
 
size_t operator()(const TupleString< NumStrings > &k) const
 
TupleString(const char *key1, const char *key2, const char *key3, const char *key4, const char *key5, const char *key6, const char *key7, const char *key8)
 
TupleString< 2 > TupleString2
 
std::pair< bool, size_t > const index_param(const KeyType &findKey) const
 
char * getTuplePtr(short index)
 
bool insert(const KeyType &tKey, const ParamValue &mValue)
 
TupleString< 8 > TupleString8
 
int64_t const index(const KeyType &findKey) const
 
std::unordered_map< KeyType, size_t, TupleStringHash< NumStrings > > tupleMap
 
const char * getCatKey() const
 
std::pair< bool, ParamValue * > insert_check(const KeyType &tKey, const ParamValue &mValue)
 
char mStride[ParamNameMaxLen]
 
MultiString(const char *t1, const char *t2, const char *t3, const char *t4, const char *t5, const char *t6, const char *t7, const char *t8)
 
TupleString(const char *key1, const char *key2, const char *key3)
 
const short getMStringLen() const
 
MStringStrider stride[NumStrings]
 
char * getTuplePtr(short index)
 
MultiString(const char *t1)
 
MultiString(const char *t1, const char *t2, const char *t3)
 
MultiString< NumStrings > tupleCat
 
const short getTupleMaxLen() const
 
static const short ParamNameMaxLen
 
bool operator<(const TupleString &rhs) const
 
TupleString< 3 > TupleString3
 
TupleString(const char *key1)
 
std::vector< ParamValue > paramVector
 
TupleStrider< NumStrings > multiString
 
const char * getMString() const
 
XXH_PUBLIC_API XXH64_hash_t XXH3_64bits(const void *input, size_t len)
 
const uint64_t getHashKey() const
 
bool operator==(const MultiString &rhs) const
 
char mString[ParamNameMaxLen *NumStrings]
 
TupleString< 4 > TupleString4
 
bool get_key_by_index(size_t index, KeyType &key) const
 
MultiString(const char *t1, const char *t2)
 
TupleString(const char *key1, const char *key2)