3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
|
}
static Uint32 broadcast(Uint32 from,int c,Uint16 msg,Value arg1,Value arg2,Value arg3,Uint8 s) {
Uint32 t=0;
Uint32 n;
Object*o;
Value v;
if(s==2) t=0xFFFFFFFFULL;
if(lastobj==VOIDLINK) return t;
n=lastobj;
if(c && (classes[c]->cflags&CF_GROUP)) Throw("Broadcast for abstract classes is not implemented yet");
while(o=objects[n]) {
if(!c || o->class==c) {
v=send_message(from,n,msg,arg1,arg2,arg3);
switch(s) {
|
|
|
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
|
}
static Uint32 broadcast(Uint32 from,int c,Uint16 msg,Value arg1,Value arg2,Value arg3,Uint8 s) {
Uint32 t=0;
Uint32 n;
Object*o;
Value v;
if(s==2) t=1;
if(lastobj==VOIDLINK) return t;
n=lastobj;
if(c && (classes[c]->cflags&CF_GROUP)) Throw("Broadcast for abstract classes is not implemented yet");
while(o=objects[n]) {
if(!c || o->class==c) {
v=send_message(from,n,msg,arg1,arg2,arg3);
switch(s) {
|
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
|
default:
if(v.t<=TY_MAXTYPE) Throw("Invalid return type for BroadcastSum");
t++;
}
break;
case 2:
switch(v.t) {
case TY_NUMBER: if(!v.u) return 0;
case TY_SOUND: case TY_USOUND: Throw("Invalid return type for BroadcastAnd");
}
break;
case 3:
StackReq(0,1);
if(v.t!=TY_MARK) Push(v);
break;
|
|
|
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
|
default:
if(v.t<=TY_MAXTYPE) Throw("Invalid return type for BroadcastSum");
t++;
}
break;
case 2:
switch(v.t) {
case TY_NUMBER: if(!v.u) return 0; break;
case TY_SOUND: case TY_USOUND: Throw("Invalid return type for BroadcastAnd");
}
break;
case 3:
StackReq(0,1);
if(v.t!=TY_MARK) Push(v);
break;
|