1 #ifndef __JTOOLS__JMULTIHASHMAP__
2 #define __JTOOLS__JMULTIHASHMAP__
23 namespace JPP {
using namespace JTOOLS; }
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;
80 class super_iterator :
81 public JEquals <super_iterator>,
128 virtual bool equals(
const super_iterator& cursor)
const
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;
210 class super_const_iterator :
211 public JEquals <super_const_iterator>,
238 second(cursor.second)
270 virtual bool equals(
const super_const_iterator& cursor)
const
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;
356 return super_const_iterator(this->begin(), this->end());
367 return super_const_iterator(this->end(), this->end());
378 return super_iterator(this->begin(), this->end());
389 return super_iterator(this->end(), this->end());
401 this->
get(key.first).
get(key.second);
415 this->
get(key.first).
get(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;
496 class super_iterator :
497 public JEquals <super_iterator>,
544 virtual bool equals(
const super_iterator& cursor)
const
546 return i == cursor.i;
557 return ++i !=
range.second;
591 range(__begin, __end),
604 class super_const_iterator :
605 public JEquals <super_const_iterator>,
663 virtual bool equals(
const super_const_iterator& cursor)
const
665 return i == cursor.i;
676 return ++i !=
range.second;
710 range(__begin, __end),
727 return super_const_iterator(this->begin(), this->end());
738 return super_const_iterator(this->end(), this->end());
749 return super_iterator(this->begin(), this->end());
760 return super_iterator(this->end(), this->end());
Template interface for method bool increment().
Interface for binary output.
General purpose class for hash map of unique elements.
T get(const JHead &header)
Get object from header.
The template JSinglePointer class can be used to hold a pointer to an object.
Auxiliary class for recursive type list generation.
Template definition of auxiliary base class for comparison of data structures.
Auxiliary class for no type definition.
Interface for binary input.
z range($ZMAX-$ZMIN)< $MINIMAL_DZ." fi fi mv $WORKDIR/fit.root $MODULE_ROOT typeset -Z 4 STRING typeset -Z 2 FLOOR JPlot1D -f $
Template for generic class types.
Data structure based on type list.
Exception for accessing an index in a collection that is outside of its range.