[openbeos-midi] Re: about RC
- From: Jerome Leveque <jerl1@xxxxxxxxxxxxxxxx>
- To: openbeos-midi@xxxxxxxxxxxxx
- Date: Sun, 14 Sep 2003 16:03:51 +0200
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)...
$
- References:
- [openbeos-midi] Re: about RC
- From: Marcus Overhagen
- [openbeos-midi] Re: about RC
- From: Tyler Dauwalder
Other related posts:
- » [openbeos-midi] about RC
- » [openbeos-midi] Re: about RC
- » [openbeos-midi] Re: about RC
- » [openbeos-midi] Re: about RC
- » [openbeos-midi] Re: about RC
- » [openbeos-midi] Re: about RC
- [openbeos-midi] Re: about RC
- From: Marcus Overhagen
- [openbeos-midi] Re: about RC
- From: Tyler Dauwalder