]> git.saurik.com Git - bison.git/blobdiff - src/muscle-tab.h
diagnostics: improve -fcaret for list of accepted values
[bison.git] / src / muscle-tab.h
index 1f33f8c15a9bf1fc67750a654bd93dccdce825e5..7eff4f5a9e60c01b543a267cd789cf99dfd797e7 100644 (file)
@@ -40,42 +40,34 @@ extern struct obstack muscle_obstack;
     MUSCLE_INSERT_INT (Key, v__);                               \
   } while (0)
 
-#define MUSCLE_INSERT_INT(Key, Value)                           \
+#define MUSCLE_INSERTF(Key, Format, Value)                      \
   do {                                                          \
-    obstack_fgrow1 (&muscle_obstack, "%d", Value);              \
-    obstack_1grow (&muscle_obstack, 0);                         \
-    muscle_insert (Key, obstack_finish (&muscle_obstack));      \
+    obstack_printf (&muscle_obstack, Format, Value);            \
+    muscle_insert (Key, obstack_finish0 (&muscle_obstack));     \
   } while (0)
 
+#define MUSCLE_INSERT_INT(Key, Value)                           \
+  MUSCLE_INSERTF(Key, "%d", Value)
+
 #define MUSCLE_INSERT_LONG_INT(Key, Value)                      \
-  do {                                                          \
-    obstack_fgrow1 (&muscle_obstack, "%ld", Value);             \
-    obstack_1grow (&muscle_obstack, 0);                         \
-    muscle_insert (Key, obstack_finish (&muscle_obstack));      \
-  } while (0)
+  MUSCLE_INSERTF(Key, "%ld", Value)
 
 /* Key -> Value, but don't apply escaping to Value. */
 #define MUSCLE_INSERT_STRING_RAW(Key, Value)                    \
-  do {                                                          \
-    obstack_sgrow (&muscle_obstack, Value);                     \
-    obstack_1grow (&muscle_obstack, 0);                         \
-    muscle_insert (Key, obstack_finish (&muscle_obstack));      \
-  } while (0)
+  MUSCLE_INSERTF(Key, "%s", Value)
 
 /* Key -> Value, applying M4 escaping to Value. */
 #define MUSCLE_INSERT_STRING(Key, Value)                        \
   do {                                                          \
     obstack_escape (&muscle_obstack, Value);                    \
-    obstack_1grow (&muscle_obstack, 0);                         \
-    muscle_insert (Key, obstack_finish (&muscle_obstack));      \
+    muscle_insert (Key, obstack_finish0 (&muscle_obstack));     \
   } while (0)
 
 #define MUSCLE_INSERT_C_STRING(Key, Value)                      \
   do {                                                          \
     obstack_escape (&muscle_obstack,                            \
                     quotearg_style (c_quoting_style, Value));   \
-    obstack_1grow (&muscle_obstack, 0);                         \
-    muscle_insert (Key, obstack_finish (&muscle_obstack));      \
+    muscle_insert (Key, obstack_finish0 (&muscle_obstack));     \
   } while (0)
 
 /* Append VALUE to the current value of KEY.  If KEY did not already