1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-27 21:40:34 +02:00

Rework options interface

Users will want to set options from an environment variable or something
like that.  Particular GC implementations will want to expose an
expanded set of options.  For these reasons we make the options
interface a bit more generalized and include parsing.
This commit is contained in:
Andy Wingo 2023-02-15 10:50:17 +01:00
parent 499ff1fe76
commit 4cb26e0144
14 changed files with 411 additions and 257 deletions

39
gc-options.h Normal file
View file

@ -0,0 +1,39 @@
#ifndef GC_OPTIONS_H
#define GC_OPTIONS_H
#include "gc-visibility.h"
enum gc_heap_size_policy {
GC_HEAP_SIZE_FIXED,
GC_HEAP_SIZE_GROWABLE,
GC_HEAP_SIZE_ADAPTIVE,
};
enum {
GC_OPTION_HEAP_SIZE_POLICY,
GC_OPTION_HEAP_SIZE,
GC_OPTION_MAXIMUM_HEAP_SIZE,
GC_OPTION_HEAP_SIZE_MULTIPLIER,
GC_OPTION_HEAP_FRUGALITY,
GC_OPTION_PARALLELISM
};
struct gc_options;
GC_API_ int gc_option_from_string(const char *str);
GC_API_ struct gc_options* gc_allocate_options(void);
GC_API_ int gc_options_set_int(struct gc_options *options, int option,
int value);
GC_API_ int gc_options_set_size(struct gc_options *options, int option,
size_t value);
GC_API_ int gc_options_set_double(struct gc_options *options, int option,
double value);
GC_API_ int gc_options_parse_and_set(struct gc_options *options,
int option, const char *value);
GC_API_ int gc_options_parse_and_set_many(struct gc_options *options,
const char *str);
#endif // GC_OPTIONS_H