14#ifndef MULTIPLESINGLYINDEXED_HPP_
15#define MULTIPLESINGLYINDEXED_HPP_
25 namespace InterpreterClass
29 template<
class ValueClass >
37 std::list< ValueClass* >
43 std::list< ValueClass const* >
46 std::list< ValueClass* >
48 {
return (*
this)( soughtIndex ); }
49 std::list< ValueClass* >
const
51 {
return (*
this)( soughtIndex ); }
52 std::multimap< int, ValueClass >&
54 std::multimap< int, ValueClass >
const&
57 hasEntry(
int const soughtIndex )
const;
59 virtual std::string
const&
82 template<
class ValueClass >
92 template<
class ValueClass >
99 template<
class ValueClass >
100 inline std::list< ValueClass* >
107 std::list< ValueClass* > returnList;
108 std::pair< mapIterator, mapIterator >
109 rangeIterators( valueMap.equal_range( soughtIndex ) );
110 while( rangeIterators.first != rangeIterators.second )
112 returnList.push_back( &(rangeIterators.first->second) );
113 ++(rangeIterators.first);
118 template<
class ValueClass >
119 inline std::list< ValueClass const* >
121 int const soughtIndex )
const
124 std::list< ValueClass const* > returnList;
125 std::pair< mapIterator, mapIterator >
126 rangeIterators( valueMap.equal_range( soughtIndex ) );
127 while( rangeIterators.first != rangeIterators.second )
129 returnList.push_back( &(rangeIterators.first->second) );
130 ++(rangeIterators.first);
135 template<
class ValueClass >
136 inline std::multimap< int, ValueClass >&
142 template<
class ValueClass >
143 inline std::multimap< int, ValueClass >
const&
149 template<
class ValueClass >
152 int const soughtIndex )
const
155 return ( 0 < valueMap.count( soughtIndex ) );
158 template<
class ValueClass >
159 inline std::string
const&
163 this->stringInterpretation.clear();
165 while( valueFinder != valueMap.end() )
167 this->indexPrintingVector[ 0 ] = valueFinder->first;
168 this->stringInterpretation.append( this->indicesToPrintingString() );
169 this->stringInterpretation.append( this->valueToPrintingString(
170 valueFinder->second ) );
179 this->stringInterpretation.append(
"\n" );
182 return this->stringInterpretation;
185 template<
class ValueClass >
192 template<
class ValueClass >
196 for(
int whichLine( this->currentStringBlock->getNumberOfBodyLines() );
201 (*(this->currentStringBlock))[ whichLine ].first,
202 &(this->lineRemainderA),
204 if( !(this->currentWord.empty()) )
210 this->lineRemainderA,
212 valueMap.insert( valueRecorder );
static std::string firstWordOf(std::string const &stringToParse, std::string *const remainderString=NULL, std::string const &separatorChars=whitespaceChars)
static std::string const whitespaceAndNewlineChars
static std::string trimFromFrontAndBack(std::string const &stringToTrim, std::string const &charsToTrim=whitespaceAndNewlineChars)
static int stringToInt(std::string const &stringToInterpret)
std::multimap< int, ValueClass >::const_iterator mapIterator
std::multimap< int, ValueClass > & getValueMap()
virtual ~MultipleSinglyIndexed()
virtual void interpretCurrentStringBlock()
virtual std::string const & getAsString()
std::list< ValueClass * > operator()(int const soughtIndex)
virtual void clearEntries()
std::list< ValueClass * > const operator[](int const soughtIndex) const
std::multimap< int, ValueClass > valueMap
std::pair< int, ValueClass > valueRecorder
bool hasEntry(int const soughtIndex) const
std::list< ValueClass * > operator[](int const soughtIndex)