Go to the documentation of this file.    1 #ifndef __JTOOLS__JMULTIMAP__ 
    2 #define __JTOOLS__JMULTIMAP__ 
   42   template<
class JAbscissa_t,
 
   52   template<
class JAbscissa_t, 
 
   54            template<
class, 
class, 
class> 
class JHead_t, 
 
   58     public JHead_t<JAbscissa_t, JMultiMap<JAbscissa_t, JOrdinate_t, JTail_t, JDistance_t>, JDistance_t>,
 
   59     public JMATH::JMath< JMultiMap<JAbscissa_t, JOrdinate_t, JMapList<JHead_t, JTail_t>, JDistance_t> >
 
   65     typedef JHead_t<JAbscissa_t,
 
   81     using map_type::insert; 
 
  101       static_cast<map_type&>(*this).add(static_cast<const map_type&>(
map));
 
  115       static_cast<map_type&>(*this).sub(static_cast<const map_type&>(
map));
 
  129       static_cast<map_type&>(*this).mul(value);
 
  142       static_cast<map_type&>(*this).div(value);
 
  154     template<
class JFunction_t>
 
  159       for (
iterator i = this->begin(); i != this->end(); ++i) {
 
  160         i->getY().for_each(
function);
 
  182     template<
unsigned int N, 
unsigned int M>
 
  187       for (
iterator i = this->begin(); i != this->end(); ++i) {
 
  193     class super_const_iterator;  
 
  199     class super_iterator :
 
  210       friend class super_const_iterator;
 
  249       virtual bool equals(
const super_iterator& cursor)
 const 
  251         return i == cursor.i && (i == range.second || second.equals(cursor.second));
 
  262         if (!second.increment()) {
 
  264           while (++i != range.second) {
 
  266             second = i->getY().super_begin();
 
  268             if (second != i->getY().super_end()) {
 
  274         return i != range.second;
 
  296         return second.getValue();
 
  309         range(__begin, __end)
 
  311         for (i = range.first; i != range.second; ++i) {
 
  313           second = i->getY().super_begin();
 
  315           if (second != i->getY().super_end()) {
 
  324       typename mapped_type::super_iterator 
second;
 
  331     class super_const_iterator :
 
  358         range (cursor.range),
 
  360         second(cursor.second)
 
  392       virtual bool equals(
const super_const_iterator& cursor)
 const 
  394         return i == cursor.i && (i == range.second || second.equals(cursor.second));
 
  405         if (!second.increment()) {
 
  407           while (++i != range.second) {
 
  409             second = i->getY().super_begin();
 
  411             if (second != i->getY().super_end()) {
 
  417         return i != range.second;
 
  439         return second.getValue();
 
  452         range(__begin, __end)
 
  454         for (i = range.first; i != range.second; ++i) {
 
  456           second = i->getY().super_begin();
 
  458           if (second != i->getY().super_end()) {
 
  467       typename mapped_type::super_const_iterator 
second;
 
  478       return super_const_iterator(this->begin(), this->end());
 
  489       return super_const_iterator(this->end(), this->end());
 
  500       return super_iterator(this->begin(), this->end());
 
  511       return super_iterator(this->end(), this->end());
 
  523       return this->
get(key.first).get(key.second);
 
  535       (*this)[key.first].insert(key.second, value);
 
  576   template<
class JAbscissa_t,
 
  578            template<
class, 
class, 
class> 
class JHead_t,
 
  581     public JHead_t<JAbscissa_t, JOrdinate_t, JDistance_t>,
 
  582     public JMATH::JMath< JMultiMap<JAbscissa_t, JOrdinate_t, JMapList<JHead_t, JLANG::JNullType>, JDistance_t> >
 
  586     enum { NUMBER_OF_DIMENSIONS = 1 };
 
  588     typedef JHead_t<JAbscissa_t, JOrdinate_t, JDistance_t>   
map_type;
 
  603     using map_type::insert; 
 
  623       static_cast<map_type&>(*this).add(static_cast<const map_type&>(
map));
 
  637       static_cast<map_type&>(*this).sub(static_cast<const map_type&>(
map));
 
  651       static_cast<map_type&>(*this).mul(value);
 
  664       static_cast<map_type&>(*this).div(value);
 
  676     template<
class JFunction_t>
 
  700     template<
unsigned int N, 
unsigned int M>
 
  707     class super_const_iterator;  
 
  713     class super_iterator :
 
  724       friend class super_const_iterator;
 
  763       virtual bool equals(
const super_iterator& cursor)
 const 
  765         return i == cursor.i;
 
  776         return ++i != range.second;
 
  810         range(__begin, __end),
 
  823     class super_const_iterator :
 
  883       virtual bool equals(
const super_const_iterator& cursor)
 const 
  885         return i == cursor.i;
 
  896         return ++i != range.second;
 
  930         range(__begin, __end),
 
  947       return super_const_iterator(this->begin(), this->end());
 
  958       return super_const_iterator(this->end(), this->end());
 
  969       return super_iterator(this->begin(), this->end());
 
  980       return super_iterator(this->end(), this->end());
 
  992       return get(key.first);
 
 
The template JSinglePointer class can be used to hold a pointer to an object.
 
Template definition of auxiliary base class for comparison of data structures.
 
Auxiliary class for no type definition.
 
Template interface for method bool increment().
 
Auxiliary base class for aritmetic operations of derived class types.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
T get(const JHead &header)
Get object from header.
 
Auxiliary classes and methods for language specific functionality.