[Scummvm-cvs-logs] SF.net SVN: scummvm:[38250] scummvm/trunk/engines/sci/engine

wjpalenstijn at users.sourceforge.net wjpalenstijn at users.sourceforge.net
Sun Feb 15 16:00:31 CET 2009


Revision: 38250
          http://scummvm.svn.sourceforge.net/scummvm/?rev=38250&view=rev
Author:   wjpalenstijn
Date:     2009-02-15 15:00:31 +0000 (Sun, 15 Feb 2009)

Log Message:
-----------
moving towards const-correctness of files generating savegame.cpp.

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/cfsml.pl
    scummvm/trunk/engines/sci/engine/savegame.cfsml

Modified: scummvm/trunk/engines/sci/engine/cfsml.pl
===================================================================
--- scummvm/trunk/engines/sci/engine/cfsml.pl	2009-02-15 14:59:03 UTC (rev 38249)
+++ scummvm/trunk/engines/sci/engine/cfsml.pl	2009-02-15 15:00:31 UTC (rev 38250)
@@ -117,7 +117,7 @@
 #endif
 
 static void
-_cfsml_error(char *fmt, ...)
+_cfsml_error(const char *fmt, ...)
 {
   va_list argp;
 
@@ -196,9 +196,9 @@
 
 
 static char *
-_cfsml_mangle_string(char *s)
+_cfsml_mangle_string(const char *s)
 {
-  char *source = s;
+  const char *source = s;
   char c;
   char *target = (char *) sci_malloc(1 + strlen(s) * 2); /* We will probably need less than that */
   char *writer = target;
@@ -220,14 +220,15 @@
 
 
 static char *
-_cfsml_unmangle_string(char *s)
+_cfsml_unmangle_string(const char *s, unsigned int length)
 {
   char *target = (char *) sci_malloc(1 + strlen(s));
   char *writer = target;
-  char *source = s;
+  const char *source = s;
+  const char *end = s + length;
   char c;
 
-  while ((c = *source++) && (c > 31)) {
+  while ((source != end) && (c = *source++) && (c > 31)) {
     if (c == '\\') { /* Escaped character? */
       c = *source++;
       if ((c != '\\') && (c != '"')) /* Un-escape 0-31 only */
@@ -430,7 +431,7 @@
       $types{$type}{'reader'} = "_cfsml_read_" . $typename;
       write_line_pp(__LINE__, 0);
       print "static void\n$types{$type}{'writer'}(FILE *fh, $ctype* save_struc);\n";
-      print "static int\n$types{$type}{'reader'}(FILE *fh, $ctype* save_struc, char *lastval,".
+      print "static int\n$types{$type}{'reader'}(FILE *fh, $ctype* save_struc, const char *lastval,".
 	" int *line, int *hiteof);\n\n";
     };
 
@@ -455,7 +456,7 @@
 	print "  if (!(*save_struc))\n";
 	print "    fprintf(fh, \"\\\\null\\\\\");\n";
 	print "  else {\n";
-	print "    char *token = _cfsml_mangle_string((char *) *save_struc);\n";
+	print "    char *token = _cfsml_mangle_string((const char *) *save_struc);\n";
 	print "    fprintf(fh, \"\\\"%s\\\"\", token);\n";
 	print "    free(token);\n";
 	print "  }\n";
@@ -537,7 +538,7 @@
 
     write_line_pp(__LINE__, 0);
     print "static int\n_cfsml_read_$typename";
-    print "(FILE *fh, $ctype* save_struc, char *lastval, int *line, int *hiteof)\n{\n";
+    print "(FILE *fh, $ctype* save_struc, const char *lastval, int *line, int *hiteof)\n{\n";
 
     print "  char *token;\n";
     if ($types{$type}{'type'} eq $type_record) {
@@ -577,18 +578,17 @@
 	write_line_pp(__LINE__, 0);
 	print "\n";
 	print "  if (strcmp(lastval, \"\\\\null\\\\\")) { /* null pointer? */\n";
+    print "    unsigned int length = strlen(lastval);\n";
 	print "    if (*lastval == '\"') { /* Quoted string? */\n";
-	print "      int seeker = strlen(lastval);\n\n";
-	print "      while (lastval[seeker] != '\"')\n";
-	print "        --seeker;\n\n";
-	print "      if (!seeker) { /* No matching double-quotes? */\n";
+	print "      while (lastval[length] != '\"')\n";
+	print "        --length;\n\n";
+	print "      if (!length) { /* No matching double-quotes? */\n";
 	print "        _cfsml_error(\"Unbalanced quotes at line %d\\n\", *line);\n";
 	print "        return CFSML_FAILURE;\n";
 	print "      }\n\n";
-	print "      lastval[seeker] = 0; /* Terminate string at closing quotes... */\n";
 	print "      lastval++; /* ...and skip the opening quotes locally */\n";
 	print "    }\n";
-	print "    *save_struc = _cfsml_unmangle_string(lastval);\n";
+	print "    *save_struc = _cfsml_unmangle_string(lastval, length);\n";
 	print "    _cfsml_register_pointer(*save_struc);\n";
 	print "    return CFSML_SUCCESS;\n";
 	print "  } else {\n";
@@ -605,7 +605,7 @@
 	print "  };\n";
 	print "  closed = 0;\n";
 	print "  do {\n";
-	print "    char *value;\n";
+	print "    const char *value;\n";
 	print "    token = _cfsml_get_identifier(fh, line, hiteof, &assignment);\n\n";
 	print "    if (!token) {\n";
 	print "       _cfsml_error(\"Expected token at line %d\\n\", *line);\n";
@@ -837,10 +837,10 @@
 
   if ($firsttoken) {
       write_line_pp(__LINE__, 0);
-      print "    char *_cfsml_inp = $firsttoken;\n";
+      print "    const char *_cfsml_inp = $firsttoken;\n";
   } else {
       write_line_pp(__LINE__, 0);
-      print "    char *_cfsml_inp =".
+      print "    const char *_cfsml_inp =".
 	  " _cfsml_get_identifier($fh, &($linecounter), &_cfsml_eof, &dummy);\n\n";
   }
 

Modified: scummvm/trunk/engines/sci/engine/savegame.cfsml
===================================================================
--- scummvm/trunk/engines/sci/engine/savegame.cfsml	2009-02-15 14:59:03 UTC (rev 38249)
+++ scummvm/trunk/engines/sci/engine/savegame.cfsml	2009-02-15 15:00:31 UTC (rev 38250)
@@ -64,7 +64,7 @@
 }
 
 int
-read_reg_t(FILE *fh, reg_t *foo, char *lastval, int *line, int *hiteof)
+read_reg_t(FILE *fh, reg_t *foo, const char *lastval, int *line, int *hiteof)
 {
 	int segment, offset;
 
@@ -86,7 +86,7 @@
 }
 
 int
-read_sci_version(FILE *fh, sci_version_t *foo, char *lastval, int *line, int *hiteof)
+read_sci_version(FILE *fh, sci_version_t *foo, const char *lastval, int *line, int *hiteof)
 {
 	return version_parse(lastval, foo);
 }
@@ -101,10 +101,10 @@
 }
 
 int
-read_PTN(FILE *fh, parse_tree_node_t *foo, char *lastval, int *line, int *hiteof)
+read_PTN(FILE *fh, parse_tree_node_t *foo, const char *lastval, int *line, int *hiteof)
 {
 	if (lastval[0] == 'L') {
-		char *c = lastval + 1;
+		const char *c = lastval + 1;
 		char *strend;
 
 		while (*c && isspace(*c))
@@ -119,7 +119,7 @@
 
 		return 0;
 	} else if (lastval[0] == 'B') {
-		char *c = lastval + 1;
+		const char *c = lastval + 1;
 		char *strend;
 
 		while (*c && isspace(*c)) ++c;
@@ -153,30 +153,30 @@
 void
 write_menubar_tp(FILE *fh, menubar_t **foo);
 int
-read_menubar_tp(FILE *fh, menubar_t **foo, char *lastval, int *line, int *hiteof);
+read_menubar_tp(FILE *fh, menubar_t **foo, const char *lastval, int *line, int *hiteof);
 
 void
 write_mem_obj_tp(FILE *fh, mem_obj_t **foo);
 int
-read_mem_obj_tp(FILE *fh, mem_obj_t **foo, char *lastval, int *line, int *hiteof);
+read_mem_obj_tp(FILE *fh, mem_obj_t **foo, const char *lastval, int *line, int *hiteof);
 
 void
 write_int_hash_map_tp(FILE *fh, int_hash_map_t **foo);
 int
-read_int_hash_map_tp(FILE *fh, int_hash_map_t **foo, char *lastval, int *line, int *hiteof);
+read_int_hash_map_tp(FILE *fh, int_hash_map_t **foo, const char *lastval, int *line, int *hiteof);
 
 void
 write_songlib_t(FILE *fh, songlib_t *foo);
 int
-read_songlib_t(FILE *fh, songlib_t *foo, char *lastval, int *line, int *hiteof);
+read_songlib_t(FILE *fh, songlib_t *foo, const char *lastval, int *line, int *hiteof);
 
 void
 write_int_hash_map_node_tp(FILE *fh, int_hash_map_node_t **foo);
 int
-read_int_hash_map_node_tp(FILE *fh, int_hash_map_node_t **foo, char *lastval, int *line, int *hiteof);
+read_int_hash_map_node_tp(FILE *fh, int_hash_map_node_t **foo, const char *lastval, int *line, int *hiteof);
 
 int
-read_song_tp(FILE *fh, song_t **foo, char *lastval, int *line, int *hiteof);
+read_song_tp(FILE *fh, song_t **foo, const char *lastval, int *line, int *hiteof);
 
 typedef mem_obj_t *mem_obj_ptr;
 
@@ -421,7 +421,7 @@
 }
 
 int
-read_songlib_t(FILE *fh, songlib_t *songlib, char *lastval, int *line, int *hiteof)
+read_songlib_t(FILE *fh, songlib_t *songlib, const char *lastval, int *line, int *hiteof)
 {
   int songcount;
   int i;
@@ -447,7 +447,7 @@
 
 struct {
 	int type;
-	char *name;
+	const char *name;
 } mem_obj_string_names[] = {
 	{MEM_OBJ_INVALID, "INVALID"},
 	{MEM_OBJ_SCRIPT, "SCRIPT"},
@@ -461,7 +461,7 @@
 	{MEM_OBJ_DYNMEM,"DYNMEM"}};
 
 int
-mem_obj_string_to_enum(char *str)
+mem_obj_string_to_enum(const char *str)
 {
 	int i;
 
@@ -491,7 +491,7 @@
 build_iterator(state_t *s, int song_nr, int type, songit_id_t id);
 
 int
-read_song_tp(FILE *fh, song_t **foo, char *lastval, int *line, int *hiteof)
+read_song_tp(FILE *fh, song_t **foo, const char *lastval, int *line, int *hiteof)
 {
   char *token;
   int assignment;
@@ -504,7 +504,7 @@
   return 0;
 }
 int
-read_int_hash_map_tp(FILE *fh, int_hash_map_t **foo, char *lastval, int *line, int *hiteof)
+read_int_hash_map_tp(FILE *fh, int_hash_map_t **foo, const char *lastval, int *line, int *hiteof)
 {
 	*foo = (int_hash_map_t*)malloc(sizeof(int_hash_map_t));
 	%CFSMLREAD int_hash_map_t (*foo) FROM fh ERRVAR *hiteof FIRSTTOKEN lastval LINECOUNTER *line;
@@ -530,7 +530,7 @@
 }
 
 int
-read_int_hash_map_node_tp(FILE *fh, int_hash_map_node_t **foo, char *lastval, int *line, int *hiteof)
+read_int_hash_map_node_tp(FILE *fh, int_hash_map_node_t **foo, const char *lastval, int *line, int *hiteof)
 {
 	static char buffer[80];
 
@@ -586,7 +586,7 @@
 
 
 int
-read_menubar_tp(FILE *fh, menubar_t **foo, char *lastval, int *line, int *hiteof)
+read_menubar_tp(FILE *fh, menubar_t **foo, const char *lastval, int *line, int *hiteof)
 {
 
 	if (lastval[0] == '\\') {
@@ -637,7 +637,7 @@
 }
 
 int
-read_mem_obj_t(FILE *fh, mem_obj_t *foo, char *lastval, int *line, int *hiteof)
+read_mem_obj_t(FILE *fh, mem_obj_t *foo, const char *lastval, int *line, int *hiteof)
 {
 	char buffer[80];
 	foo->type = mem_obj_string_to_enum(lastval);
@@ -696,7 +696,7 @@
 }
 
 int
-read_mem_obj_tp(FILE *fh, mem_obj_t **foo, char *lastval, int *line, int *hiteof)
+read_mem_obj_tp(FILE *fh, mem_obj_t **foo, const char *lastval, int *line, int *hiteof)
 {
 
 	if (lastval[0] == '\\') {


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list