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.