On Wed, Dec 13, 2006 at 02:53:33PM -0500, Joel E. Denny wrote:
> On Wed, 13 Dec 2006, Bob Rossi wrote:
> 
> > On Tue, Dec 12, 2006 at 05:11:39PM -0500, Joel E. Denny wrote:
> 
> > > How about replacing yypstate_init with yypstate_new and yypstate_delete?  
> > > Sorry, I forgot about this during the previous renaming, but this will 
> > > probably be a nice self-contained patch anyway.  Also, did you look into 
> > > using b4_c_function_def for these definitions?  If you agree with these 
> > > ideas, you could proceed with them while we wait for Paul's response to 
> > > the above.
> > 
> > OK, do you want me to simply rename yypstateinit to yypstate_new and
> > then add yypstate_delete to just do a free of the data allocated?
> 
> Yes, if that's agreeable to you.  (And don't forget b4_c_function_def.)
> 
> Also, Paul has responded about your previous patch, so you could revise 
> that.

How does this look?

Thanks,
Bob Rossi

2006-12-13  Bob Rossi  <[EMAIL PROTECTED]>

        * data/push.c (yypstate_init #define): Deleted.
        (yypsate_new, yypstate_delete #define): Added.
        (yypstate_init function_decl): Deleted.
        (yypsate_new, yypstate_delete function_decl): Added.
        (yypush_parse): Changed parameters yynval and yynlloc to be const.
        * tests/calc.at (_AT_DATA_CALC_Y): Use new yypstate_new
        yypstate_delete functions.
Index: data/push.c
===================================================================
RCS file: /sources/bison/bison/data/push.c,v
retrieving revision 1.12
diff -u -r1.12 push.c
--- data/push.c 12 Dec 2006 06:47:39 -0000      1.12
+++ data/push.c 13 Dec 2006 23:11:37 -0000
@@ -153,7 +153,8 @@
 [/* Substitute the variable and function names.  */
 #define yyparse b4_prefix[]parse
 ]b4_push_if([#define yypush_parse b4_prefix[]push_parse
-#define yypstate_init b4_prefix[]pstate_init
+#define yypstate_new b4_prefix[]pstate_new
+#define yypstate_delete b4_prefix[]pstate_delete
 #define yypstate b4_prefix[]pstate])[
 #define yylex   b4_prefix[]lex
 #define yyerror b4_prefix[]error
@@ -970,12 +971,13 @@
 ]b4_push_if([
 struct yypstate;
 enum { YYPUSH_MORE = 4 };
-]b4_c_function_decl([yypstate_init], [struct yypstate *], [[void], []])[
+]b4_c_function_decl([yypstate_new], [struct yypstate *], [[void], []])[
+]b4_c_function_decl([yypstate_delete], [void], [[struct yypstate *yyps], 
[yyps]])[
 ]b4_c_function_decl([yypush_parse], [int],
    [[struct yypstate *yyps], [yyps]],
    [[int yynchar], [yynchar]],
-   [[YYSTYPE *yynlval], [yynlval]]
-   b4_locations_if([,[[YYLTYPE *yynlloc], [yynlloc]]]))[
+   [[YYSTYPE const * yynlval], [yynlval]]
+   b4_locations_if([,[[YYLTYPE const * yynlloc], [yynlloc]]]))[
 ])[
 
 ]m4_divert_push([KILL])# ======================== M4 code.
@@ -1047,8 +1049,7 @@
   };
 
 /* Initialize the parser data structure.  */
-struct yypstate*
-yypstate_init (void)
+]b4_c_function_def([yypstate_new], [struct yypstate*])[
 {
   struct yypstate *yyps = (struct yypstate *) malloc (sizeof *yyps);
   yyps->yystate = 0;
@@ -1071,7 +1072,13 @@
 ]b4_locations_if([  yyps->yylsp = yyps->yyls;])[
 
   return yyps;
-}])
+}
+
+]b4_c_function_def([yypstate_delete], [void], [[struct yypstate 
*yyps],[yyps]])[
+{
+  free (yyps);
+}
+])
 m4_divert_pop([KILL])dnl# ====================== End of M4 code.
 
 b4_push_if([],[b4_pure_if([],
@@ -1085,8 +1092,8 @@
 
 b4_push_if([
 b4_c_function_def([yypush_parse], [int], [[struct yypstate *yyps], [yyps]], 
-                  [[int yynchar], [yynchar]], [[YYSTYPE *yynlval], [yynlval]]
-                 b4_locations_if([,[[YYLTYPE *yynlloc], [yynlloc]]]))],[
+                  [[int yynchar], [yynchar]], [[YYSTYPE const * yynlval], 
[yynlval]]
+                 b4_locations_if([,[[YYLTYPE const * yynlloc], [yynlloc]]]))],[
 #ifdef YYPARSE_PARAM
 b4_c_function_def([yyparse], [int], [[void *YYPARSE_PARAM], [YYPARSE_PARAM]])
 #else /* ! YYPARSE_PARAM */
@@ -1679,12 +1686,13 @@
 #endif
 
 ]b4_push_if([struct ]b4_prefix[pstate;
-]b4_c_function_decl([]b4_prefix[pstate_init], [struct ]b4_prefix[pstate *], 
[[void], []])[
+]b4_c_function_decl([]b4_prefix[pstate_new], [struct ]b4_prefix[pstate *], 
[[void], []])[
+]b4_c_function_decl([]b4_prefix[pstate_delete], [void], [[struct 
]b4_prefix[pstate *yyps],[yyps]])[
 ]b4_c_function_decl([]b4_prefix[push_parse], [int],
    [[struct ]b4_prefix[pstate *]b4_prefix[pstate], []b4_prefix[pstate]],
    [[int yynchar], [yynchar]],
-   [[YYSTYPE *yynlval], [yynlval]]
-   b4_locations_if([,[[YYLTYPE *yynlloc], [yynlloc]]]))[
+   [[YYSTYPE const * yynlval], [yynlval]]
+   b4_locations_if([,[[YYLTYPE const * yynlloc], [yynlloc]]]))[
 enum { YYPUSH_MORE = 4 };])[
 ]b4_pure_if([],
           [extern YYLTYPE b4_prefix[]lloc;])
Index: tests/calc.at
===================================================================
RCS file: /sources/bison/bison/tests/calc.at,v
retrieving revision 1.96
diff -u -r1.96 calc.at
--- tests/calc.at       8 Dec 2006 22:36:33 -0000       1.96
+++ tests/calc.at       13 Dec 2006 23:11:37 -0000
@@ -338,13 +338,13 @@
 [  yydebug = 1;])])[
 ]AT_PUSH_IF([
   {
-    struct yypstate *pstate = yypstate_init ();
+    struct yypstate *pstate = yypstate_new ();
     YYSTYPE my_lval;
     ]AT_LOCATION_IF([YYLTYPE my_lloc;])[
     do {
       status = yypush_parse (pstate, yylex (&my_lval]AT_LOCATION_IF([[, 
&my_lloc]])[), &my_lval]AT_LOCATION_IF([[, &my_lloc]])[);
     } while (status == YYPUSH_MORE);
-    free (pstate);
+    yypstate_delete (pstate);
   }],[
   status = yyparse (]AT_PARAM_IF([[&result, &count]])[);])[
   fclose (input);

Reply via email to