14#ifndef SPARSESINGLYINDEXED_HPP_
15#define SPARSESINGLYINDEXED_HPP_
24 namespace InterpreterClass
28 template<
class ValueClass >
50 {
return (*
this)( soughtIndex ); }
53 {
return (*
this)( soughtIndex ); }
54 std::map< int, ValueClass >&
56 std::map< int, ValueClass >
const&
59 hasEntry(
int const soughtIndex )
const;
61 virtual std::string
const&
84 template<
class ValueClass >
94 template<
class ValueClass >
102 template<
class ValueClass >
110 if( 0 >= valueMap.count( soughtIndex ) )
112 valueMap[ soughtIndex ] = this->defaultUnsetValue;
114 return valueMap[ soughtIndex ];
117 template<
class ValueClass >
118 inline ValueClass
const&
120 int const soughtIndex )
const
126 mapIterator valueFinder( valueMap.find( soughtIndex ) );
127 if( valueMap.end() != valueFinder )
129 return valueFinder->second;
133 return this->defaultUnsetValue;
137 template<
class ValueClass >
138 inline std::map< int, ValueClass >&
144 template<
class ValueClass >
145 inline std::map< int, ValueClass >
const&
151 template<
class ValueClass >
154 int const soughtIndex )
const
157 return ( 0 < valueMap.count( soughtIndex ) );
160 template<
class ValueClass >
161 inline std::string
const&
165 this->stringInterpretation.clear();
167 while( valueFinder != valueMap.end() )
169 this->indexPrintingVector[ 0 ] = valueFinder->first;
170 this->stringInterpretation.append( this->indicesToPrintingString() );
171 this->stringInterpretation.append( this->valueToPrintingString(
172 valueFinder->second ) );
181 this->stringInterpretation.append(
"\n" );
184 return this->stringInterpretation;
187 template<
class ValueClass >
194 template<
class ValueClass >
198 for(
int whichLine( this->currentStringBlock->getNumberOfBodyLines() );
203 (*(this->currentStringBlock))[ whichLine ].first,
204 &(this->lineRemainderA),
206 if( !(this->currentWord.empty()) )
212 this->lineRemainderA,
214 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)
bool hasEntry(int const soughtIndex) const
virtual void interpretCurrentStringBlock()
ValueClass & operator[](int const soughtIndex)
virtual void clearEntries()
virtual std::string const & getAsString()
virtual ~SparseSinglyIndexed()
std::pair< int, ValueClass > valueRecorder
ValueClass const & operator[](int const soughtIndex) const
std::map< int, ValueClass > & getValueMap()
std::map< int, ValueClass > valueMap
std::map< int, ValueClass >::const_iterator mapIterator
ValueClass & operator()(int const soughtIndex)