Hi, sorry for the long post the log when I try to compile JAM $ cd Projet/OpenBeOS/current/src/tools/jam/ $ jam clean ...found 1 target(s)... ...updating 1 target(s)... Clean clean ...updated 1 target(s)... $ jam don't know how to make jamgram.c ...found 144 target(s)... ...updating 29 target(s)... ...can't find 1 target(s)... ...can't make 3 target(s)... Cc bin.beosx86/builtins.o Cc bin.beosx86/command.o Cc bin.beosx86/compile.o Cc bin.beosx86/execunix.o Cc bin.beosx86/fileunix.o Cc bin.beosx86/pathunix.o ...skipped jamgram.o for lack of jamgram.c... Cc bin.beosx86/jcache.o Cc bin.beosx86/hcache.o Cc bin.beosx86/expand.o Cc bin.beosx86/glob.o Cc bin.beosx86/hash.o Cc bin.beosx86/headers.o Cc bin.beosx86/lists.o Cc bin.beosx86/make.o Cc bin.beosx86/make1.o Cc bin.beosx86/newstr.o Cc bin.beosx86/option.o Cc bin.beosx86/parse.o Cc bin.beosx86/regexp.o Cc bin.beosx86/rules.o Cc bin.beosx86/scan.o /boot/home/Projet/OpenBeOS/current/src/tools/jam/scan.c:12: jamgram.h: No such file or directory gcc -c -o bin.beosx86/scan.o -DOPT_HEADER_CACHE_EXT - DOPT_JAMFILE_CACHE_EXT scan.c ...failed Cc bin.beosx86/scan.o ... Cc bin.beosx86/search.o Cc bin.beosx86/timestamp.o Cc bin.beosx86/variable.o ...skipped libjam.a for lack of jamgram.o... Cc bin.beosx86/mkjambase.o Link bin.beosx86/mkjambase Cc bin.beosx86/jam.o GenFile1 jambase.c Cc bin.beosx86/jambase.o ...skipped jam for lack of libjam.a... ...failed updating 1 target(s)... ...skipped 3 target(s)... ...updated 28 target(s)... And When I try to compile RC $ cd Projet/OpenBeOS/current/src/tools/rc/ $ jam clean ...found 1 target(s)... ...updating 1 target(s)... Clean clean ...updated 1 target(s)... $ jam ...found 132 target(s)... ...updating 13 target(s)... C++ ../../../objects/x86.R1/tools/rc/compile.o /boot/home/Projet/OpenBeOS/current/src/tools/rc/compile.cpp:35: parser.cpp.h: No such file or directory gcc -c "../../../src/tools/rc/compile.cpp" -nostdinc -Wall -Wno- multichar -Wmissing-prototypes -Wno-ctor-dtor-privacy -Woverloaded-virtual - Wpointer-arith -Wcast-align -Wsign-compare -O2 -I../../../src/tools/rc - I../../../objects/x86.R1/tools/rc -I../../../headers - I../../../headers/posix -I../../../headers/os -I../../../headers/os/add-ons -I../../../headers/os/add-ons/file_system -I../../../headers/os/add- ons/graphics -I../../../headers/os/add-ons/input_server - I../../../headers/os/add-ons/screen_saver -I../../../headers/os/add- ons/tracker -I../../../headers/os/app -I../../../headers/os/device - I../../../headers/os/drivers -I../../../headers/os/game - I../../../headers/os/interface -I../../../headers/os/kernel - I../../../headers/os/media -I../../../headers/os/mail - I../../../headers/os/midi -I../../../headers/os/midi2 - I../../../headers/os/net -I../../../headers/os/storage - I../../../headers/os/support -I../../../headers/os/translation - I/boot/develop/headers/posix -I/boot/develop/headers/cpp - I/boot/develop/tools/gnupro/lib/gcc-lib/i586-beos/2.9-beos-991026/include - o "../../../objects/x86.R1/tools/rc/compile.o" ; ...failed C++ ../../../objects/x86.R1/tools/rc/compile.o ... C++ ../../../objects/x86.R1/tools/rc/decompile.o LexC++ ../../../objects/x86.R1/tools/rc/lexer.cpp /bin/sh: - o../../../objects/x86.R1/tools/rc/lexer.cpp: No such file or directory -o../../../objects/x86.R1/tools/rc/lexer.cpp ../../../src/tools/rc/lexer.l ...failed LexC++ ../../../objects/x86.R1/tools/rc/lexer.cpp ... ...skipped <src!tools!rc>lexer.o for lack of <src!tools!rc>lexer.cpp... Bison1 ../../../objects/x86.R1/tools/rc/parser.cpp ../../../objects/x86.R1/tools/rc/parser.cpp.h /bin/m4: m4sugar/m4sugar.m4: No such file or directory m4_changecom() m4_init() m4_define([b4_actions], [[ case 9: #line 141 "../../../src/tools/rc/parser.y" { enum_cnt = 0; } break; case 12: #line 151 "../../../src/tools/rc/parser.y" { add_symbol(]b4_rhs_value([1], [1], [I])[, enum_cnt); ++enum_cnt; } break; case 13: #line 156 "../../../src/tools/rc/parser.y" { int32 id = (int32) ]b4_rhs_value([3], [3], [i])[; add_symbol(]b4_rhs_value([3], [1], [I])[, id); enum_cnt = id + 1; } break; case 14: #line 165 "../../../src/tools/rc/parser.y" { add_user_type(]b4_rhs_value([8], [2], [id])[, ]b4_rhs_value([8], [3], [t])[, ]b4_rhs_value([8], [4], [I])[, ]b4_rhs_value([8], [6], [l])[); } break; case 15: #line 169 "../../../src/tools/rc/parser.y" { add_user_type(]b4_rhs_value([7], [2], [id])[, B_RAW_TYPE, ]b4_rhs_value([7], [3], [I])[, ]b4_rhs_value([7], [5], [l])[); } break; case 16: #line 175 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([l])[ = concat_field_list(]b4_rhs_value([3], [1], [l]) [, ]b4_rhs_value([3], [3], [F])[); } break; case 17: #line 176 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([l])[ = make_field_list(]b4_rhs_value([1], [1], [F])[); } break; case 18: #line 181 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([F])[.type = ]b4_rhs_value([2], [1], [T])[; ]b4_lhs_value([F])[.name = ]b4_rhs_value([2], [2], [I])[; ]b4_lhs_value([F])[.resize = 0; ]b4_lhs_value([F])[.data = make_default(]b4_rhs_value([2], [1], [T])[) ; } break; case 19: #line 188 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([F])[.type = ]b4_rhs_value([4], [1], [T])[; ]b4_lhs_value([F])[.name = ]b4_rhs_value([4], [2], [I])[; ]b4_lhs_value([F])[.resize = 0; ]b4_lhs_value([F])[.data = cast(]b4_rhs_value([4], [1], [T])[, ]b4_rhs_value([4], [4], [d])[); } break; case 20: #line 195 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([F])[.type = ]b4_rhs_value([5], [1], [T])[; ]b4_lhs_value([F])[.name = ]b4_rhs_value([5], [2], [I])[; ]b4_lhs_value([F])[.resize = (size_t) ]b4_rhs_value([5], [4], [i])[; ]b4_lhs_value([F])[.data = resize_data(make_default(]b4_rhs_value([5], [1], [T])[), ]b4_lhs_value([F])[.resize); } break; case 21: #line 202 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([F])[.type = ]b4_rhs_value([7], [1], [T])[; ]b4_lhs_value([F])[.name = ]b4_rhs_value([7], [2], [I])[; ]b4_lhs_value([F])[.resize = (size_t) ]b4_rhs_value([7], [4], [i])[; ]b4_lhs_value([F])[.data = resize_data(cast(]b4_rhs_value([7], [1], [T])[, ]b4_rhs_value([7], [7], [d])[), ]b4_lhs_value([F])[.resize); } break; case 22: #line 212 "../../../src/tools/rc/parser.y" { add_resource(]b4_rhs_value([4], [2], [id])[, ]b4_rhs_value([4], [3], [d])[.type.code, ]b4_rhs_value([4], [3], [d])[); } break; case 23: #line 216 "../../../src/tools/rc/parser.y" { add_resource(]b4_rhs_value([5], [2], [id])[, ]b4_rhs_value([5], [3], [t])[, ]b4_rhs_value([5], [4], [d])[); } break; case 24: #line 220 "../../../src/tools/rc/parser.y" { add_resource(]b4_rhs_value([7], [2], [id])[, ]b4_rhs_value([7], [4], [t])[, ]b4_rhs_value([7], [6], [d])[); } break; case 25: #line 227 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([id])[.has_id = false; ]b4_lhs_value([id])[.has_name = false; ]b4_lhs_value([id])[.name = NULL; } break; case 26: #line 231 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([id])[.has_id = false; ]b4_lhs_value([id])[.has_name = false; ]b4_lhs_value([id])[.name = NULL; } break; case 27: #line 235 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([id])[.has_id = true; ]b4_lhs_value([id])[.id = (int32) ]b4_rhs_value([3], [2], [i])[; ]b4_lhs_value([id])[.has_name = false; ]b4_lhs_value([id])[.name = NULL; } break; case 28: #line 240 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([id])[.has_id = true; ]b4_lhs_value([id])[.id = (int32) ]b4_rhs_value([5], [2], [i])[; ]b4_lhs_value([id])[.has_name = true; ]b4_lhs_value([id])[.name = (char*) ]b4_rhs_value([5], [4], [d]) [.ptr; } break; case 29: #line 245 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([id])[.has_id = true; ]b4_lhs_value([id])[.id = get_symbol(]b4_rhs_value([3], [2], [I])[); if (flags & RDEF_AUTO_NAMES) { ]b4_lhs_value([id])[.has_name = true; ]b4_lhs_value([id])[.name = ]b4_rhs_value([3], [2], [I])[; } else { ]b4_lhs_value([id])[.has_name = false; ]b4_lhs_value([id])[.name = NULL; free_mem(]b4_rhs_value([3], [2], [I])[); } } break; case 30: #line 259 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([id])[.has_id = true; ]b4_lhs_value([id])[.id = get_symbol(]b4_rhs_value([5], [2], [I])[); ]b4_lhs_value([id])[.has_name = true; ]b4_lhs_value([id])[.name = (char*) ]b4_rhs_value([5], [4], [d])[.ptr; free_mem(]b4_rhs_value([5], [2], [I])[); } break; case 31: #line 265 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([id])[.has_id = false; ]b4_lhs_value([id])[.has_name = true; ]b4_lhs_value([id])[.name = (char*) ]b4_rhs_value([3], [2], [d])[.ptr; } break; case 32: #line 272 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = ]b4_rhs_value([4], [3], [d])[; } break; case 33: #line 273 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = make_data(0, get_type("raw")); } break; case 34: #line 274 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = make_data(0, get_type("raw")); } break; case 35: #line 275 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = import_data((char*) ]b4_rhs_value([3], [3], [d])[.ptr); } break; case 36: #line 276 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = import_data((char*) ]b4_rhs_value([2], [2], [d])[.ptr); } break; case 37: #line 280 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = concat_data(]b4_rhs_value([3], [1], [d])[, ]b4_rhs_value([3], [3], [d])[); } break; case 38: #line 281 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = ]b4_rhs_value([1], [1], [d])[; ]b4_lhs_value([d])[.type = get_type("raw"); } break; case 39: #line 286 "../../../src/tools/rc/parser.y" { BMessage* msg = make_msg(]b4_rhs_value([7], [6], [l])[); msg->what = (int32) ]b4_rhs_value([7], [3], [i])[; ]b4_lhs_value([d])[ = flatten_msg(msg); } break; case 40: #line 292 "../../../src/tools/rc/parser.y" { BMessage* msg = new BMessage; msg->what = (int32) ]b4_rhs_value([6], [3], [i])[; ]b4_lhs_value([d])[ = flatten_msg(msg); } break; case 41: #line 298 "../../../src/tools/rc/parser.y" { BMessage* msg = new BMessage; msg->what = (int32) ]b4_rhs_value([4], [3], [i])[; ]b4_lhs_value([d])[ = flatten_msg(msg); } break; case 42: #line 303 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = flatten_msg(make_msg(]b4_rhs_value([4], [3], [l])[)); } break; case 43: #line 304 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = flatten_msg(new BMessage); } break; case 44: #line 305 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = flatten_msg(new BMessage); } break; case 45: #line 309 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([l])[ = concat_data_list(]b4_rhs_value([3], [1], [l])[, ]b4_rhs_value([3], [3], [d])[); } break; case 46: #line 310 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([l])[ = make_data_list(]b4_rhs_value([1], [1], [d])[); } break; case 47: #line 315 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = ]b4_rhs_value([3], [3], [d])[; ]b4_lhs_value([d])[.name = (char*) ]b4_rhs_value([3], [1], [d])[.ptr; } break; case 48: #line 320 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = cast(]b4_rhs_value([4], [1], [T])[, ]b4_rhs_value([4], [4], [d])[); ]b4_lhs_value([d])[.name = (char*) ]b4_rhs_value([4], [2], [d])[.ptr; } break; case 49: #line 325 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = ]b4_rhs_value([4], [4], [d])[; ]b4_lhs_value([d])[.type.code = ]b4_rhs_value([4], [1], [t])[; ]b4_lhs_value([d])[.name = (char*) ]b4_rhs_value([4], [2], [d])[.ptr; } break; case 50: #line 331 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = cast(]b4_rhs_value([5], [2], [T])[, ]b4_rhs_value([5], [5], [d])[); ]b4_lhs_value([d])[.type.code = ]b4_rhs_value([5], [1], [t])[; ]b4_lhs_value([d])[.name = (char*) ]b4_rhs_value([5], [3], [d])[.ptr; } break; case 51: #line 340 "../../../src/tools/rc/parser.y" { BMessage* msg = make_msg(]b4_rhs_value([5], [4], [l])[); msg->AddString("class", ]b4_rhs_value([5], [2], [I])[); free_mem(]b4_rhs_value([5], [2], [I])[); ]b4_lhs_value([d])[ = flatten_msg(msg); } break; case 52: #line 347 "../../../src/tools/rc/parser.y" { BMessage* msg = make_msg(]b4_rhs_value([8], [7], [l])[); msg->AddString("class", ]b4_rhs_value([8], [5], [I])[); msg->AddString("add_on", (char*) ]b4_rhs_value([8], [3], [d])[.ptr); free_mem(]b4_rhs_value([8], [5], [I])[); free_mem(]b4_rhs_value([8], [3], [d])[.ptr); ]b4_lhs_value([d])[ = flatten_msg(msg); } break; case 53: #line 356 "../../../src/tools/rc/parser.y" { BMessage* msg = make_msg(]b4_rhs_value([9], [8], [l])[); msg->what = (int32) ]b4_rhs_value([9], [4], [i])[; msg->AddString("class", ]b4_rhs_value([9], [6], [I])[); free_mem(]b4_rhs_value([9], [6], [I])[); ]b4_lhs_value([d])[ = flatten_msg(msg); } break; case 54: #line 364 "../../../src/tools/rc/parser.y" { BMessage* msg = make_msg(]b4_rhs_value([10], [9], [l])[); msg->what = (int32) ]b4_rhs_value([10], [5], [i])[; msg->AddString("class", ]b4_rhs_value([10], [7], [I])[); msg->AddString("add_on", (char*) ]b4_rhs_value([10], [3], [d])[.ptr); free_mem(]b4_rhs_value([10], [7], [I])[); free_mem(]b4_rhs_value([10], [3], [d])[.ptr); ]b4_lhs_value([d])[ = flatten_msg(msg); } break; case 55: #line 376 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = make_type(]b4_rhs_value([4], [1], [I])[, ]b4_rhs_value([4], [3], [l])[); } break; case 56: #line 378 "../../../src/tools/rc/parser.y" { list_t list; list.count = 0; list.items = NULL; ]b4_lhs_value([d])[ = make_type(]b4_rhs_value([3], [1], [I])[, list); } break; case 57: #line 383 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = make_type(]b4_rhs_value([2], [1], [I])[, make_data_list(]b4_rhs_value([2], [2], [d])[)); } break; case 58: #line 387 "../../../src/tools/rc/parser.y" { list_t list; list.count = 0; list.items = NULL; ]b4_lhs_value([d])[ = make_type(]b4_rhs_value([1], [1], [I])[, list); } break; case 59: #line 394 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([l])[ = concat_data_list(]b4_rhs_value([3], [1], [l])[, ]b4_rhs_value([3], [3], [d])[); } break; case 60: #line 395 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([l])[ = make_data_list(]b4_rhs_value([1], [1], [d])[); } break; case 61: #line 399 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = ]b4_rhs_value([3], [3], [d])[; ]b4_lhs_value([d])[.name = ]b4_rhs_value([3], [1], [I])[; } break; case 62: #line 400 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = ]b4_rhs_value([1], [1], [d])[; } break; case 63: #line 404 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = cast(get_type("bool"), make_bool(]b4_rhs_value([1], [1], [b])[)); } break; case 64: #line 405 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = cast(get_type("int32"), make_int(]b4_rhs_value([1], [1], [i])[)); } break; case 65: #line 406 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = cast(get_type("float"), make_float(]b4_rhs_value([1], [1], [f])[)); } break; case 66: #line 407 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = cast(]b4_rhs_value([1], [1], [d])[.type, ]b4_rhs_value([1], [1], [d])[); } break; case 67: #line 408 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = cast(]b4_rhs_value([1], [1], [d])[.type, ]b4_rhs_value([1], [1], [d])[); } break; case 68: #line 409 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = cast(]b4_rhs_value([1], [1], [d])[.type, ]b4_rhs_value([1], [1], [d])[); } break; case 69: #line 410 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = cast(]b4_rhs_value([1], [1], [d])[.type, ]b4_rhs_value([1], [1], [d])[); } break; case 70: #line 411 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = cast(]b4_rhs_value([1], [1], [d])[.type, ]b4_rhs_value([1], [1], [d])[); } break; case 71: #line 412 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = cast(]b4_rhs_value([1], [1], [d])[.type, ]b4_rhs_value([1], [1], [d])[); } break; case 72: #line 413 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = cast(]b4_rhs_value([2], [1], [T])[, make_bool(]b4_rhs_value([2], [2], [b])[)); } break; case 73: #line 414 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = cast(]b4_rhs_value([2], [1], [T])[, make_int(]b4_rhs_value([2], [2], [i])[)); } break; case 74: #line 415 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = cast(]b4_rhs_value([2], [1], [T])[, make_float(]b4_rhs_value([2], [2], [f])[)); } break; case 75: #line 416 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = cast(]b4_rhs_value([2], [1], [T])[, ]b4_rhs_value([2], [2], [d])[); } break; case 76: #line 417 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = cast(]b4_rhs_value([2], [1], [T])[, ]b4_rhs_value([2], [2], [d])[); } break; case 77: #line 418 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = cast(]b4_rhs_value([2], [1], [T])[, ]b4_rhs_value([2], [2], [d])[); } break; case 78: #line 419 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = cast(]b4_rhs_value([2], [1], [T])[, ]b4_rhs_value([2], [2], [d])[); } break; case 79: #line 420 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = cast(]b4_rhs_value([2], [1], [T])[, ]b4_rhs_value([2], [2], [d])[); } break; case 80: #line 421 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([d])[ = cast(]b4_rhs_value([2], [1], [T])[, ]b4_rhs_value([2], [2], [d])[); } break; case 81: #line 425 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([T])[ = ]b4_rhs_value([3], [2], [T])[; } break; case 82: #line 429 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([T])[ = get_type("raw"); } break; case 83: #line 430 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([T])[ = get_type("message"); } break; case 84: #line 431 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([T])[ = get_type("message"); free_mem(]b4_rhs_value([2], [2], [I])[); } break; case 85: #line 432 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([T])[ = get_type(]b4_rhs_value([1], [1], [I])[); free_mem(]b4_rhs_value([1], [1], [I])[); } break; case 86: #line 436 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([i])[ = ]b4_rhs_value([1], [1], [i])[; } break; case 87: #line 437 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([i])[ = -(]b4_rhs_value([2], [2], [i])[); } break; case 88: #line 441 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([f])[ = ]b4_rhs_value([1], [1], [f])[; } break; case 89: #line 442 "../../../src/tools/rc/parser.y" { ]b4_lhs_value([f])[ = -(]b4_rhs_value([2], [2], [f])[); } break; ]]) m4_define([b4_mergers], [[]]) m4_define([b4_tokens], [[[[ENUM]], [258]], [[[RESOURCE]], [259]], [[[ARCHIVE]], [260]], [[[ARRAY]], [261]], [[[MESSAGE]], [262]], [[[TYPE]], [263]], [[[IMPORT]], [264]], [[[BOOL]], [265]], [[[INTEGER]], [266]], [[[FLOAT]], [267]], [[[STRING]], [268]], [[[RAW]], [269]], [[[IDENT]], [270]], [[[TYPECODE]], [271]]]) m4_define([b4_symbol_destructors], []) m4_define([b4_symbol_printers], []) m4_define([b4_translate], [[ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 24, 25, 2, 2, 20, 26, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 19, 2, 21, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 22, 2, 23, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 17, 2, 18, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]]) m4_define([b4_pure], [[0]]) m4_define([b4_pact_ninf], [[-86]]) m4_define([b4_conflict_list_heads], [[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]) m4_define([b4_output_parser_name], [[../../../objects/x86.R1/tools/rc/parser.cpp]]) m4_define([b4_toknum_max], [[271]]) m4_define([b4_rhs], [[ 28, 0, -1, -1, 28, 29, -1, 28, 33, -1, 28, 36, -1, 30, 17, 18, 19, -1, 30, 17, 31, 18, 19, -1, 30, 17, 31, 20, 18, 19, -1, 3, -1, 31, 20, 32, -1, 32, -1, 15, -1, 15, 21, 50, -1, 8, 37, 16, 15, 17, 34, 18, 19, -1, 8, 37, 15, 17, 34, 18, 19, -1, 34, 20, 35, -1, 35, -1, 49, 15, -1, 49, 15, 21, 47, -1, 49, 15, 22, 11, 23, -1, 49, 15, 22, 11, 23, 21, 47, -1, 4, 37, 47, 19, -1, 4, 37, 16, 47, 19, -1, 4, 37, 24, 16, 25, 47, 19, -1, -1, 24, 25, -1, 24, 50, 25, -1, 24, 50, 20, 13, 25, -1, 24, 15, 25, -1, 24, 15, 20, 13, 25, -1, 24, 13, 25, -1, 6, 17, 39, 18, -1, 6, 17, 18, -1, 6, -1, 6, 9, 13, -1, 9, 13, -1, 39, 20, 47, -1, 47, -1, 7, 24, 50, 25, 17, 41, 18, -1, 7, 24, 50, 25, 17, 18, -1, 7, 24, 50, 25, -1, 7, 17, 41, 18, -1, 7, 17, 18, -1, 7, -1, 41, 20, 42, -1, 42, -1, 13, 21, 47, -1, 49, 13, 21, 47, -1, 16, 13, 21, 47, -1, 16, 49, 13, 21, 47, -1, 5, 15, 17, 41, 18, -1, 5, 24, 13, 25, 15, 17, 41, 18, -1, 5, 24, 20, 50, 25, 15, 17, 41, 18, -1, 5, 24, 13, 20, 50, 25, 15, 17, 41, 18, -1, 15, 17, 45, 18, -1, 15, 17, 18, -1, 15, 47, -1, 15, -1, 45, 20, 46, -1, 46, -1, 15, 21, 47, -1, 47, -1, 10, -1, 50, -1, 51, -1, 13, -1, 14, -1, 38, -1, 40, -1, 43, -1, 44, -1, 48, 10, -1, 48, 50, -1, 48, 51, -1, 48, 13, -1, 48, 14, -1, 48, 38, -1, 48, 40, -1, 48, 43, -1, 48, 44, -1, 24, 49, 25, -1, 6, -1, 7, -1, 5, 15, -1, 15, -1, 11, -1, 26, 11, -1, 12, -1, 26, 12, -1]]) m4_define([b4_last], [[291]]) m4_define([b4_stos_min], [[0]]) m4_define([b4_error_verbose], [[0]]) m4_define([b4_table_min], [[0]]) m4_define([b4_table], [[ 36, 68, 19, 121, 20, 21, 22, 10, 23, 24, 14, 25, 26, 27, 28, 14, 59, 13, 62, 54, 134, 89, 14, 60, 15, 31, 16, 55, 90, 78, 18, 68, 63, 64, 65, 49, 17, 18, 52, 56, 95, 46, 66, 96, 94, 97, 57, 53, 106, 101, 47, 113, 20, 21, 22, 48, 23, 24, 14, 25, 26, 27, 28, 29, 50, 122, 58, 129, 169, 51, 123, 30, 42, 31, 115, 43, 40, 41, 174, 63, 64, 65, 124, 49, 69, 113, 63, 64, 65, 66, 181, 84, 42, 85, 183, 117, 66, 67, 137, 20, 21, 22, 70, 23, 24, 14, 25, 26, 27, 28, 113, 59, 159, 160, 144, 147, 148, 125, 60, 126, 31, 81, 130, 154, 131, 106, 20, 21, 22, 80, 23, 24, 14, 25, 26, 27, 28, 82, 165, 92, 88, 167, 63, 64, 65, 60, 83, 31, 170, 135, 95, 136, 66, 96, 86, 176, 20, 21, 22, 87, 23, 24, 14, 25, 26, 27, 102, 107, 138, 103, 139, 185, 143, 91, 131, 60, 108, 31, 20, 21, 22, 109, 23, 24, 14, 25, 26, 27, 28, 161, 2, 139, 110, 3, 4, 114, 116, 60, 5, 31, 20, 21, 22, 127, 23, 24, 14, 25, 26, 27, 102, 177, 180, 131, 131, 184, 186, 131, 131, 60, 132, 31, 20, 21, 22, 119, 23, 71, 14, 25, 72, 73, 28, 120, 63, 64, 65, 133, 63, 64, 65, 140, 95, 31, 66, 96, 128, 168, 66, 142, 145, 150, 146, 149, 153, 152, 162, 164, 156, 157, 163, 171, 166, 172, 173, 175, 118, 182, 178, 179, 12, 141, 158, 74, 151, 155, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 76, 0, 77, 79]]) m4_define([b4_conflicting_rules_max], [[0]]) m4_define([b4_merger], [[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]) m4_define([b4_check_max], [[182]]) m4_define([b4_rline_min], [[0]]) m4_define([b4_toknum], [[ 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 123, 125, 59, 44, 61, 91, 93, 40, 41, 45]]) m4_define([b4_defgoto_max], [[112]]) m4_define([b4_version], [[1.75]]) m4_define([b4_translate_min], [[0]]) m4_define([b4_stype], [[{ bool b; uint64 i; double f; char* I; type_code t; id_t id; data_t d; list_t l; field_t F; type_t T; }]]) m4_define([b4_pgoto_min], [[-86]]) m4_define([b4_rhs_max], [[51]]) m4_define([b4_skeleton], [[yacc.c]]) m4_define([b4_pgoto], [[ -86, -86, -86, -86, -86, 181, -86, 157, 133, -86, 265, 236, -86, 247, -85, 143, 251, 253, -86, 139, -11, -86, -29, -8, 254]]) m4_define([b4_pact_max], [[252]]) m4_define([b4_initdepth], [[200]]) m4_define([b4_conflict_list_heads_min], [[0]]) m4_define([b4_tname], [["$end", "error", "$undefined", "ENUM", "RESOURCE", "ARCHIVE", "ARRAY", "MESSAGE", "TYPE", "IMPORT", "BOOL", "INTEGER", "FLOAT", "STRING", "RAW", "IDENT", "TYPECODE", "'{'", "'}'", "';'", "','", "'='", "'['", "']'", "'('", "')'", "'-'", "$accept", "script", "enum", "enumstart", "symbols", "symboldef", "typedef", "typedeffields", "typedeffield", "resource", "id", "array", "arrayfields", "message", "msgfields", "msgfield", "archive", "type", "typefields", "typefield", "data", "typecast", "datatype", "integer", "float", 0]]) m4_define([b4_defact], [[ 2, 0, 1, 9, 25, 25, 3, 0, 4, 5, 0, 0, 0, 0, 86, 0, 0, 26, 0, 0, 0, 34, 44, 0, 63, 88, 66, 67, 58, 0, 0, 0, 68, 69, 70, 71, 0, 0, 64, 65, 0, 0, 12, 0, 0, 11, 31, 0, 29, 87, 0, 27, 0, 0, 0, 0, 0, 0, 36, 0, 0, 57, 0, 0, 82, 83, 85, 0, 0, 89, 22, 72, 75, 76, 77, 78, 79, 80, 73, 74, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 35, 33, 0, 38, 0, 0, 43, 0, 46, 0, 0, 58, 56, 0, 60, 62, 23, 84, 0, 81, 0, 17, 0, 0, 13, 7, 0, 10, 30, 28, 0, 0, 0, 0, 32, 0, 0, 0, 0, 42, 0, 0, 41, 0, 55, 0, 0, 0, 0, 18, 0, 8, 51, 0, 0, 0, 37, 47, 0, 0, 45, 0, 0, 61, 59, 24, 15, 16, 0, 0, 0, 0, 0, 0, 49, 0, 48, 40, 0, 19, 0, 14, 0, 0, 0, 50, 39, 20, 0, 52, 0, 0, 0, 53, 21, 54]]) m4_define([b4_tokens_number], [[27]]) m4_define([b4_filename], [[../../../src/tools/rc/parser.y]]) m4_define([b4_stos_max], [[51]]) m4_define([b4_output_infix], [[]]) m4_define([b4_merger_min], [[0]]) m4_define([b4_table_max], [[186]]) m4_define([b4_epilogue], [[#line 445 "../../../src/tools/rc/parser.y" //-------------------------------------------------------------------------- ---- void yyerror(char* msg) { // This function is called by the parser when it encounters // an error, after which it aborts parsing and returns from // yyparse(). We never call yyerror() directly. rdef_err = RDEF_COMPILE_ERR; rdef_err_line = yylineno; strcpy(rdef_err_file, lexfile); strcpy(rdef_err_msg, msg); } //-------------------------------------------------------------------------- ---- void add_symbol(char* name, int32 id) { if (symbol_table.find(name) != symbol_table.end()) { abort_compile(RDEF_COMPILE_ERR, "duplicate symbol %s", name); } symbol_table.insert(make_pair(name, id)); } //-------------------------------------------------------------------------- ---- int32 get_symbol(char* name) { sym_iter_t i = symbol_table.find(name); if (i == symbol_table.end()) { abort_compile(RDEF_COMPILE_ERR, "unknown symbol %s", name); } return i->second; } //-------------------------------------------------------------------------- ---- static void add_builtin_type(type_code code, char* name) { type_t type; type.code = code; type.name = name; type.count = 0; type.fields = NULL; type.def_id = 1; type.def_name = NULL; type_table.insert(make_pair(name, type)); } //-------------------------------------------------------------------------- ---- void add_user_type(id_t id, type_code code, char* name, list_t list) { if (type_table.find(name) != type_table.end()) { abort_compile(RDEF_COMPILE_ERR, "duplicate type %s", name); } type_t type; type.code = code; type.name = name; type.count = list.count; type.fields = (field_t*) list.items; type.def_id = 1; type.def_name = NULL; if (id.has_id) { type.def_id = id.id; } if (id.has_name) { type.def_name = id.name; } type_table.insert(make_pair(name, type)); } //-------------------------------------------------------------------------- ---- static bool is_builtin_type(type_t type) { return (type.count == 0); } //-------------------------------------------------------------------------- ---- static bool same_type(type_t type1, type_t type2) { return (type1.name == type2.name); // no need for strcmp } //-------------------------------------------------------------------------- ---- type_t get_type(char* name) { type_iter_t i = type_table.find(name); if (i == type_table.end()) { abort_compile(RDEF_COMPILE_ERR, "unknown type %s", name); } return i->second; } //-------------------------------------------------------------------------- ---- data_t make_data(size_t size, type_t type) { data_t out; out.type = type; out.name = NULL; out.size = size; out.ptr = alloc_mem(size); return out; } //-------------------------------------------------------------------------- ---- data_t make_bool(bool b) { data_t out = make_data(sizeof(bool), get_type("bool")); *((bool*) out.ptr) = b; return out; } //-------------------------------------------------------------------------- ---- data_t make_int(uint64 i) { data_t out = make_data(sizeof(uint64), get_type("uint64")); *((uint64*) out.ptr) = i; return out; } //-------------------------------------------------------------------------- ---- data_t make_float(double f) { data_t out = make_data(sizeof(double), get_type("double")); *((double*) out.ptr) = f; return out; } //-------------------------------------------------------------------------- ---- data_t import_data(char* filename) { data_t out; out.type = get_type("raw"); out.name = NULL; char tmpname[B_PATH_NAME_LENGTH]; if (open_file_from_include_dir(filename, tmpname)) { BFile file(tmpname, B_READ_ONLY); if (file.InitCheck() == B_OK) { off_t size; if (file.GetSize(&size) == B_OK) { out.size = (size_t) size; out.ptr = alloc_mem(size); if (file.Read(out.ptr, out.size) == (ssize_t) out.size) { free_mem(filename); return out; } } } } abort_compile(RDEF_COMPILE_ERR, "cannot import %s", filename); return out; } //-------------------------------------------------------------------------- ---- data_t resize_data(data_t data, size_t new_size) { if (new_size == 0) { abort_compile(RDEF_COMPILE_ERR, "invalid size %lu", new_size); } else if (data.size != new_size) { void* new_ptr = alloc_mem(new_size); memset(new_ptr, 0, new_size); memcpy(new_ptr, data.ptr, min(data.size, new_size)); if (data.type.code == B_STRING_TYPE) { ((char*) new_ptr)[new_size - 1] = '\0'; } free_mem(data.ptr); data.ptr = new_ptr; data.size = new_size; } return data; } //-------------------------------------------------------------------------- ---- BMessage* make_msg(list_t list) { BMessage* msg = new BMessage; for (int32 t = 0; t < list.count; ++t) { data_t data = ((data_t*) list.items)[t]; msg->AddData(data.name, data.type.code, data.ptr, data.size, false); free_mem(data.name); free_mem(data.ptr); } free_mem(list.items); return msg; } //-------------------------------------------------------------------------- ---- data_t flatten_msg(BMessage* msg) { data_t out = make_data(msg->FlattenedSize(), get_type("message")); msg->Flatten((char*) out.ptr, out.size); delete msg; return out; } //-------------------------------------------------------------------------- ---- data_t make_default(type_t type) { data_t out; if (is_builtin_type(type)) { switch (type.code) { case B_BOOL_TYPE: out = make_data(sizeof(bool), type); *((bool*) out.ptr) = false; break; case B_INT8_TYPE: case B_UINT8_TYPE: out = make_data(sizeof(uint8), type); *((uint8*) out.ptr) = 0; break; case B_INT16_TYPE: case B_UINT16_TYPE: out = make_data(sizeof(uint16), type); *((uint16*) out.ptr) = 0; break; case B_INT32_TYPE: case B_UINT32_TYPE: case B_SIZE_T_TYPE: case B_SSIZE_T_TYPE: case B_TIME_TYPE: out = make_data(sizeof(uint32), type); *((uint32*) out.ptr) = 0; break; case B_INT64_TYPE: case B_UINT64_TYPE: case B_OFF_T_TYPE: out = make_data(sizeof(uint64), type); *((uint64*) out.ptr) = 0; break; case B_FLOAT_TYPE: out = make_data(sizeof(float), type); *((float*) out.ptr) = 0.0f; break; case B_DOUBLE_TYPE: out = make_data(sizeof(double), type); *((double*) out.ptr) = 0.0; break; case B_STRING_TYPE: out = make_data(sizeof(char), type); *((char*) out.ptr) = '\0'; break; case B_RAW_TYPE: out = make_data(0, type); break; case B_MESSAGE_TYPE: out = flatten_msg(new BMessage); break; } } else { // For user-defined types, we copy the default values of the fields // into a new data_t object. There is no need to call resize_data() // here, because the default values were already resized to their // proper length when we added them to the type. size_t size = 0; for (int32 t = 0; t < type.count; ++t) { size += type.fields[t].data.size; } out = make_data(size, type); uint8* ptr = (uint8*) out.ptr; for (int32 t = 0; t < type.count; ++t) { data_t field_data = type.fields[t].data; memcpy(ptr, field_data.ptr, field_data.size); ptr += field_data.size; } } return out; } //-------------------------------------------------------------------------- ---- static data_t* fill_slots(type_t type, list_t list) { data_t* slots = (data_t*) alloc_mem(type.count * sizeof(data_t)); memset(slots, 0, type.count * sizeof(data_t)); for (int32 t = 0; t < list.count; ++t) { data_t data = ((data_t*) list.items)[t]; if (data.name == NULL) { bool found = false; for (int32 k = 0; k < type.count; ++k) { if (slots[k].ptr == NULL) { slots[k] = cast(type.fields[k].type, data); found = true; break; } } if (!found) { abort_compile(RDEF_COMPILE_ERR, "too many fields"); } } else // named field { bool found = false; for (int32 k = 0; k < type.count; ++k) { if (strcmp(type.fields[k].name, data.name) == 0) { if (slots[k].ptr != NULL) { free_mem(slots[k].ptr); } slots[k] = cast(type.fields[k].type, data); free_mem(data.name); found = true; break; } } if (!found) { abort_compile(RDEF_COMPILE_ERR, "unknown field %s", data.name); } } } return slots; } //-------------------------------------------------------------------------- ---- static data_t convert_slots(type_t type, data_t* slots) { size_t size = 0; for (int32 k = 0; k < type.count; ++k) { if (slots[k].ptr == NULL) // default value { size += type.fields[k].data.size; } else if (type.fields[k].resize != 0) { size += type.fields[k].resize; } else { size += slots[k].size; } } data_t out = make_data(size, type); uint8* ptr = (uint8*) out.ptr; for (int32 k = 0; k < type.count; ++k) { if (slots[k].ptr == NULL) // default value { memcpy(ptr, type.fields[k].data.ptr, type.fields[k].data.size); ptr += type.fields[k].data.size; } else if (type.fields[k].resize != 0) { data_t temp = resize_data(slots[k], type.fields[k].resize); memcpy(ptr, temp.ptr, temp.size); ptr += temp.size; free_mem(temp.ptr); } else { memcpy(ptr, slots[k].ptr, slots[k].size); ptr += slots[k].size; free_mem(slots[k].ptr); } } free_mem(slots); return out; } //-------------------------------------------------------------------------- ---- data_t make_type(char* name, list_t list) { // Some explanation is in order. The "list" contains zero or more data_t // items. Each of these items corresponds to a data field that the user // specified, but not necessarily to a field from the type definition. // So here we have to figure out which data item goes where. It is fairly // obvious where names items should go, but for items without a name we // simply use the first available slot. For any fields that the user did // not fill in we use the default value from the type definition. This // algorithm allows for variable size fields, such as strings and arrays. type_t type = get_type(name); data_t* slots = fill_slots(type, list); data_t out = convert_slots(type, slots); free_mem(name); free_mem(list.items); return out; } //-------------------------------------------------------------------------- ---- list_t make_field_list(field_t field) { list_t out; out.count = 1; out.items = alloc_mem(sizeof(field_t)); *((field_t*) out.items) = field; return out; } //-------------------------------------------------------------------------- ---- list_t concat_field_list(list_t list, field_t field) { list_t out; out.count = list.count + 1; out.items = alloc_mem(out.count * sizeof(field_t)); memcpy(out.items, list.items, list.count * sizeof(field_t)); memcpy((field_t*) out.items + list.count, &field, sizeof(field_t)); free_mem(list.items); return out; } //-------------------------------------------------------------------------- ---- list_t make_data_list(data_t data) { list_t out; out.count = 1; out.items = alloc_mem(sizeof(data_t)); *((data_t*) out.items) = data; return out; } //-------------------------------------------------------------------------- ---- list_t concat_data_list(list_t list, data_t data) { list_t out; out.count = list.count + 1; out.items = (data_t*) alloc_mem(out.count * sizeof(data_t)); memcpy(out.items, list.items, list.count * sizeof(data_t)); memcpy((data_t*) out.items + list.count, &data, sizeof(data_t)); free_mem(list.items); return out; } //-------------------------------------------------------------------------- ---- data_t concat_data(data_t data1, data_t data2) { data_t out = make_data(data1.size + data2.size, get_type("raw")); memcpy(out.ptr, data1.ptr, data1.size); memcpy((uint8*) out.ptr + data1.size, data2.ptr, data2.size); free_mem(data1.ptr); free_mem(data2.ptr); return out; } //-------------------------------------------------------------------------- ---- static data_t cast_to_uint8(type_t new_type, data_t data) { data_t out = make_data(sizeof(uint8), new_type); switch (data.type.code) { case B_INT8_TYPE: case B_UINT8_TYPE: *((uint8*) out.ptr) = (uint8) *((uint8*) data.ptr); break; case B_INT16_TYPE: case B_UINT16_TYPE: *((uint8*) out.ptr) = (uint8) *((uint16*) data.ptr); break; case B_INT32_TYPE: case B_UINT32_TYPE: case B_SIZE_T_TYPE: case B_SSIZE_T_TYPE: case B_TIME_TYPE: *((uint8*) out.ptr) = (uint8) *((uint32*) data.ptr); break; case B_INT64_TYPE: case B_UINT64_TYPE: case B_OFF_T_TYPE: *((uint8*) out.ptr) = (uint8) *((uint64*) data.ptr); break; default: abort_compile(RDEF_COMPILE_ERR, "cannot cast to this type"); } free_mem(data.ptr); return out; } //-------------------------------------------------------------------------- ---- static data_t cast_to_uint16(type_t new_type, data_t data) { data_t out = make_data(sizeof(uint16), new_type); switch (data.type.code) { case B_INT8_TYPE: case B_UINT8_TYPE: *((uint16*) out.ptr) = (uint16) *((uint8*) data.ptr); break; case B_INT16_TYPE: case B_UINT16_TYPE: *((uint16*) out.ptr) = (uint16) *((uint16*) data.ptr); break; case B_INT32_TYPE: case B_UINT32_TYPE: case B_SIZE_T_TYPE: case B_SSIZE_T_TYPE: case B_TIME_TYPE: *((uint16*) out.ptr) = (uint16) *((uint32*) data.ptr); break; case B_INT64_TYPE: case B_UINT64_TYPE: case B_OFF_T_TYPE: *((uint16*) out.ptr) = (uint16) *((uint64*) data.ptr); break; default: abort_compile(RDEF_COMPILE_ERR, "cannot cast to this type"); } free_mem(data.ptr); return out; } //-------------------------------------------------------------------------- ---- static data_t cast_to_uint32(type_t new_type, data_t data) { data_t out = make_data(sizeof(uint32), new_type); switch (data.type.code) { case B_INT8_TYPE: case B_UINT8_TYPE: *((uint32*) out.ptr) = (uint32) *((uint8*) data.ptr); break; case B_INT16_TYPE: case B_UINT16_TYPE: *((uint32*) out.ptr) = (uint32) *((uint16*) data.ptr); break; case B_INT32_TYPE: case B_UINT32_TYPE: case B_SIZE_T_TYPE: case B_SSIZE_T_TYPE: case B_TIME_TYPE: *((uint32*) out.ptr) = (uint32) *((uint32*) data.ptr); break; case B_INT64_TYPE: case B_UINT64_TYPE: case B_OFF_T_TYPE: *((uint32*) out.ptr) = (uint32) *((uint64*) data.ptr); break; default: abort_compile(RDEF_COMPILE_ERR, "cannot cast to this type"); } free_mem(data.ptr); return out; } //-------------------------------------------------------------------------- ---- static data_t cast_to_uint64(type_t new_type, data_t data) { data_t out = make_data(sizeof(uint64), new_type); switch (data.type.code) { case B_INT8_TYPE: case B_UINT8_TYPE: *((uint64*) out.ptr) = (uint64) *((uint8*) data.ptr); break; case B_INT16_TYPE: case B_UINT16_TYPE: *((uint64*) out.ptr) = (uint64) *((uint16*) data.ptr); break; case B_INT32_TYPE: case B_UINT32_TYPE: case B_SIZE_T_TYPE: case B_SSIZE_T_TYPE: case B_TIME_TYPE: *((uint64*) out.ptr) = (uint64) *((uint32*) data.ptr); break; case B_INT64_TYPE: case B_UINT64_TYPE: case B_OFF_T_TYPE: *((uint64*) out.ptr) = (uint64) *((uint64*) data.ptr); break; default: abort_compile(RDEF_COMPILE_ERR, "cannot cast to this type"); } free_mem(data.ptr); return out; } //-------------------------------------------------------------------------- ---- static data_t cast_to_float(type_t new_type, data_t data) { data_t out = make_data(sizeof(float), new_type); switch (data.type.code) { case B_INT8_TYPE: case B_UINT8_TYPE: *((float*) out.ptr) = (float) *((uint8*) data.ptr); break; case B_INT16_TYPE: case B_UINT16_TYPE: *((float*) out.ptr) = (float) *((uint16*) data.ptr); break; case B_INT32_TYPE: case B_UINT32_TYPE: case B_SIZE_T_TYPE: case B_SSIZE_T_TYPE: case B_TIME_TYPE: *((float*) out.ptr) = (float) *((uint32*) data.ptr); break; case B_INT64_TYPE: case B_UINT64_TYPE: case B_OFF_T_TYPE: *((float*) out.ptr) = (float) *((uint64*) data.ptr); break; case B_DOUBLE_TYPE: *((float*) out.ptr) = (float) *((double*) data.ptr); break; default: abort_compile(RDEF_COMPILE_ERR, "cannot cast to this type"); } free_mem(data.ptr); return out; } //-------------------------------------------------------------------------- ---- static data_t cast_to_double(type_t new_type, data_t data) { data_t out = make_data(sizeof(double), new_type); switch (data.type.code) { case B_INT8_TYPE: case B_UINT8_TYPE: *((double*) out.ptr) = (double) *((uint8*) data.ptr); break; case B_INT16_TYPE: case B_UINT16_TYPE: *((double*) out.ptr) = (double) *((uint16*) data.ptr); break; case B_INT32_TYPE: case B_UINT32_TYPE: case B_SIZE_T_TYPE: case B_SSIZE_T_TYPE: case B_TIME_TYPE: *((double*) out.ptr) = (double) *((uint32*) data.ptr); break; case B_INT64_TYPE: case B_UINT64_TYPE: case B_OFF_T_TYPE: *((double*) out.ptr) = (double) *((uint64*) data.ptr); break; case B_FLOAT_TYPE: *((double*) out.ptr) = (double) *((float*) data.ptr); break; default: abort_compile(RDEF_COMPILE_ERR, "cannot cast to this type"); } free_mem(data.ptr); return out; } //-------------------------------------------------------------------------- ---- data_t cast(type_t new_type, data_t data) { if (same_type(new_type, data.type)) // you can't cast bool, string, { // message, or user-defined type return data; // to another type, only to same } if (is_builtin_type(new_type)) { switch (new_type.code) { case B_INT8_TYPE: case B_UINT8_TYPE: return cast_to_uint8(new_type, data); case B_INT16_TYPE: case B_UINT16_TYPE: return cast_to_uint16(new_type, data); case B_INT32_TYPE: case B_UINT32_TYPE: case B_SIZE_T_TYPE: case B_SSIZE_T_TYPE: case B_TIME_TYPE: return cast_to_uint32(new_type, data); case B_INT64_TYPE: case B_UINT64_TYPE: case B_OFF_T_TYPE: return cast_to_uint64(new_type, data); case B_FLOAT_TYPE: return cast_to_float(new_type, data); case B_DOUBLE_TYPE: return cast_to_double(new_type, data); case B_RAW_TYPE: data.type = new_type; // you can always cast return data; // anything to raw } } abort_compile(RDEF_COMPILE_ERR, "cannot cast to this type"); return data; } //-------------------------------------------------------------------------- ---- void add_resource(id_t id, type_code code, data_t data) { if (!id.has_id) { id.id = data.type.def_id; } if (!id.has_name) { id.name = data.type.def_name; } if (!(flags & RDEF_MERGE_RESOURCES) && rsrc.HasResource(code, id.id)) { abort_compile(RDEF_COMPILE_ERR, "duplicate resource"); } status_t err = rsrc.AddResource(code, id.id, data.ptr, data.size, id.name) ; if (err != B_OK) { rdef_err = RDEF_WRITE_ERR; rdef_err_line = 0; strcpy(rdef_err_file, rsrc_file); sprintf(rdef_err_msg, "cannot add resource (%s)", strerror(err)); abort_compile(); } if (id.has_name) { free_mem(id.name); } free_mem(data.ptr); } //-------------------------------------------------------------------------- ---- static void add_point_type() { field_t* fields = (field_t*) alloc_mem(2 * sizeof(field_t)); fields[0].type = get_type("float"); fields[0].name = "x"; fields[0].resize = 0; fields[0].data = make_default(fields[0].type); fields[1].type = get_type("float"); fields[1].name = "y"; fields[1].resize = 0; fields[1].data = make_default(fields[1].type); type_t type; type.code = B_POINT_TYPE; type.name = "point"; type.fields = fields; type.count = 2; type.def_id = 1; type.def_name = NULL; type_table.insert(make_pair(type.name, type)); } //-------------------------------------------------------------------------- ---- static void add_rect_type() { field_t* fields = (field_t*) alloc_mem(4 * sizeof(field_t)); fields[0].type = get_type("float"); fields[0].name = "left"; fields[0].resize = 0; fields[0].data = make_default(fields[0].type); fields[1].type = get_type("float"); fields[1].name = "top"; fields[1].resize = 0; fields[1].data = make_default(fields[1].type); fields[2].type = get_type("float"); fields[2].name = "right"; fields[2].resize = 0; fields[2].data = make_default(fields[2].type); fields[3].type = get_type("float"); fields[3].name = "bottom"; fields[3].resize = 0; fields[3].data = make_default(fields[3].type); type_t type; type.code = B_RECT_TYPE; type.name = "rect"; type.fields = fields; type.count = 4; type.def_id = 1; type.def_name = NULL; type_table.insert(make_pair(type.name, type)); } //-------------------------------------------------------------------------- ---- static void add_rgb_color_type() { field_t* fields = (field_t*) alloc_mem(4 * sizeof(field_t)); fields[0].type = get_type("uint8"); fields[0].name = "red"; fields[0].resize = 0; fields[0].data = make_default(fields[0].type); fields[1].type = get_type("uint8"); fields[1].name = "green"; fields[1].resize = 0; fields[1].data = make_default(fields[1].type); fields[2].type = get_type("uint8"); fields[2].name = "blue"; fields[2].resize = 0; fields[2].data = make_default(fields[2].type); fields[3].type = get_type("uint8"); fields[3].name = "alpha"; fields[3].resize = 0; fields[3].data = make_default(fields[3].type); *((uint8*) fields[3].data.ptr) = 255; type_t type; type.code = B_RGB_COLOR_TYPE; type.name = "rgb_color"; type.fields = fields; type.count = 4; type.def_id = 1; type.def_name = NULL; type_table.insert(make_pair(type.name, type)); } //-------------------------------------------------------------------------- ---- static void add_app_signature_type() { field_t* fields = (field_t*) alloc_mem(1 * sizeof(field_t)); fields[0].type = get_type("string"); fields[0].name = "signature"; fields[0].resize = 0; fields[0].data = make_default(fields[0].type); type_t type; type.code = 'MIMS'; type.name = "app_signature"; type.fields = fields; type.count = 1; type.def_id = 1; type.def_name = "BEOS:APP_SIG"; type_table.insert(make_pair(type.name, type)); } //-------------------------------------------------------------------------- ---- static void add_app_flags() { field_t* fields = (field_t*) alloc_mem(1 * sizeof(field_t)); fields[0].type = get_type("uint32"); fields[0].name = "flags"; fields[0].resize = 0; fields[0].data = make_default(fields[0].type); type_t type; type.code = 'APPF'; type.name = "app_flags"; type.fields = fields; type.count = 1; type.def_id = 1; type.def_name = "BEOS:APP_FLAGS"; type_table.insert(make_pair(type.name, type)); } //-------------------------------------------------------------------------- ---- static void add_app_version() { field_t* fields = (field_t*) alloc_mem(7 * sizeof(field_t)); fields[0].type = get_type("uint32"); fields[0].name = "major"; fields[0].resize = 0; fields[0].data = make_default(fields[0].type); fields[1].type = get_type("uint32"); fields[1].name = "middle"; fields[1].resize = 0; fields[1].data = make_default(fields[1].type); fields[2].type = get_type("uint32"); fields[2].name = "minor"; fields[2].resize = 0; fields[2].data = make_default(fields[2].type); fields[3].type = get_type("uint32"); fields[3].name = "variety"; fields[3].resize = 0; fields[3].data = make_default(fields[3].type); fields[4].type = get_type("uint32"); fields[4].name = "internal"; fields[4].resize = 0; fields[4].data = make_default(fields[4].type); fields[5].type = get_type("string"); fields[5].name = "short_info"; fields[5].resize = 64; fields[5].data = make_data(fields[5].resize, fields[5].type); fields[6].type = get_type("string"); fields[6].name = "long_info"; fields[6].resize = 256; fields[6].data = make_data(fields[6].resize, fields[6].type); memset(fields[5].data.ptr, '\0', fields[5].data.size); memset(fields[6].data.ptr, '\0', fields[6].data.size); type_t type; type.code = 'APPV'; type.name = "app_version"; type.fields = fields; type.count = 7; type.def_id = 1; type.def_name = "BEOS:APP_VERSION"; type_table.insert(make_pair(type.name, type)); } //-------------------------------------------------------------------------- ---- static void add_large_icon() { field_t* fields = (field_t*) alloc_mem(1 * sizeof(field_t)); fields[0].type = get_type("raw"); fields[0].name = "icon"; fields[0].resize = 1024; fields[0].data = make_data(fields[0].resize, fields[0].type); type_t type; type.code = 'ICON'; type.name = "large_icon"; type.fields = fields; type.count = 1; type.def_id = 101; type.def_name = "BEOS:L:STD_ICON"; type_table.insert(make_pair(type.name, type)); } //-------------------------------------------------------------------------- ---- static void add_mini_icon() { field_t* fields = (field_t*) alloc_mem(1 * sizeof(field_t)); fields[0].type = get_type("raw"); fields[0].name = "icon"; fields[0].resize = 256; fields[0].data = make_data(fields[0].resize, fields[0].type); type_t type; type.code = 'MICN'; type.name = "mini_icon"; type.fields = fields; type.count = 1; type.def_id = 101; type.def_name = "BEOS:M:STD_ICON"; type_table.insert(make_pair(type.name, type)); } //-------------------------------------------------------------------------- ---- static void add_file_types() { field_t* fields = (field_t*) alloc_mem(1 * sizeof(field_t)); fields[0].type = get_type("message"); fields[0].name = "types"; fields[0].resize = 0; fields[0].data = make_default(fields[0].type); type_t type; type.code = 'MSGG'; type.name = "file_types"; type.fields = fields; type.count = 1; type.def_id = 1; type.def_name = "BEOS:FILE_TYPES"; type_table.insert(make_pair(type.name, type)); } //-------------------------------------------------------------------------- ---- void init_parser() { add_builtin_type(B_BOOL_TYPE, "bool"); add_builtin_type(B_INT8_TYPE, "int8"); add_builtin_type(B_UINT8_TYPE, "uint8"); add_builtin_type(B_INT16_TYPE, "int16"); add_builtin_type(B_UINT16_TYPE, "uint16"); add_builtin_type(B_INT32_TYPE, "int32"); add_builtin_type(B_UINT32_TYPE, "uint32"); add_builtin_type(B_SIZE_T_TYPE, "size_t"); add_builtin_type(B_SSIZE_T_TYPE, "ssize_t"); add_builtin_type(B_TIME_TYPE, "time_t"); add_builtin_type(B_INT64_TYPE, "int64"); add_builtin_type(B_UINT64_TYPE, "uint64"); add_builtin_type(B_OFF_T_TYPE, "off_t"); add_builtin_type(B_FLOAT_TYPE, "float"); add_builtin_type(B_DOUBLE_TYPE, "double"); add_builtin_type(B_STRING_TYPE, "string"); add_builtin_type(B_RAW_TYPE, "raw"); add_builtin_type(B_RAW_TYPE, "buffer"); add_builtin_type(B_MESSAGE_TYPE, "message"); add_point_type(); add_rect_type(); add_rgb_color_type(); add_app_signature_type(); add_app_flags(); add_app_version(); add_large_icon(); add_mini_icon(); add_file_types(); } //-------------------------------------------------------------------------- ---- void clean_up_parser() { // The symbol table entries have several malloc'ed objects associated // with them (such as their name). They were allocated with alloc_mem(), // 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. In DEBUG mode, however, we do free these // items, so they don't show up in the mem leak statistics. #ifdef DEBUG for (sym_iter_t i = symbol_table.begin(); i != symbol_table.end(); ++i) { free_mem(i->first); } for (type_iter_t i = type_table.begin(); i != type_table.end(); ++i) { free_mem(i->first); type_t type = i->second; for (int32 t = 0; t < type.count; ++t) { free_mem(type.fields[t].name); free_mem(type.fields[t].data.ptr); } free_mem(type.fields); free_mem(type.name); free_mem(type.def_name); } #endif symbol_table.clear(); type_table.clear(); } //-------------------------------------------------------------------------- ---- ]]) m4_define([b4_post_prologue], [[]]) m4_define([b4_table_ninf], [[-1]]) m4_define([b4_prhs], [[ 0, 0, 3, 4, 7, 10, 13, 18, 24, 31, 33, 37, 39, 41, 45, 54, 62, 66, 68, 71, 76, 82, 90, 95, 101, 109, 110, 113, 117, 123, 127, 133, 137, 142, 146, 148, 152, 155, 159, 161, 169, 176, 181, 186, 190, 192, 196, 198, 202, 207, 212, 218, 224, 233, 243, 254, 259, 263, 266, 268, 272, 274, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 301, 304, 307, 310, 313, 316, 319, 322, 325, 329, 331, 333, 336, 338, 340, 343, 345]]) m4_define([b4_check], [[ 11, 30, 10, 88, 5, 6, 7, 24, 9, 10, 11, 12, 13, 14, 15, 11, 17, 17, 29, 9, 21, 13, 11, 24, 13, 26, 15, 17, 20, 37, 26, 60, 5, 6, 7, 11, 25, 26, 15, 17, 13, 25, 15, 16, 55, 18, 24, 24, 59, 57, 20, 80, 5, 6, 7, 25, 9, 10, 11, 12, 13, 14, 15, 16, 20, 20, 13, 96, 153, 25, 25, 24, 15, 26, 82, 18, 15, 16, 163, 5, 6, 7, 90, 11, 12, 114, 5, 6, 7, 15, 175, 18, 15, 20, 179, 18, 15, 16, 109, 5, 6, 7, 19, 9, 10, 11, 12, 13, 14, 15, 139, 17, 21, 22, 122, 126, 127, 18, 24, 20, 26, 15, 18, 134, 20, 136, 5, 6, 7, 17, 9, 10, 11, 12, 13, 14, 15, 21, 149, 18, 17, 152, 5, 6, 7, 24, 19, 26, 159, 18, 13, 20, 15, 16, 13, 166, 5, 6, 7, 13, 9, 10, 11, 12, 13, 14, 15, 19, 18, 18, 20, 182, 18, 13, 20, 24, 15, 26, 5, 6, 7, 25, 9, 10, 11, 12, 13, 14, 15, 18, 0, 20, 25, 3, 4, 17, 19, 24, 8, 26, 5, 6, 7, 21, 9, 10, 11, 12, 13, 14, 15, 18, 18, 20, 20, 18, 18, 20, 20, 24, 13, 26, 5, 6, 7, 25, 9, 10, 11, 12, 13, 14, 15, 25, 5, 6, 7, 25, 5, 6, 7, 15, 13, 26, 15, 16, 13, 18, 15, 19, 15, 13, 25, 21, 17, 21, 25, 15, 19, 19, 17, 11, 21, 19, 15, 17, 85, 21, 23, 17, 5, 114, 139, 37, 131, 136, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, 37, -1, 37, 37]]) m4_define([b4_nterms_number], [[25]]) m4_define([b4_rline_max], [[442]]) m4_define([b4_dprec], [[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]) m4_define([b4_rline], [[ 0, 128, 128, 129, 130, 131, 135, 136, 137, 141, 145, 146, 150, 155, 164, 168, 175, 176, 180, 187, 194, 201, 211, 215, 219, 226, 230, 234, 239, 244, 258, 264, 272, 273, 274, 275, 276, 280, 281, 285, 291, 297, 303, 304, 305, 309, 310, 314, 319, 324, 330, 339, 346, 355, 363, 376, 377, 382, 386, 394, 395, 399, 400, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 425, 429, 430, 431, 432, 436, 437, 441, 442]]) m4_define([b4_prhs_min], [[0]]) m4_define([b4_debug], [[0]]) m4_define([b4_name], [[Parser]]) m4_define([b4_translate_max], [[26]]) m4_define([b4_r1_min], [[0]]) m4_define([b4_user_token_number_max], [[271]]) m4_define([b4_prefix], [[yy]]) m4_define([b4_pgoto_max], [[265]]) m4_define([b4_rules_number], [[89]]) m4_define([b4_output_prefix], [[../../../objects/x86.R1/tools/rc/parser]]) m4_define([b4_output_header_name], [[../../../objects/x86.R1/tools/rc/parser.hpp]]) m4_define([b4_ltype], [[yyltype]]) m4_define([b4_linef], [[#line %d %s ]]) m4_define([b4_r2_min], [[0]]) m4_define([b4_pact], [[ -86, 190, -86, -86, -17, -17, -86, 0, -86, -86, 11, 47, 61, 57, -86, 16, 30, -86, 24, 44, 23, 10, 22, 53, -86, -86, -86, -86, 94, 173, 81, 72, -86, -86, -86, -86, 83, 217, -86, -86, 112, 106, 116, 127, 73, -86, -86, 141, -86, -86, 146, -86, 123, 8, 160, 121, 27, 4, -86, 151, 74, -86, 148, 161, -86, -86, -86, 156, 167, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, 74, 178, 4, -86, 177, 77, 200, 208, 137, 45, 4, -86, -86, 99, -86, 182, 233, -86, 104, -86, 207, 212, -1, -86, 131, -86, -86, -86, -86, 173, -86, 150, -86, 226, 74, -86, -86, 230, -86, -86, -86, 154, 4, 235, 227, -86, 173, 173, 232, 238, -86, 137, 234, 237, 173, -86, 195, 239, 240, 74, 91, 171, -86, -86, 231, 243, 242, -86, -86, 173, 241, -86, 173, 229, -86, -86, -86, -86, -86, 173, /bin/m4: /boot/home/temp/share/bison/yacc.c: No such file or directory 250, 244, 249, 137, 248, -86, 173, -86, -86, 193, -86, 245, -86, 252, 194, 137, -86, -86, 246, 137, -86, 197, 173, 198, -86, -86, -86]]) m4_define([b4_dprec_min], [[0]]) m4_define([b4_defact_min], [[0]]) m4_define([b4_defines_flag], [[0]]) m4_define([b4_conflict_list_heads_max], [[0]]) m4_define([b4_merger_max], [[0]]) m4_define([b4_undef_token_number], [[2]]) m4_define([b4_stype_line], [[95]]) m4_define([b4_prhs_max], [[345]]) m4_define([b4_r1_max], [[51]]) m4_define([b4_toknum_min], [[0]]) m4_define([b4_conflicting_rules_min], [[0]]) m4_define([b4_r1], [[ 0, 27, 28, 28, 28, 28, 29, 29, 29, 30, 31, 31, 32, 32, 33, 33, 34, 34, 35, 35, 35, 35, 36, 36, 36, 37, 37, 37, 37, 37, 37, 37, 38, 38, 38, 38, 38, 39, 39, 40, 40, 40, 40, 40, 40, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43, 44, 44, 44, 44, 45, 45, 46, 46, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 48, 49, 49, 49, 49, 50, 50, 51, 51]]) m4_define([b4_r2], [[ 0, 2, 0, 2, 2, 2, 4, 5, 6, 1, 3, 1, 1, 3, 8, 7, 3, 1, 2, 4, 5, 7, 4, 5, 7, 0, 2, 3, 5, 3, 5, 3, 4, 3, 1, 3, 2, 3, 1, 7, 6, 4, 4, 3, 1, 3, 1, 3, 4, 4, 5, 5, 8, 9, 10, 4, 3, 2, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 1, 1, 2, 1, 1, 2, 1, 2]]) m4_define([b4_pre_prologue], [[#line 23 "../../../src/tools/rc/parser.y" //-------------------------------------------------------------------------- ---- #include <Message.h> #include <map> #include <string.h> #include <stdio.h> #include <stdlib.h> #include "rdef.h" #include "compile.h" #include "private.h" #define YYERROR_VERBOSE static void yyerror(char*); struct ident_compare_t // allows the maps to compare identifier names { bool operator () (char* s1, char* s2) const { return strcmp(s1, s2) < 0; } }; typedef std::map<char*, int32, ident_compare_t> sym_tab_t; typedef sym_tab_t::iterator sym_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<char*, type_t, ident_compare_t> 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(id_t, type_code, char*, list_t); static data_t make_data(size_t, type_t); static data_t make_bool(bool); static data_t make_int(uint64); static data_t make_float(double); static data_t import_data(char*); static data_t resize_data(data_t, size_t); 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 list_t make_field_list(field_t); static list_t concat_field_list(list_t, field_t); static list_t make_data_list(data_t); static list_t concat_data_list(list_t, data_t); static data_t concat_data(data_t, data_t); static data_t cast(type_t, data_t); static void add_resource(id_t, type_code, data_t); //-------------------------------------------------------------------------- ---- ]]) m4_define([b4_check_min], [[-1]]) m4_define([b4_states_number], [[187]]) m4_define([b4_r2_max], [[10]]) m4_define([b4_dprec_max], [[0]]) m4_define([b4_defgoto], [[ -1, 1, 6, 7, 44, 45, 8, 111, 112, 9, 11, 32, 93, 33, 98, 99, 34, 35, 104, 105, 61, 37, 100, 38, 39]]) m4_define([b4_defact_max], [[89]]) m4_define([b4_stos], [[ 0, 28, 0, 3, 4, 8, 29, 30, 33, 36, 24, 37, 37, 17, 11, 13, 15, 25, 26, 50, 5, 6, 7, 9, 10, 12, 13, 14, 15, 16, 24, 26, 38, 40, 43, 44, 47, 48, 50, 51, 15, 16, 15, 18, 31, 32, 25, 20, 25, 11, 20, 25, 15, 24, 9, 17, 17, 24, 13, 17, 24, 47, 47, 5, 6, 7, 15, 16, 49, 12, 19, 10, 13, 14, 38, 40, 43, 44, 50, 51, 17, 15, 21, 19, 18, 20, 13, 13, 17, 13, 20, 13, 18, 39, 47, 13, 16, 18, 41, 42, 49, 50, 15, 18, 45, 46, 47, 19, 15, 25, 25, 34, 35, 49, 17, 50, 19, 18, 32, 25, 25, 41, 20, 25, 50, 18, 20, 21, 13, 49, 18, 20, 13, 25, 21, 18, 20, 47, 18, 20, 15, 34, 19, 18, 50, 15, 25, 47, 47, 21, 13, 42, 21, 17, 47, 46, 19, 19, 35, 21, 22, 18, 25, 17, 15, 47, 21, 47, 18, 41, 47, 11, 19, 15, 41, 17, 47, 18, 23, 17, 18, 41, 21, 41, 18, 47, 18]]) m4_define([b4_final_state_number], [[2]]) m4_define([b4_defgoto_min], [[-1]]) m4_define([b4_maxdepth], [[10000]]) m4_define([b4_locations_flag], [[0]]) m4_define([b4_rhs_min], [[-1]]) m4_define([b4_pact_min], [[-86]]) m4_define([b4_conflicting_rules], [[ 0]]) m4_wrap([m4_divert_pop(0)]) m4_divert_push(0)C++ ../../../objects/x86.R1/tools/rc/parser.o gcc: ../../../objects/x86.R1/tools/rc/parser.cpp: No such file or directory gcc: No input files gcc -c "../../../objects/x86.R1/tools/rc/parser.cpp" -nostdinc -Wall - Wno-multichar -Wmissing-prototypes -Wno-ctor-dtor-privacy -Woverloaded- virtual -Wpointer-arith -Wcast-align -Wsign-compare -O2 - I../../../src/tools/rc -I../../../objects/x86.R1/tools/rc - I../../../headers -I../../../headers/posix -I../../../headers/os - I../../../headers/os/add-ons -I../../../headers/os/add-ons/file_system - I../../../headers/os/add-ons/graphics -I../../../headers/os/add- ons/input_server -I../../../headers/os/add-ons/screen_saver - I../../../headers/os/add-ons/tracker -I../../../headers/os/app - I../../../headers/os/device -I../../../headers/os/drivers - I../../../headers/os/game -I../../../headers/os/interface - I../../../headers/os/kernel -I../../../headers/os/media - I../../../headers/os/mail -I../../../headers/os/midi - I../../../headers/os/midi2 -I../../../headers/os/net - I../../../headers/os/storage -I../../../headers/os/support - I../../../headers/os/translation -I/boot/develop/headers/posix - I/boot/develop/headers/cpp -I/boot/develop/tools/gnupro/lib/gcc-lib/i586- beos/2.9-beos-991026/include -o "../../../objects/x86.R1/tools/rc/parser.o" ; ...failed C++ ../../../objects/x86.R1/tools/rc/parser.o ... C++ ../../../objects/x86.R1/tools/rc/rdef.o ...skipped librdef.so for lack of <src!tools!rc>compile.o... ...skipped <boot!home!config!lib>librdef.so for lack of librdef.so... C++ ../../../objects/x86.R1/tools/rc/rc.o MkDir1 ../../../distro/x86.R1/beos/bin ...skipped rc for lack of <boot!home!config!lib>librdef.so... ...failed updating 3 target(s)... ...skipped 4 target(s)... ...updated 6 target(s)... $