From a5079edc04323f569457e66990360deaef7fb3d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Wed, 12 Aug 2009 14:29:02 +0000 Subject: [PATCH] * Fixed warnings. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32279 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/bin/rc/compile.h | 94 ++++++++++++-------------- src/bin/rc/parser.y | 156 +++++++++++++++++++++---------------------- 2 files changed, 122 insertions(+), 128 deletions(-) diff --git a/src/bin/rc/compile.h b/src/bin/rc/compile.h index 47726e1835..04ab818ecd 100644 --- a/src/bin/rc/compile.h +++ b/src/bin/rc/compile.h @@ -1,22 +1,22 @@ /* * Copyright (c) 2003 Matthijs Hollemans - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in + * + * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ @@ -38,58 +38,52 @@ extern int yylineno; struct field_t; // Describes a data type. -struct type_t -{ - type_code code; // type code - char* name; // name of this type - int32 count; // how many fields - field_t* fields; // field definitions - int32 def_id; // default resource ID - char* def_name; // default resource name +struct type_t { + type_code code; // type code + const char* name; // name of this type + int32 count; // how many fields + field_t* fields; // field definitions + int32 def_id; // default resource ID + const char* def_name; // default resource name }; // Used by the lexer and parser to pass around resource data. The rdef // format allows string literals to contain embedded '\0' chars, so we // can't use strlen() to find their length; instead we look at the size // field for that (size includes the final '\0' too). -struct data_t -{ - type_t type; // data type - char* name; // name (only if this is a field) - size_t size; // byte size of data - void* ptr; // the actual data +struct data_t { + type_t type; // data type + char* name; // name (only if this is a field) + size_t size; // byte size of data + void* ptr; // the actual data }; // Describes a data field in a user-defined type. -struct field_t -{ - type_t type; // data type - char* name; // name of this field - size_t resize; // if not 0, data will be resized - data_t data; // default value +struct field_t { + type_t type; // data type + const char* name; // name of this field + size_t resize; // if not 0, data will be resized + data_t data; // default value }; // Describes an array of data_t or field_t objects. -struct list_t -{ - int32 count; - void* items; // cast to data_t* or field_t* +struct list_t { + int32 count; + void* items; // cast to data_t* or field_t* }; // Used by the parser to pass around resource IDs. -struct res_id_t -{ - bool has_id; - bool has_name; - int32 id; - char* name; +struct res_id_t { + bool has_id; + bool has_name; + int32 id; + char* name; }; // Describes a symbolic constant. -struct define_t -{ - char* name; - int32 value; +struct define_t { + const char* name; + int32 value; }; // The output file we add resources to. @@ -109,7 +103,7 @@ void* alloc_mem(size_t size); void free_mem(void* ptr); // Returns the data type with the specified name. -type_t get_type(char* name); +type_t get_type(const char* name); void abort_compile(status_t err, const char* format, ...); void abort_compile(); diff --git a/src/bin/rc/parser.y b/src/bin/rc/parser.y index 633684ff65..c56abd7a74 100644 --- a/src/bin/rc/parser.y +++ b/src/bin/rc/parser.y @@ -1,22 +1,22 @@ /* * Copyright (c) 2003 Matthijs Hollemans - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in + * + * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ @@ -37,39 +37,38 @@ using namespace std; #define YYERROR_VERBOSE -static void yyerror(char*); +static void yyerror(const char*); struct ident_compare_t { // allows the maps to compare identifier names bool - operator()(char* s1, char* s2) const + operator()(const char* s1, const char* s2) const { return strcmp(s1, s2) < 0; } }; -typedef std::map sym_tab_t; +typedef std::map sym_tab_t; typedef sym_tab_t::iterator sym_iter_t; +typedef std::map type_tab_t; +typedef type_tab_t::iterator type_iter_t; + +typedef std::map define_tab_t; +typedef define_tab_t::iterator define_iter_t; + + static sym_tab_t symbol_table; // symbol table for enums static int32 enum_cnt; // counter for enum symbols without id - -static void add_symbol(char*, int32); -static int32 get_symbol(char*); - -typedef std::map type_tab_t; -typedef type_tab_t::iterator type_iter_t; - static type_tab_t type_table; // symbol table for data types - -static void add_user_type(res_id_t, type_code, char*, list_t); - -typedef std::map define_tab_t; -typedef define_tab_t::iterator define_iter_t; - static define_tab_t define_table; // symbol table for defines -static bool is_type(char* name); -static define_t get_define(char* name); + +static void add_user_type(res_id_t, type_code, const char*, list_t); +static void add_symbol(const char*, int32); +static int32 get_symbol(const char*); + +static bool is_type(const char* name); +static define_t get_define(const char* name); static data_t make_data(size_t, type_t); static data_t make_bool(bool); @@ -83,7 +82,7 @@ static BMessage* make_msg(list_t); static data_t flatten_msg(BMessage*); static data_t make_default(type_t); -static data_t make_type(char*, list_t); +static data_t make_type(char* name, list_t); static list_t make_field_list(field_t); static list_t concat_field_list(list_t, field_t); @@ -98,6 +97,7 @@ static data_t binary_expr(data_t, data_t, char); static void add_resource(res_id_t, type_code, data_t); + //------------------------------------------------------------------------------ %} @@ -130,7 +130,7 @@ static void add_resource(res_id_t, type_code, data_t); %type id %type archive array arrayfields data expr message msgfield %type type typefield type_or_define -%type msgfields typefields typedeffields +%type msgfields typefields typedeffields %type typedeffield %type datatype typecast @@ -143,11 +143,11 @@ static void add_resource(res_id_t, type_code, data_t); %% -script +script : /* empty */ - | script enum - | script typedef - | script resource + | script enum + | script typedef + | script resource ; enum @@ -204,7 +204,7 @@ typedeffield $$.data = make_default($1); } | datatype IDENT '=' expr - { + { $$.type = $1; $$.name = $2; $$.resize = 0; @@ -227,17 +227,17 @@ typedeffield ; resource - : RESOURCE id expr ';' - { - add_resource($2, $3.type.code, $3); + : RESOURCE id expr ';' + { + add_resource($2, $3.type.code, $3); } - | RESOURCE id TYPECODE expr ';' - { - add_resource($2, $3, $4); + | RESOURCE id TYPECODE expr ';' + { + add_resource($2, $3, $4); } - | RESOURCE id '(' TYPECODE ')' expr ';' - { - add_resource($2, $4, $6); + | RESOURCE id '(' TYPECODE ')' expr ';' + { + add_resource($2, $4, $6); } ; @@ -245,28 +245,28 @@ id : /* empty */ { $$.has_id = false; $$.has_name = false; $$.name = NULL; - } + } | '(' ')' { $$.has_id = false; $$.has_name = false; $$.name = NULL; - } + } | '(' integer ')' - { - $$.has_id = true; $$.id = (int32) $2; - $$.has_name = false; $$.name = NULL; + { + $$.has_id = true; $$.id = (int32) $2; + $$.has_name = false; $$.name = NULL; } | '(' integer ',' STRING ')' - { - $$.has_id = true; $$.id = (int32) $2; - $$.has_name = true; $$.name = (char*) $4.ptr; + { + $$.has_id = true; $$.id = (int32) $2; + $$.has_name = true; $$.name = (char*) $4.ptr; } | '(' IDENT ')' - { + { $$.has_id = true; $$.id = get_symbol($2); if (flags & RDEF_AUTO_NAMES) { - $$.has_name = true; $$.name = $2; + $$.has_name = true; $$.name = $2; } else { @@ -275,13 +275,13 @@ id } } | '(' IDENT ',' STRING ')' - { + { $$.has_id = true; $$.id = get_symbol($2); $$.has_name = true; $$.name = (char*) $4.ptr; - free_mem($2); + free_mem($2); } | '(' STRING ')' - { + { $$.has_id = false; $$.has_name = true; $$.name = (char*) $2.ptr; } @@ -401,7 +401,7 @@ type | IDENT expr { $$ = make_type($1, make_data_list($2)); - } + } | type_or_define { $$ = $1; } ; @@ -432,7 +432,7 @@ typefield | expr { $$ = $1; } ; -expr +expr : expr '+' expr { $$ = binary_expr($1, $3, '+'); } | expr '-' expr { $$ = binary_expr($1, $3, '-'); } | expr '*' expr { $$ = binary_expr($1, $3, '*'); } @@ -473,7 +473,7 @@ typecast | '(' MESSAGE ')' { $$ = get_type("message"); } | '(' ARCHIVE IDENT ')' { $$ = get_type("message"); free_mem($3); } | '(' IDENT ')' { $$ = get_type($2); free_mem($2); } - ; + ; datatype : ARRAY { $$ = get_type("raw"); } @@ -497,10 +497,10 @@ float void -yyerror(char* msg) +yyerror(const char* msg) { // This function is called by the parser when it encounters - // an error, after which it aborts parsing and returns from + // an error, after which it aborts parsing and returns from // yyparse(). We never call yyerror() directly. rdef_err = RDEF_COMPILE_ERR; @@ -511,7 +511,7 @@ yyerror(char* msg) void -add_symbol(char* name, int32 id) +add_symbol(const char* name, int32 id) { if (symbol_table.find(name) != symbol_table.end()) abort_compile(RDEF_COMPILE_ERR, "duplicate symbol %s", name); @@ -521,7 +521,7 @@ add_symbol(char* name, int32 id) int32 -get_symbol(char* name) +get_symbol(const char* name) { sym_iter_t i = symbol_table.find(name); @@ -533,7 +533,7 @@ get_symbol(char* name) static void -add_builtin_type(type_code code, char* name) +add_builtin_type(type_code code, const char* name) { type_t type; type.code = code; @@ -548,7 +548,7 @@ add_builtin_type(type_code code, char* name) void -add_user_type(res_id_t id, type_code code, char* name, list_t list) +add_user_type(res_id_t id, type_code code, const char* name, list_t list) { if (type_table.find(name) != type_table.end()) abort_compile(RDEF_COMPILE_ERR, "duplicate type %s", name); @@ -586,7 +586,7 @@ same_type(type_t type1, type_t type2) type_t -get_type(char* name) +get_type(const char* name) { type_iter_t i = type_table.find(name); @@ -598,14 +598,14 @@ get_type(char* name) bool -is_type(char* name) +is_type(const char* name) { return type_table.find(name) != type_table.end(); } define_t -get_define(char* name) +get_define(const char* name) { define_iter_t i = define_table.find(name); @@ -742,7 +742,7 @@ flatten_msg(BMessage* msg) data_t make_default(type_t type) -{ +{ data_t out; if (is_builtin_type(type)) { @@ -1371,7 +1371,7 @@ add_resource(res_id_t id, type_code code, data_t data) id.id = data.type.def_id; if (!id.has_name) - id.name = data.type.def_name; + id.name = (char*)data.type.def_name; if (!(flags & RDEF_MERGE_RESOURCES) && rsrc.HasResource(code, id.id)) abort_compile(RDEF_COMPILE_ERR, "duplicate resource"); @@ -1681,7 +1681,7 @@ add_file_types() static void -add_define(char* name, int32 value) +add_define(const char* name, int32 value) { define_t define; define.name = name; @@ -1749,7 +1749,7 @@ clean_up_parser() // so we don't need to free them here; compile.cpp already does that // when it cleans up. However, we do need to remove the entries from // the tables, otherwise they will still be around the next time we are - // asked to compile something. + // asked to compile something. #ifdef DEBUG // Note that in DEBUG mode, we _do_ free these items, so they don't show