summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@colm.net>2020-01-08 10:33:52 +0200
committerAdrian Thurston <thurston@colm.net>2020-01-08 10:44:24 +0200
commit6c670b0a9851bd5ec3c7a90f20b164be2a54c5b2 (patch)
tree118c48561abaf6668aab80f10ad8f6a29fd1b6a4
parentfc5efa30934e5cbc4c087c29d2b31c8bf225c132 (diff)
downloadragel-6c670b0a9851bd5ec3c7a90f20b164be2a54c5b2.tar.gz
colm: removed flags field from the kid struct
We eliminated the use of this field some time ago, but never removed the field from the struct.
-rw-r--r--colm/print.c2
-rw-r--r--colm/tree.h14
2 files changed, 9 insertions, 7 deletions
diff --git a/colm/print.c b/colm/print.c
index 317b197d..2b69e86a 100644
--- a/colm/print.c
+++ b/colm/print.c
@@ -430,11 +430,9 @@ void colm_print_tree_args( program_t *prg, tree_t **sp,
kid_t kid, term;
term.tree = &term_tree;
term.next = 0;
- term.flags = 0;
kid.tree = tree;
kid.next = &term;
- kid.flags = 0;
print_kid( prg, sp, print_args, &kid );
}
diff --git a/colm/tree.h b/colm/tree.h
index 460d22c6..97833c6f 100644
--- a/colm/tree.h
+++ b/colm/tree.h
@@ -67,19 +67,23 @@ typedef struct colm_data
struct colm_location *location;
} head_t;
+/* Kid: used to implement a list of child trees. Kids are never shared. The
+ * trees they point to may be shared. This struct is also used on the stack by
+ * pushing two words and taking a pointer. We use it to take references to
+ * trees. Do not modify this struct. */
typedef struct colm_kid
{
- /* The tree needs to be first since pointers to kids are used to reference
- * trees on the stack. A pointer to the word that is a tree_t* is cast to
- * a kid_t*. */
struct colm_tree *tree;
struct colm_kid *next;
- unsigned char flags;
} kid_t;
+/* Reference chains. Allocated on the stack. The chain goes up the list of kids
+ * to the root of the reference and tells us which trees we need to split so
+ * they are not shared before we can modify a node in a tree. Do not change
+ * this struct. */
typedef struct colm_ref
{
- kid_t *kid;
+ struct colm_kid *kid;
struct colm_ref *next;
} ref_t;