39 #ifndef headerfilettmathobject 40 #define headerfilettmathobject 85 Item(
const std::string & v,
int p) : value(v), param(p) {}
89 typedef std::map<std::string, Item> Table;
90 typedef Table::iterator Iterator;
91 typedef Table::const_iterator CIterator;
104 if( (c>=
'a' && c<=
'z') || (c>=
'A' && c<=
'Z') )
107 if( can_be_digit && ((c>=
'0' && c<=
'9') || c==
'_') )
117 template<
class string_type>
126 typename string_type::const_iterator i = name.begin();
128 for(++i ; i!=name.end() ; ++i)
141 Iterator i = table.find(name);
143 if( i != table.end() )
152 #ifndef TTMATH_DONT_USE_WCHAR 175 ErrorCode Add(
const std::string & name,
const std::string & value,
int param = 0)
178 return err_incorrect_name;
180 Iterator i = table.find(name);
182 if( i != table.end() )
184 return err_object_exists;
186 table.insert( std::make_pair(name,
Item(value, param)) );
192 #ifndef TTMATH_DONT_USE_WCHAR 197 ErrorCode Add(
const std::wstring & name,
const std::wstring & value,
int param = 0)
202 return err_incorrect_name;
207 return Add(str_tmp1, str_tmp2, param);
218 return table.empty();
227 return table.clear();
236 return table.begin();
256 return err_incorrect_name;
258 Iterator i = table.find(name);
260 if( i == table.end() )
261 return err_unknown_object;
263 i->second.value = value;
264 i->second.param = param;
270 #ifndef TTMATH_DONT_USE_WCHAR 281 return err_incorrect_name;
286 return EditValue(str_tmp1, str_tmp2, param);
298 return err_incorrect_name;
300 Iterator old_i = table.find(old_name);
301 if( old_i == table.end() )
302 return err_unknown_object;
304 if( old_name == new_name )
309 ErrorCode err =
Add(new_name, old_i->second.value, old_i->second.param);
313 old_i = table.find(old_name);
314 TTMATH_ASSERT( old_i != table.end() )
324 #ifndef TTMATH_DONT_USE_WCHAR 335 return err_incorrect_name;
340 return EditName(str_tmp1, str_tmp2);
352 return err_incorrect_name;
354 Iterator i = table.find(name);
356 if( i == table.end() )
357 return err_unknown_object;
365 #ifndef TTMATH_DONT_USE_WCHAR 376 return err_incorrect_name;
392 return err_incorrect_name;
394 CIterator i = table.find(name);
396 if( i == table.end() )
399 return err_unknown_object;
402 value = i->second.value;
408 #ifndef TTMATH_DONT_USE_WCHAR 418 return err_incorrect_name;
437 return err_incorrect_name;
439 CIterator i = table.find(name);
441 if( i == table.end() )
444 return err_unknown_object;
447 *value = i->second.value.c_str();
453 #ifndef TTMATH_DONT_USE_WCHAR 464 return err_incorrect_name;
481 return err_incorrect_name;
483 CIterator i = table.find(name);
485 if( i == table.end() )
489 return err_unknown_object;
492 value = i->second.value;
493 *param = i->second.param;
499 #ifndef TTMATH_DONT_USE_WCHAR 510 return err_incorrect_name;
530 return err_incorrect_name;
532 CIterator i = table.find(name);
534 if( i == table.end() )
538 return err_unknown_object;
541 *value = i->second.value.c_str();
542 *param = i->second.param;
548 #ifndef TTMATH_DONT_USE_WCHAR 562 return err_incorrect_name;
585 std::string str_tmp1, str_tmp2;
604 template<
class ValueType>
613 ValueType key, value;
624 typedef std::list<Item> buffer_type;
626 typename buffer_type::size_type buffer_max_size;
636 buffer_max_size = 15;
644 History(
typename buffer_type::size_type new_size)
646 buffer_max_size = new_size;
655 void Add(
const ValueType & key,
const ValueType & value,
ErrorCode err)
662 buffer.insert( buffer.end(), item );
664 if( buffer.size() > buffer_max_size )
665 buffer.erase(buffer.begin());
678 typename buffer_type::iterator i = buffer.begin();
680 for( ; i != buffer.end() ; ++i )
702 typename buffer_type::iterator i = buffer.begin();
704 for( ; i != buffer.end() ; ++i )
741 template<
class ValueType>
bool IsDefined(const std::string &name)
ErrorCode EditValue(const std::string &name, const std::string &value, int param=0)
History(typename buffer_type::size_type new_size)
std::vector< ValueType > bern
void Add(const ValueType &key, const ValueType &value, ErrorCode err)
ErrorCode Delete(const std::string &name)
ErrorCode GetValueAndParam(const std::string &name, std::string &value, int *param) const
ErrorCode Add(const std::string &name, const std::string &value, int param=0)
ErrorCode EditValue(const std::wstring &name, const std::wstring &value, int param=0)
ErrorCode GetValue(const std::wstring &name, std::wstring &value)
bool Remove(const ValueType &key)
History< ValueType > history
static void AssignString(std::string &result, const char *str)
a namespace for the TTMath library
constants used in the library
bool Get(const ValueType &key, ValueType &value, ErrorCode &err)
ErrorCode GetValue(const std::string &name, const char **value) const
static bool IsNameCorrect(const string_type &name)
ErrorCode EditName(const std::string &old_name, const std::string &new_name)
ErrorCode GetValueAndParam(const std::wstring &name, std::wstring &value, int *param)
ErrorCode GetValueAndParam(const std::string &name, const char **value, int *param) const
std::vector< ValueType > fact
bool IsDefined(const std::wstring &name)
ErrorCode GetValue(const std::string &name, std::string &value) const
ErrorCode GetValue(const std::wstring &name, const char **value)
static bool CorrectCharacter(int c, bool can_be_digit)
ErrorCode EditName(const std::wstring &old_name, const std::wstring &new_name)
ErrorCode GetValueAndParam(const std::wstring &name, const char **value, int *param)
ErrorCode Delete(const std::wstring &name)
ErrorCode Add(const std::wstring &name, const std::wstring &value, int param=0)