The key and value pairs config wrapper class for managing app setting.
Dependents: dconfig_demo mbed_controller_demo
Diff: dconfig.cpp
- Revision:
- 2:989178d925e9
- Parent:
- 1:4f7c80fbd4a1
--- a/dconfig.cpp Tue Feb 24 15:48:43 2015 +0000 +++ b/dconfig.cpp Wed Mar 25 21:04:58 2015 +0000 @@ -50,7 +50,7 @@ return s; } -bool DConfig::load_from( const char *ptr, size_t ptr_len, char kv_delimiter, char item_delimiter ) +bool DConfig::load_from( const char *ptr, size_t ptr_len ) { const char *end = ptr + ptr_len; const char *begin; @@ -60,7 +60,7 @@ { // load key part begin = ptr; - while (*ptr != kv_delimiter) // go until it reaches delimiter + while (*ptr != kv_delimiter_) // go until it reaches delimiter { ptr++; if (ptr > end) @@ -78,7 +78,7 @@ // load value part begin = ptr; - while (*ptr != item_delimiter) + while (*ptr != item_delimiter_) { ptr++; if (ptr > end) @@ -108,21 +108,36 @@ return func(user_data, delimiter); } -bool DConfig::save_to( DConfigOutput_t func, void *user_data, char kv_delimiter, char item_delimiter ) const +bool DConfig::save_to( DConfigOutput_t func, void *user_data ) const { for (std::map<std::string, std::string>::const_iterator it = this->begin(); it != this->end(); ++it) { - if (!put_cstring(func, user_data, it->first.c_str(), kv_delimiter)) + if (!put_cstring(func, user_data, it->first.c_str(), kv_delimiter_)) return false; - if (!put_cstring(func, user_data, it->second.c_str(), item_delimiter)) + if (!put_cstring(func, user_data, it->second.c_str(), item_delimiter_)) return false; } return true; } + +static bool print_char(void *user_data, char c) +{ + if (c == '\n') + putchar('\r'); + putchar(c); + + return true; +} + +void DConfig::print_all( void ) const +{ + save_to(print_char, NULL); +} + static bool count_config(void *user_data, char c) { size_t *cnt = (size_t*)user_data; @@ -159,3 +174,4 @@ return value_replace(key_name, tmp); } +