#include <DDMapper.h>
Public Types | |
typedef std::pair< KeyType, ValueType > | Pair |
usefull typedef | |
typedef std::vector< Pair > | Vector |
usefull typedef | |
Public Member Functions | |
Vector | all (const std::string &name, const std::string &value) const |
get all std::mapped instances which have a specific 'name' with value 'value' | |
Vector | all (const std::string &name, const double &value) const |
get all std::mapped instances which have a specific 'name' with value 'value' | |
Vector | all (const std::string &name) const |
get all std::mapped instances which have a specific 'name' | |
void | insert (const KeyType &, const ValueType &) |
insert a new key-value-pair | |
unsigned int | noSpecifics (const KeyType &key, const std::string &name) const |
fetch a key given a value | |
unsigned int | toDouble (const std::string &name, const KeyType &key, double &value, unsigned int pos=0) const |
returns the number specific parameters named 'name' and the corrsponding double | |
unsigned int | toDouble (const std::string &name, const ValueType &key, double &value, unsigned int pos=0) const |
unsigned int | toString (const std::string &name, const ValueType &key, std::string &value, unsigned int pos=0) const |
same as toDouble but for std::string-valued values of named parameters | |
unsigned int | toString (const std::string &name, const KeyType &key, std::string &value, unsigned int pos=0) const |
same as toDouble but for std::string-valued values of named parameters | |
bool | value (const KeyType &key, ValueType &result) |
removes a key-value pair | |
Private Attributes | |
std::map< KeyType, ValueType > | keyToValue_ |
std::multimap< ValueType, KeyType > | valueToKey_ |
Definition at line 13 of file DDMapper.h.
typedef std::pair<KeyType, ValueType> DDMapper< KeyType, ValueType >::Pair |
usefull typedef
Definition at line 17 of file DDMapper.h.
typedef std::vector<Pair> DDMapper< KeyType, ValueType >::Vector |
usefull typedef
Definition at line 20 of file DDMapper.h.
std::vector< std::pair< K, V > > DDMapper< K, V >::all | ( | const std::string & | name, |
const std::string & | value | ||
) | const |
get all std::mapped instances which have a specific 'name' with value 'value'
Definition at line 208 of file DDMapper.h.
References DDfetch(), query::result, asciidump::s, DDValue::strings(), and v.
Referenced by DDG4ProductionCuts::initialize().
{ std::vector<std::pair<K,V> > result; typedef std::vector<const DDsvalues_type *> sv_type; typename std::map<V,K>::const_iterator it = valueToKey_.begin(); typename std::map<V,K>::const_iterator ed = valueToKey_.end(); // loop over all registered ValueTypes for (; it != ed; ++it) { sv_type sv = it->first.specifics(); //std::cout << "now at: " << it->first.name() << std::endl; sv_type::const_iterator svIt = sv.begin(); sv_type::const_iterator svEd = sv.end(); DDValue v(name); for (; svIt != svEd; ++svIt) { if (DDfetch(*svIt,v)) { //std::cout << "found: "; const std::vector<std::string> & s = v.strings(); if (s.size()) { //std::cout << s[0]; if (s[0]==value) { result.push_back(std::make_pair(it->second,it->first)); break; } } //std::cout << std::endl; } } } return result; }
std::vector< std::pair< K, V > > DDMapper< K, V >::all | ( | const std::string & | name, |
const double & | value | ||
) | const |
get all std::mapped instances which have a specific 'name' with value 'value'
Definition at line 242 of file DDMapper.h.
References DDfetch(), DDValue::doubles(), query::result, asciidump::s, and v.
{ std::vector<std::pair<K,V> > result; typedef std::vector<const DDsvalues_type *> sv_type; typename std::map<V,K>::const_iterator it = valueToKey_.begin(); typename std::map<V,K>::const_iterator ed = valueToKey_.end(); // loop over all registered ValueTypes for (; it != ed; ++it) { sv_type sv = it->first.specifics(); //std::cout << "now at: " << it->first.name() << std::endl; sv_type::const_iterator svIt = sv.begin(); sv_type::const_iterator svEd = sv.end(); DDValue v(name); for (; svIt != svEd; ++svIt) { if (DDfetch(*svIt,v)) { //std::cout << "found: "; const std::vector<double> & s = v.doubles(); if (s.size()) { //std::cout << s[0]; if (s[0]==value) { result.push_back(std::make_pair(it->second,it->first)); break; } } //std::cout << std::endl; } } } return result; }
std::vector< std::pair< K, V > > DDMapper< K, V >::all | ( | const std::string & | name | ) | const |
get all std::mapped instances which have a specific 'name'
Definition at line 276 of file DDMapper.h.
References DDfetch(), query::result, and v.
{ std::vector<std::pair<K,V> > result; typedef std::vector<const DDsvalues_type *> sv_type; typename std::map<V,K>::const_iterator it = valueToKey_.begin(); typename std::map<V,K>::const_iterator ed = valueToKey_.end(); // loop over all registered ValueTypes for (; it != ed; ++it) { sv_type sv = it->first.specifics(); //std::cout << "now at: " << it->first.name() << std::endl; sv_type::const_iterator svIt = sv.begin(); sv_type::const_iterator svEd = sv.end(); DDValue v(name); for (; svIt != svEd; ++svIt) { if (DDfetch(*svIt,v)) { result.push_back(std::make_pair(it->second,it->first)); break; } } } return result; }
void DDMapper< K, V >::insert | ( | const K & | key, |
const V & | value | ||
) |
insert a new key-value-pair
any existing entry will be overridden
Definition at line 77 of file DDMapper.h.
References combine::key, and relativeConstraints::value.
Referenced by DDG4Builder::BuildGeometry(), and DDG4Builder::convertLV().
{ keyToValue_[key] = value; valueToKey_.insert(std::make_pair(value,key)); // valueToKey_[value] = key; }
unsigned int DDMapper< K, V >::noSpecifics | ( | const K & | key, |
const std::string & | name | ||
) | const |
fetch a key given a value
the number of specific parameters which are named 'name'
Definition at line 98 of file DDMapper.h.
References DDfetch(), query::result, DDValue::size(), and v.
{ typedef std::vector<const DDsvalues_type *> sv_type; unsigned int result = 0; typename std::map<K,V>::const_iterator it = keyToValue_.find(key); if (it != keyToValue_.end()) { sv_type sv = it->second.specifics(); sv_type::const_iterator it = sv.begin(); DDValue v(name); for (; it != sv.end(); ++it) { if (DDfetch(*it, v)) { result += v.size(); } } } return result; }
unsigned int DDMapper< K, V >::toDouble | ( | const std::string & | name, |
const K & | key, | ||
double & | value, | ||
unsigned int | pos = 0 |
||
) | const |
returns the number specific parameters named 'name' and the corrsponding double
of the DDLogicalPart which corresponds to the given KeyType key. The returned value is assigned to the 'value'-reference
Definition at line 119 of file DDMapper.h.
References DDfetch(), DDValue::doubles(), pos, query::result, DDValue::size(), and v.
Referenced by DDG4ProductionCuts::setProdCuts().
{ typedef std::vector<const DDsvalues_type *> sv_type; unsigned int result=0; typename std::map<K,V>::const_iterator it = keyToValue_.find(key); if (it != keyToValue_.end()) { sv_type sv = it->second.specifics(); sv_type::const_iterator svIt = sv.begin(); sv_type::const_iterator svEd = sv.end(); DDValue v(name); for (; svIt != svEd; ++svIt) { if (DDfetch(*svIt,v)) { result = v.size(); value = v.doubles()[pos]; break; } } } return result; }
unsigned int DDMapper< K, V >::toDouble | ( | const std::string & | name, |
const V & | key, | ||
double & | value, | ||
unsigned int | pos = 0 |
||
) | const |
Definition at line 142 of file DDMapper.h.
References DDfetch(), DDValue::doubles(), pos, query::result, DDValue::size(), and v.
{ typedef std::vector<const DDsvalues_type *> sv_type; unsigned int result=0; sv_type sv = val.specifics(); sv_type::const_iterator svIt = sv.begin(); sv_type::const_iterator svEd = sv.end(); DDValue v(name); for (; svIt != svEd; ++svIt) { if (DDfetch(*svIt,v)) { result = v.size(); value = v.doubles()[pos]; break; } } return result; }
unsigned int DDMapper< K, V >::toString | ( | const std::string & | name, |
const V & | key, | ||
std::string & | value, | ||
unsigned int | pos = 0 |
||
) | const |
same as toDouble but for std::string-valued values of named parameters
Definition at line 162 of file DDMapper.h.
References DDfetch(), pos, query::result, DDValue::size(), DDValue::strings(), and v.
{ typedef std::vector<const DDsvalues_type *> sv_type; unsigned int result=0; sv_type sv = val.specifics(); sv_type::const_iterator svIt = sv.begin(); sv_type::const_iterator svEd = sv.end(); DDValue v(name); for (; svIt != svEd; ++svIt) { if (DDfetch(*svIt,v)) { result = v.size(); value = v.strings()[pos]; break; } } return result; }
unsigned int DDMapper< K, V >::toString | ( | const std::string & | name, |
const K & | key, | ||
std::string & | value, | ||
unsigned int | pos = 0 |
||
) | const |
same as toDouble but for std::string-valued values of named parameters
Definition at line 182 of file DDMapper.h.
References DDfetch(), pos, query::result, DDValue::size(), DDValue::strings(), and v.
Referenced by DDG4ProductionCuts::initialize(), and DDG4ProductionCuts::setProdCuts().
{ typedef std::vector<const DDsvalues_type *> sv_type; unsigned int result=0; typename std::map<K,V>::const_iterator it = keyToValue_.find(key); if (it != keyToValue_.end()) { sv_type sv = it->second.specifics(); sv_type::const_iterator svIt = sv.begin(); sv_type::const_iterator svEd = sv.end(); DDValue v(name); //std::cout << "DDValue=" << name << std::endl; for (; svIt != svEd; ++svIt) { //std::cout << "looping..." << **svIt << std::endl; if (DDfetch(*svIt,v)) { result = v.size(); //std::cout << "found!" << std::endl; value = v.strings()[pos]; break; } } } return result; }
bool DDMapper< K, V >::value | ( | const K & | key, |
V & | result | ||
) |
removes a key-value pair
non-existing keys are simply ignored removes a key-value pair non-existing values are simply ignored fetch a value given a key returns true, if sucessfull - value is assigned to result; else false
Definition at line 86 of file DDMapper.h.
References query::result.
{ bool result = false; typename std::map<K,V>::const_iterator it = keyToValue_.find(key); if (it != keyToValue_.end()) { value = it->second; result = true; } return result; }
std::map<KeyType, ValueType> DDMapper< KeyType, ValueType >::keyToValue_ [private] |
Definition at line 71 of file DDMapper.h.
std::multimap<ValueType, KeyType> DDMapper< KeyType, ValueType >::valueToKey_ [private] |
Definition at line 72 of file DDMapper.h.