NAMD
Public Member Functions | Public Attributes | List of all members
TwoLevelParam< NumStrings, ParamValue > Class Template Reference

#include <TupleString.h>

Public Member Functions

 TwoLevelParam ()
 
ParamValue * get_param (const size_t &index)
 
ParamValue * get_param_by_key (const TupleString< NumStrings > &findKey)
 
bool insert (const TupleString< NumStrings > &tKey, const ParamValue &mValue)
 
std::pair< bool, ParamValue * > insert_check (const TupleString< NumStrings > &tKey, const ParamValue &mValue)
 
std::pair< bool, size_t > const index_param (const TupleString< NumStrings > &findKey) const
 
int64_t const index (const TupleString< NumStrings > &findKey) const
 
void clear ()
 
void sort ()
 

Public Attributes

std::vector< ParamValue > paramVector
 
std::unordered_map< TupleString< NumStrings >, size_t, TupleStringHash< NumStrings > > tupleMap
 

Detailed Description

template<short NumStrings, class ParamValue>
class TwoLevelParam< NumStrings, ParamValue >

Definition at line 273 of file TupleString.h.

Constructor & Destructor Documentation

◆ TwoLevelParam()

template<short NumStrings, class ParamValue>
TwoLevelParam< NumStrings, ParamValue >::TwoLevelParam ( )
inline

Definition at line 278 of file TupleString.h.

279  {
280  }

Member Function Documentation

◆ clear()

template<short NumStrings, class ParamValue>
void TwoLevelParam< NumStrings, ParamValue >::clear ( void  )
inline

Definition at line 350 of file TupleString.h.

351  {
352  tupleMap.clear();
353  paramVector.clear();
354  }
std::unordered_map< TupleString< NumStrings >, size_t, TupleStringHash< NumStrings > > tupleMap
Definition: TupleString.h:277
std::vector< ParamValue > paramVector
Definition: TupleString.h:276

◆ get_param()

template<short NumStrings, class ParamValue>
ParamValue* TwoLevelParam< NumStrings, ParamValue >::get_param ( const size_t &  index)
inline

Definition at line 281 of file TupleString.h.

282  {
283  return &(paramVector[index]);
284  }
std::vector< ParamValue > paramVector
Definition: TupleString.h:276
int64_t const index(const TupleString< NumStrings > &findKey) const
Definition: TupleString.h:340

◆ get_param_by_key()

template<short NumStrings, class ParamValue>
ParamValue* TwoLevelParam< NumStrings, ParamValue >::get_param_by_key ( const TupleString< NumStrings > &  findKey)
inline

Definition at line 286 of file TupleString.h.

287  {
288  auto ret = tupleMap.find(findKey);
289  if(ret!=tupleMap.end())
290  {
291  return &paramVector[ret->second];
292  }
293  else
294  {
295  return NULL;
296  }
297  }
std::unordered_map< TupleString< NumStrings >, size_t, TupleStringHash< NumStrings > > tupleMap
Definition: TupleString.h:277
std::vector< ParamValue > paramVector
Definition: TupleString.h:276

◆ index()

template<short NumStrings, class ParamValue>
int64_t const TwoLevelParam< NumStrings, ParamValue >::index ( const TupleString< NumStrings > &  findKey) const
inline

Definition at line 340 of file TupleString.h.

Referenced by Parameters::assign_angle_index(), Parameters::assign_bond_index(), Parameters::assign_crossterm_index(), Parameters::assign_dihedral_index(), Parameters::assign_improper_index(), and TwoLevelParam< 4, DihedralValue >::get_param().

341  {
342  const auto ret = tupleMap.find(findKey);
343  if(ret!=tupleMap.end())
344  {
345  return ret->second;
346  }
347  return -1;
348  }
std::unordered_map< TupleString< NumStrings >, size_t, TupleStringHash< NumStrings > > tupleMap
Definition: TupleString.h:277

◆ index_param()

template<short NumStrings, class ParamValue>
std::pair<bool, size_t> const TwoLevelParam< NumStrings, ParamValue >::index_param ( const TupleString< NumStrings > &  findKey) const
inline

Definition at line 326 of file TupleString.h.

327  {
328  const auto ret = tupleMap.find(findKey);
329  if(ret!=tupleMap.end())
330  {
331  return std::make_pair(true, ret->second);
332  }
333  else
334  {
335  return std::make_pair(false, paramVector.size());
336  }
337  }
std::unordered_map< TupleString< NumStrings >, size_t, TupleStringHash< NumStrings > > tupleMap
Definition: TupleString.h:277
std::vector< ParamValue > paramVector
Definition: TupleString.h:276

◆ insert()

template<short NumStrings, class ParamValue>
bool TwoLevelParam< NumStrings, ParamValue >::insert ( const TupleString< NumStrings > &  tKey,
const ParamValue &  mValue 
)
inline

Definition at line 299 of file TupleString.h.

301  {
302  size_t newPlace = paramVector.size();
303  const auto ret = tupleMap.emplace(std::make_pair(tKey,newPlace));
304  if(ret.second)
305  {
306 
307  paramVector.push_back(mValue);
308  }
309  return ret.second;
310  }
std::unordered_map< TupleString< NumStrings >, size_t, TupleStringHash< NumStrings > > tupleMap
Definition: TupleString.h:277
std::vector< ParamValue > paramVector
Definition: TupleString.h:276

◆ insert_check()

template<short NumStrings, class ParamValue>
std::pair<bool, ParamValue*> TwoLevelParam< NumStrings, ParamValue >::insert_check ( const TupleString< NumStrings > &  tKey,
const ParamValue &  mValue 
)
inline

Definition at line 313 of file TupleString.h.

315  {
316  size_t newPlace = paramVector.size();
317  auto ret = tupleMap.emplace(std::make_pair(tKey,newPlace));
318  if(ret.second)
319  {
320  paramVector.push_back(mValue);
321  }
322  return std::make_pair(ret.second, &paramVector[ret.first->second]);
323  }
std::unordered_map< TupleString< NumStrings >, size_t, TupleStringHash< NumStrings > > tupleMap
Definition: TupleString.h:277
std::vector< ParamValue > paramVector
Definition: TupleString.h:276

◆ sort()

template<short NumStrings, class ParamValue>
void TwoLevelParam< NumStrings, ParamValue >::sort ( void  )
inline

Definition at line 361 of file TupleString.h.

362  {
363  typedef std::pair<TupleString<NumStrings>, size_t> TSKeypair;
364  std::vector <TSKeypair> sortVector;
365  std::vector <ParamValue> sortValues;
366  for(auto apair : tupleMap)
367  {
368  sortVector.push_back(apair);
369  }
370  std::sort(sortVector.begin(), sortVector.end(),
371  [] (TSKeypair a, TSKeypair b)
372  {
373  return a.first.tupleCat<b.first.tupleCat;
374  });
375  for(int newIndex=0; newIndex < sortVector.size(); ++newIndex)
376  {
377  sortValues.push_back(paramVector[sortVector[newIndex].second]);
378  tupleMap[sortVector[newIndex].first]=newIndex;
379  }
380  paramVector=sortValues;
381  }
std::unordered_map< TupleString< NumStrings >, size_t, TupleStringHash< NumStrings > > tupleMap
Definition: TupleString.h:277
std::vector< ParamValue > paramVector
Definition: TupleString.h:276

Member Data Documentation

◆ paramVector

template<short NumStrings, class ParamValue>
std::vector<ParamValue> TwoLevelParam< NumStrings, ParamValue >::paramVector

◆ tupleMap

template<short NumStrings, class ParamValue>
std::unordered_map<TupleString<NumStrings>, size_t, TupleStringHash<NumStrings> > TwoLevelParam< NumStrings, ParamValue >::tupleMap

The documentation for this class was generated from the following file: