1#ifndef __JTOOLS__JMULTIHASHMAP__
2#define __JTOOLS__JMULTIHASHMAP__
41 template<
class JHead_t,
class JTail_t,
class JValue_t,
class JEvaluator_t>
43 public JHashMap<JHead_t, JHashMap<JTail_t, JValue_t, JEvaluator_t>, JEvaluator_t>
61 using map_type::erase;
69 JHashMap(
const JEvaluator_t& evaluator = JEvaluator_t()) :
70 JHashMap<JHead_t,
JHashMap<JTail_t, JValue_t, JEvaluator_t>, JEvaluator_t>(evaluator)
74 class super_const_iterator;
81 public JEquals <super_iterator>,
130 return i == cursor.
i && (i == range.second || second.equals(cursor.
second));
141 if (!second.increment()) {
143 while (++i != range.second) {
145 second = i->second.super_begin();
147 if (second != i->second.super_end()) {
153 return i != range.second;
175 return second.getValue();
188 range(__begin, __end)
190 for (i = range.first; i != range.second; ++i) {
192 second = i->second.super_begin();
194 if (second != i->second.super_end()) {
203 typename mapped_type::super_iterator
second;
211 public JEquals <super_const_iterator>,
236 range (cursor.range),
238 second(cursor.second)
272 return i == cursor.
i && (i == range.second || second.equals(cursor.
second));
283 if (!second.increment()) {
285 while (++i != range.second) {
287 second = i->second.super_begin();
289 if (second != i->second.super_end()) {
295 return i != range.second;
317 return second.getValue();
330 range(__begin, __end)
332 for (i = range.first; i != range.second; ++i) {
334 second = i->second.super_begin();
336 if (second != i->second.super_end()) {
345 typename mapped_type::super_const_iterator
second;
401 this->get(key.first).get(key.second);
415 this->get(key.first).get(key.second);
427 this->get(key.first).put(key.second, value);
439 if (this->has(key.first))
440 return this->get(key.first).erase(key.second);
454 return map_type::has(key.first) && this->get(key.first).has(key.second);
462 template<
class JHead_t,
class JValue_t,
class JEvaluator_t>
464 public JHashMap<JHead_t, JValue_t, JEvaluator_t>
485 JHashMap(
const JEvaluator_t& evaluator = JEvaluator_t()) :
486 JHashMap<JHead_t, JValue_t, JEvaluator_t>(evaluator)
490 class super_const_iterator;
497 public JEquals <super_iterator>,
546 return i == cursor.
i;
557 return ++i != range.second;
591 range(__begin, __end),
605 public JEquals <super_const_iterator>,
665 return i == cursor.
i;
676 return ++i != range.second;
710 range(__begin, __end),
General purpose class for hash map of unique elements.
Data structure based on type list.
Interface for binary input.
Interface for binary output.
Template interface for method bool increment().
Exception for accessing an index in a collection that is outside of its range.
The template JSinglePointer class can be used to hold a pointer to an object.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Template for generic class types.
Template definition of auxiliary base class for comparison of data structures.
Auxiliary class for no type definition.
Auxiliary class for recursive type list generation.