]> git.saurik.com Git - bison.git/blobdiff - src/muscle-tab.h
tests: beware that clang warns about "#define private public"
[bison.git] / src / muscle-tab.h
index 30a74523c3bbbf42ed243c2ccbac7eba9b8dfd91..0267bc9999bb31636ccc0d3fd81189c71f8d3950 100644 (file)
@@ -1,6 +1,6 @@
 /* Muscle table manager for Bison,
 
-   Copyright (C) 2001-2003, 2006-2013 Free Software Foundation, Inc.
+   Copyright (C) 2001-2003, 2006-2015 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
 
 # include "location.h"
 
+/* The kind of value associated to this muscle, depending on the
+   syntax of the value: keyword (no delimiter, e.g., true), string
+   (double quotes, e.g., "foo.h"), or code (braces, e.g., {int}).  */
+typedef enum
+{
+  muscle_code,
+  muscle_keyword,
+  muscle_string
+} muscle_kind;
+
+/* Conversion from string.  */
+muscle_kind muscle_kind_new (char const *k);
+
+/* Conversion to string.  */
+char const *muscle_kind_string (muscle_kind k);
+
+
 /* Create the MUSCLE_TABLE, and initialize it with default values.
    Also set up the MUSCLE_OBSTACK.  */
 void muscle_init (void);
 
 /* Insert (KEY, VALUE).  If KEY already existed, overwrite the
-   previous value.  */
+   previous value.  Otherwise create as a muscle_string type.  */
 void muscle_insert (char const *key, char const *value);
 
 /* Find the value of muscle KEY.  Unlike MUSCLE_FIND, this is always
@@ -61,14 +78,14 @@ extern struct obstack muscle_obstack;
   } while (0)
 
 # define MUSCLE_INSERT_INT(Key, Value)          \
-  MUSCLE_INSERTF(Key, "%d", Value)
+  MUSCLE_INSERTF (Key, "%d", Value)
 
 # define MUSCLE_INSERT_LONG_INT(Key, Value)     \
-  MUSCLE_INSERTF(Key, "%ld", Value)
+  MUSCLE_INSERTF (Key, "%ld", Value)
 
 /* Key -> Value, but don't apply escaping to Value. */
 # define MUSCLE_INSERT_STRING_RAW(Key, Value)   \
-  MUSCLE_INSERTF(Key, "%s", Value)
+  MUSCLE_INSERTF (Key, "%s", Value)
 
 /* Key -> Value, applying M4 escaping to Value. */
 # define MUSCLE_INSERT_STRING(Key, Value)                       \
@@ -79,17 +96,12 @@ extern struct obstack muscle_obstack;
 
 /* Key -> Value, applying C escaping to Value (and then M4). */
 # define MUSCLE_INSERT_C_STRING(Key, Value)                     \
-  MUSCLE_INSERT_STRING(Key, quotearg_style (c_quoting_style, Value))
-
-
-/* Append VALUE to the current value of KEY.  If KEY did not already
-   exist, create it.  Use MUSCLE_OBSTACK.  De-allocate the previously
-   associated value.  Copy VALUE and SEPARATOR.  */
-void muscle_grow (const char *key, const char *value, const char *separator);
+  MUSCLE_INSERT_STRING (Key, quotearg_style (c_quoting_style, Value))
 
 
 /* Append VALUE to the current value of KEY, using muscle_grow.  But
-   in addition, issue a synchronization line for the location LOC.  */
+   in addition, issue a synchronization line for the location LOC.
+   Be sure to append on a new line.  */
 void muscle_code_grow (const char *key, const char *value, location loc);
 
 
@@ -124,6 +136,7 @@ typedef enum {
    this as a user occurrence of VARIABLE by invoking
    muscle_user_name_list_grow.  */
 void muscle_percent_define_insert (char const *variable, location variable_loc,
+                                   muscle_kind kind,
                                    char const *value,
                                    muscle_percent_define_how how);