From a1af86ed403d97c8f932c94c37537a43bcf87fb0 Mon Sep 17 00:00:00 2001 From: John Ralls Date: Tue, 13 Jul 2021 12:44:13 -0700 Subject: [PATCH] Implement gnc:generate-restore-forms, gnc-optiondb-save-to-scheme. --- libgnucash/app-utils/gnc-optiondb.i | 16 +++++++++++++++- libgnucash/app-utils/options.scm | 4 ++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/libgnucash/app-utils/gnc-optiondb.i b/libgnucash/app-utils/gnc-optiondb.i index 52be11160e..b22fd050c4 100644 --- a/libgnucash/app-utils/gnc-optiondb.i +++ b/libgnucash/app-utils/gnc-optiondb.i @@ -514,6 +514,7 @@ wrap_unique_ptr(GncOptionDBPtr, GncOptionDB); #include #include #include +#include #include "gnc-option.hpp" #include "gnc-option-ui.hpp" @@ -530,7 +531,12 @@ wrap_unique_ptr(GncOptionDBPtr, GncOptionDB); * overloads. The latter isn't useful to SWIG, ignore it. */ %ignore GncOptionDB::register_option(const char*, GncOption&&); - +/* GncOptionDB::save_to_scheme takes and returns a std::stream. Good luck + * converting *that* to anything useful! + */ +%ignore GncOptionDB::save_to_scheme(std::ostream&, const char*); +%ignore GncOptionDB::save_option_scheme(std::ostream&, const char*, const std::string&, const std::string&); +%ignore GncOptionDB::load_option_scheme(std::itream&); /* The following functions are overloaded in gnc-optiondb.hpp to provide both * GncOptionDB* and GncOptionDBPtr& versions. That confuses SWIG so ignore the * raw-ptr version. @@ -1232,6 +1238,14 @@ wrap_unique_ptr(GncOptionDBPtr, GncOptionDB); }); }); } + + std::string + gnc_optiondb_save_to_scheme(GncOptionDBPtr& odb, const char* prolog) + { + std::ostringstream oss; + odb->save_to_scheme(oss, prolog); + return oss.str(); + } %} #endif //SWIGGUILE diff --git a/libgnucash/app-utils/options.scm b/libgnucash/app-utils/options.scm index 0faa0a0659..4e26f0dc57 100644 --- a/libgnucash/app-utils/options.scm +++ b/libgnucash/app-utils/options.scm @@ -35,6 +35,10 @@ (define-public (gnc:value->string value) (format #f "~s" value)) +(define-public (gnc:generate-restore-forms options name) + (let ((optiondb (options 'generate-restore-forms))) + (gnc-optiondb-save-to-scheme optiondb name))) + (define-public (gnc:lookup-option options section name) (if options (gnc-lookup-option (options 'lookup) section name)