]> git.saurik.com Git - bison.git/blobdiff - src/muscle_tab.h
Fix push parsing memory leak reported by Brandon Lucia at
[bison.git] / src / muscle_tab.h
index aafaaae539a4dbb5f7c92c8ba42d4394fc62ea35..4aab78c720bee09c369652d71a546338515e5c8c 100644 (file)
@@ -131,6 +131,19 @@ void muscle_user_name_list_grow (char const *key, char const *user_name,
 void muscle_percent_define_insert (char const *variable, location variable_loc,
                                    char const *value);
 
+/* Mimic b4_percent_define_get in ../data/bison.m4 exactly.  That is, if the
+   %define variable VARIABLE is defined, return its value.  Otherwise, return
+   the empty string.  Also, record Bison's usage of VARIABLE by defining
+   b4_percent_define_bison_variables(VARIABLE).  The caller is responsible for
+   freeing the memory of the returned string.  */
+char *muscle_percent_define_get (char const *variable);
+
+/* Mimic b4_percent_define_ifdef in ../data/bison.m4 exactly.  That is, if the
+   %define variable VARIABLE is defined, return true.  Otherwise, return false.
+   Also, record Bison's usage of VARIABLE by defining
+   b4_percent_define_bison_variables(VARIABLE).  */
+bool muscle_percent_define_ifdef (char const *variable);
+
 /* Mimic b4_percent_define_flag_if in ../data/bison.m4 exactly.  That is, if
    the %define variable VARIABLE is defined to "" or "true", return true.  If
    it is defined to "false", return false.  Complain if it is undefined (a
@@ -145,6 +158,17 @@ bool muscle_percent_define_flag_if (char const *variable);
    suspect that the value has yet influenced the output.  */
 void muscle_percent_define_default (char const *variable, char const *value);
 
+/* VALUES points to a sequence of strings that is partitioned into
+   subsequences by NULL's, one terminating each subsequence.  The last
+   subsequence is followed by a second NULL.  For each subsequence, the first
+   string is the name of a %define variable, and all remaining strings in that
+   subsequence are the valid values for that variable.  Complain if such a
+   variable is undefined (a Bison error since the default value should have
+   been set already) or defined to any other value (possibly a user error).
+   Don't record this as a Bison usage of the variable as there's no reason to
+   suspect that the value has yet influenced the output.  */
+void muscle_percent_define_check_values (char const * const *values);
+
 /* Grow the muscle for the %code qualifier QUALIFIER appearing at QUALIFIER_LOC
    in the grammar file with code CODE appearing at CODE_LOC.  Record this as a
    grammar occurrence of VARIABLE by invoking muscle_user_name_list_grow.  */