diff options
Diffstat (limited to 'src/Fl_Preferences.cxx')
| -rw-r--r-- | src/Fl_Preferences.cxx | 90 |
1 files changed, 50 insertions, 40 deletions
diff --git a/src/Fl_Preferences.cxx b/src/Fl_Preferences.cxx index 6a6150fad..f4a769d69 100644 --- a/src/Fl_Preferences.cxx +++ b/src/Fl_Preferences.cxx @@ -1,8 +1,8 @@ // // Preferences methods for the Fast Light Tool Kit (FLTK). // -// Copyright 2011-2022 by Bill Spitzak and others. // Copyright 2002-2010 by Matthias Melcher. +// Copyright 2011-2023 by Bill Spitzak and others. // // This library is free software. Distribution and use rights are outlined in // the file "COPYING" which should have been included with this file. If this @@ -28,6 +28,9 @@ #include <stdlib.h> #include <stdarg.h> +#if (FLTK_USE_STD) +#include <string> +#endif char Fl_Preferences::nameBuffer[128]; char Fl_Preferences::uuidBuffer[40]; @@ -844,46 +847,36 @@ char Fl_Preferences::get( const char *key, char *&text, const char *defaultValue return ( v != defaultValue ); } -// /** -// Reads an entry from the group. A default value must be -// supplied. The return value indicates if the value was available -// (non-zero) or the default was used (0). -// -// \param[in] key name of entry -// \param[out] value returned from preferences or default value if none was set -// \param[in] defaultValue default value to be used if no preference was set -// \return 0 if the default value was used -// */ -//char Fl_Preferences::get( const char *key, Fl_String &value, const Fl_String &defaultValue ) { -// const char *v = node->get( key ); -// if (v) { -// if ( strchr( v, '\\' ) ) { -// char *text = decodeText( v ); -// value = text; -// ::free(text); -// } else { -// value = v; -// } -// return 1; -// } else { -// value = defaultValue; -// return 0; -// } -//} - -// /** -// Sets an entry (name/value pair). The return value indicates if there -// was a problem storing the data in memory. However it does not -// reflect if the value was actually stored in the preference file. -// -// \param[in] entry name of entry -// \param[in] value set this entry to value (stops at the first nul character). -// \return 0 if setting the value failed -// */ -//char Fl_Preferences::set( const char *entry, const Fl_String &value ) { -// return set(entry, value.c_str()); -//} +#if (FLTK_USE_STD) +/** + Reads an entry from the group. A default value must be + supplied. The return value indicates if the value was available + (non-zero) or the default was used (0). + + \param[in] key name of entry + \param[out] value returned from preferences or default value if none was set + \param[in] defaultValue default value to be used if no preference was set + \return 0 if the default value was used + */ +char Fl_Preferences::get( const char *key, std::string &value, const std::string &defaultValue ) { + const char *v = node->get( key ); + if (v) { + if ( strchr( v, '\\' ) ) { + char *text = decodeText( v ); + value = text; + ::free(text); + } else { + value = v; + } + return 1; + } else { + value = defaultValue; + return 0; + } +} + +#endif /** Sets an entry (name/value pair). The return value indicates if there @@ -1055,6 +1048,23 @@ char Fl_Preferences::set( const char *key, const void *data, int dsize ) { return 1; } +#if (FLTK_USE_STD) + +/** + Sets an entry (name/value pair). The return value indicates if there + was a problem storing the data in memory. However it does not + reflect if the value was actually stored in the preference file. + + \param[in] entry name of entry + \param[in] value set this entry to value (stops at the first nul character). + \return 0 if setting the value failed + */ +char Fl_Preferences::set( const char *entry, const std::string &value ) { + return set(entry, value.c_str()); +} + +#endif // FLTK_USE_STD + /** Returns the size of the value part of an entry. |
