summaryrefslogtreecommitdiff
path: root/libguile/whippet/api/gc-options.h
blob: 2f3f7f7923d7e5b07fd538aea4fa420ec66de40d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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_EXPANSIVENESS,
  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