aboutsummaryrefslogtreecommitdiff
path: root/programs/src/kconfig_parser/symlist.c
diff options
context:
space:
mode:
authorKarel Kočí <cynerd@email.cz>2015-01-14 12:39:50 +0100
committerKarel Kočí <cynerd@email.cz>2015-01-14 12:39:50 +0100
commitafeddb02f4482efce98a9a411c04d31daeb9aee4 (patch)
tree02353e650321f7115e3cb113681c8fef28833f05 /programs/src/kconfig_parser/symlist.c
parent48a732fecf66799a4eba0194006f8726306d5e45 (diff)
downloadlinux-conf-perf-afeddb02f4482efce98a9a411c04d31daeb9aee4.tar.gz
linux-conf-perf-afeddb02f4482efce98a9a411c04d31daeb9aee4.tar.bz2
linux-conf-perf-afeddb02f4482efce98a9a411c04d31daeb9aee4.zip
Output folder added to kconfig_parser
Also kconfig folder in programs/src is renamed to kconfig_parser
Diffstat (limited to 'programs/src/kconfig_parser/symlist.c')
-rw-r--r--programs/src/kconfig_parser/symlist.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/programs/src/kconfig_parser/symlist.c b/programs/src/kconfig_parser/symlist.c
new file mode 100644
index 0000000..7dcd2c6
--- /dev/null
+++ b/programs/src/kconfig_parser/symlist.c
@@ -0,0 +1,49 @@
+#include "symlist.h"
+
+struct symlist *symlist_create() {
+ struct symlist *ret;
+ ret = malloc(sizeof(struct symlist));
+ ret->size = 2;
+ ret->pos = 0;
+ ret->array = malloc(ret->size * sizeof(struct symlist_el));
+ return ret;
+}
+
+void symlist_add(struct symlist *sl, char *name) {
+ if (sl->pos >= sl->size) {
+ sl->size *= 2;
+ sl->array =
+ realloc(sl->array, sl->size * sizeof(struct symlist_el));
+ }
+ sl->array[sl->pos].id = sl->pos + 1;
+ sl->array[sl->pos].name = name;
+ sl->array[sl->pos].be = NULL;
+ sl->pos++;
+}
+
+struct symlist_el *symlist_find(struct symlist *sl, char *name) {
+ int i = 0;
+ while (i < sl->pos) {
+ if (!strcmp(name, sl->array[i].name))
+ return &sl->array[i];
+ i++;
+ }
+ return NULL;
+}
+
+void symlist_print(struct symlist *sl) {
+ int i;
+ for (i = 0; i < sl->pos; i++) {
+ printf("%d:%s\n", sl->array[i].id, sl->array[i].name);
+ if (sl->array[i].be != NULL) {
+ printf(" ");
+ boolexp_print(sl->array[i].be);
+ printf("\n");
+ }
+ }
+}
+
+void symlist_free(struct symlist *sl) {
+ free(sl->array);
+ free(sl);
+}