File indexing completed on 2025-02-22 10:32:43
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #ifndef DD4HEP_DETAIL_CONTAINERHELPERS_H
0014 #define DD4HEP_DETAIL_CONTAINERHELPERS_H
0015
0016
0017 #include <DD4hep/Primitives.h>
0018
0019
0020 #include <map>
0021 #include <set>
0022 #include <list>
0023 #include <vector>
0024 #include <string>
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034 namespace dd4hep {
0035
0036 template <typename Q, typename T>
0037 void insert_item(std::vector<T>& c, Q, const T& d) {
0038 c.emplace_back(d);
0039 }
0040 template <typename Q, typename T>
0041 void insert_item(std::vector<Q>& c, Q de, const T&) {
0042 c.emplace_back(de);
0043 }
0044
0045 template <typename Q, typename T>
0046 void insert_item(std::list<T>& c, Q, const T& d) {
0047 c.emplace_back(d);
0048 }
0049 template <typename Q, typename T>
0050 void insert_item(std::list<Q>& c, Q de, const T&) {
0051 c.emplace_back(de);
0052 }
0053
0054 template <typename Q, typename T>
0055 void insert_item(std::set<T>& c, Q, const T& d) {
0056 c.insert(d);
0057 }
0058 template <typename Q, typename T>
0059 void insert_item(std::set<Q>& c, Q de, const T&) {
0060 c.insert(de);
0061 }
0062
0063 template <typename Q, typename T>
0064 void insert_item(std::map<Q,T>& c, Q de, const T& d) {
0065 c.emplace(de,d);
0066 }
0067 template <typename Q, typename T>
0068 void insert_item(std::map<T,Q>& c, Q de, const T& d) {
0069 c.emplace(d,de);
0070 }
0071
0072 template <typename Q, typename T>
0073 void insert_item(std::vector<std::pair<Q,T> >& c, Q de, const T& d) {
0074 c.emplace_back(de,d);
0075 }
0076 template <typename Q, typename T>
0077 void insert_item(std::vector<std::pair<std::string,T> >& c, Q de, const T& d) {
0078 c.emplace_back(de.path(),d);
0079 }
0080
0081 template <typename Q, typename T>
0082 void insert_item(std::list<std::pair<Q,T> >& c, Q de, const T& d) {
0083 c.emplace_back(de,d);
0084 }
0085 template <typename Q, typename T>
0086 void insert_item(std::list<std::pair<std::string,T> >& c, Q de, const T& d) {
0087 c.emplace_back(de.path(),d);
0088 }
0089
0090 template <typename Q, typename T>
0091 void insert_item(std::set<std::pair<Q,T> >& c, Q de, const T& d) {
0092 c.emplace(de,d);
0093 }
0094 template <typename Q, typename T>
0095 void insert_item(std::set<std::pair<std::string,T> >& c, Q de, const T& d) {
0096 c.emplace(de.path(),d);
0097 }
0098
0099 template <typename Q, typename T>
0100 void insert_item(std::multimap<Q,T>& c, Q de, const T& d) {
0101 c.emplace(de,d);
0102 }
0103 template <typename Q, typename T>
0104 void insert_item(std::map<std::string,T>& c, Q de, const T& d) {
0105 c.emplace(de.path(),d);
0106 }
0107 template <typename Q, typename T>
0108 void insert_item(std::multimap<std::string,T>& c, Q de, const T& d) {
0109 c.emplace(de.path(),d);
0110 }
0111 }
0112 #endif