Commit | Line | Data |
---|---|---|
a24bd519 | 1 | #include <malloc.h> |
893638e2 | 2 | #include <math.h> |
a24bd519 LM |
3 | #include <stdio.h> |
4 | ||
5 | #include "alloc.h" | |
6 | #include "debug.h" | |
7 | #include "format.h" | |
893638e2 | 8 | #include "tabular.h" |
a24bd519 LM |
9 | |
10 | #include "storage.h" | |
11 | ||
12 | /* global variables */ | |
13 | ||
14 | #define DEFAULT_STORAGE_SIZE 10 | |
893638e2 | 15 | tab_t *storage = NULL; |
a24bd519 LM |
16 | |
17 | /* storage functions */ | |
18 | ||
bdcb95da | 19 | int memory (int nb) |
a24bd519 | 20 | { |
bdcb95da | 21 | if ((nb != -1) && (nb != size_tab (storage))) { |
893638e2 | 22 | storage = resize_tab (storage, nb); |
a24bd519 | 23 | } |
840cffa0 | 24 | if (nb == -1) { |
bdcb95da LM |
25 | memory (DEFAULT_STORAGE_SIZE); |
26 | } | |
27 | return size_tab (storage); | |
a24bd519 LM |
28 | } |
29 | ||
893638e2 | 30 | double store (int id, double value) |
a24bd519 | 31 | { |
893638e2 | 32 | if (storage == NULL) { |
a24bd519 LM |
33 | memory (DEFAULT_STORAGE_SIZE); |
34 | } | |
893638e2 | 35 | return set_tab (storage, id, value); |
a24bd519 LM |
36 | } |
37 | ||
893638e2 | 38 | double recall (int id) |
a24bd519 | 39 | { |
893638e2 | 40 | if (storage == NULL) { |
a24bd519 LM |
41 | memory (DEFAULT_STORAGE_SIZE); |
42 | } | |
893638e2 | 43 | return get_tab (storage, id); |
a24bd519 LM |
44 | } |
45 | ||
893638e2 | 46 | double increase (int id) |
a24bd519 | 47 | { |
893638e2 | 48 | if (storage == NULL) { |
a24bd519 LM |
49 | memory (DEFAULT_STORAGE_SIZE); |
50 | } | |
893638e2 LM |
51 | double val = get_tab (storage, id); |
52 | if (!isnan (val)) { | |
53 | set_tab (storage, id, ++val); | |
a24bd519 | 54 | } |
893638e2 | 55 | return val; |
a24bd519 LM |
56 | } |
57 | ||
893638e2 | 58 | double decrease (int id) |
a24bd519 | 59 | { |
893638e2 | 60 | if (storage == NULL) { |
a24bd519 LM |
61 | memory (DEFAULT_STORAGE_SIZE); |
62 | } | |
893638e2 LM |
63 | double val = get_tab (storage, id); |
64 | if (!isnan (val)) { | |
65 | set_tab (storage, id, --val); | |
a24bd519 | 66 | } |
893638e2 | 67 | return val; |
a24bd519 LM |
68 | } |
69 | ||
70 | void display (void) | |
71 | { | |
893638e2 | 72 | if (storage == NULL) { |
a24bd519 LM |
73 | memory (DEFAULT_STORAGE_SIZE); |
74 | } | |
893638e2 | 75 | int i, n = size_tab (storage); |
e2a309f9 | 76 | printf ("storage:"); |
893638e2 | 77 | for (i = 0; i < n; i++) { |
e2a309f9 LM |
78 | printf (" "); |
79 | printl (get_tab (storage, i + 1)); | |
a24bd519 | 80 | } |
e2a309f9 | 81 | printf ("\n"); |
a24bd519 LM |
82 | } |
83 | ||
84 | void clear () | |
85 | { | |
893638e2 LM |
86 | if (storage == NULL) { |
87 | memory (DEFAULT_STORAGE_SIZE); | |
88 | } | |
89 | int i, n = size_tab (storage); | |
90 | for (i = 0; i < n; i++) { | |
91 | set_tab (storage, i, 0); | |
a24bd519 LM |
92 | } |
93 | } | |
94 | ||
95 | /* vim: set ts=4 sw=4 et: */ |