| | 193 | return; |
| | 194 | } |
| | 195 | a = b; |
| | 196 | } |
| | 197 | else if( a->type == OT_TUPLE ) |
| | 198 | { |
| | 199 | if( b->type == OT_TUPLE ) |
| | 200 | { |
| | 201 | int tmp, i; |
| | 202 | OValue* res; |
| | 203 | |
| | 204 | res = a; |
| | 205 | |
| | 206 | res->argc = a->argc > b->argc ? a->argc : b->argc; |
| | 207 | for( i = 0; i < res->argc; i++ ) |
| | 208 | { |
| | 209 | tmp = a->tuple[i] - b->tuple[i]; |
| | 210 | res->tuple[i] = tmp < 0 ? 0 : tmp; |
| | 211 | } |
| | 212 | return; |
| | 213 | } |
| | 214 | else if( b->type == OT_INTEGER ) |
| | 215 | { |
| | 216 | int tmp, i; |
| | 217 | OValue *res; |
| | 218 | |
| | 219 | res = a; |
| | 220 | |
| | 221 | for( i = 0; i < res->argc; i++ ) |
| | 222 | { |
| | 223 | tmp = a->tuple[i] - b->integer; |
| | 224 | res->tuple[i] = tmp < 0 ? 0 : tmp > 255 ? 255 : tmp; |
| | 225 | } |
| | 226 | return; |
| | 227 | } |
| | 228 | else if( b->type == OT_DECIMAL) |
| | 229 | { |
| | 230 | int tmp, i; |
| | 231 | OValue *res; |
| | 232 | |
| | 233 | res = a; |
| | 234 | |
| | 235 | for( i = 0; i < res->argc; i++ ) |
| | 236 | { |
| | 237 | tmp = a->tuple[i] - (int) b->num.decimal; |
| | 238 | res->tuple[i] = tmp < 0 ? 0 : tmp > 255 ? 255 : tmp; |
| | 239 | } |
| | 326 | return; |
| | 327 | } |
| | 328 | else if( b->type == OT_TUPLE ) |
| | 329 | { |
| | 330 | int tmp, i; |
| | 331 | OValue *res; |
| | 332 | |
| | 333 | res = b; |
| | 334 | |
| | 335 | for( i = 0; i < res->argc; i++ ) |
| | 336 | { |
| | 337 | tmp = a->num.decimal * b->tuple[i]; |
| | 338 | res->tuple[i] = tmp < 0 ? 0 : tmp > 255 ? 255 : tmp; |
| | 339 | } |
| | 340 | |
| | 341 | orResultCopy( *res ); |
| | 342 | return; |
| | 343 | } |
| | 344 | a = b; |
| | 345 | } |
| | 346 | else if( a->type == OT_TUPLE ) |
| | 347 | { |
| | 348 | if( b->type == OT_TUPLE ) |
| | 349 | { |
| | 350 | int tmp, i; |
| | 351 | OValue* res; |
| | 352 | |
| | 353 | res = a; |
| | 354 | |
| | 355 | res->argc = a->argc > b->argc ? a->argc : b->argc; |
| | 356 | for( i = 0; i < res->argc; i++ ) |
| | 357 | { |
| | 358 | tmp = a->tuple[i] * b->tuple[i]; |
| | 359 | res->tuple[i] = tmp > 255 ? 255 : tmp; |
| | 360 | } |
| | 361 | return; |
| | 362 | } |
| | 363 | else if( b->type == OT_INTEGER ) |
| | 364 | { |
| | 365 | int tmp, i; |
| | 366 | OValue *res; |
| | 367 | |
| | 368 | res = a; |
| | 369 | |
| | 370 | for( i = 0; i < res->argc; i++ ) |
| | 371 | { |
| | 372 | tmp = a->tuple[i] * b->integer; |
| | 373 | res->tuple[i] = tmp < 0 ? 0 : tmp > 255 ? 255 : tmp; |
| | 374 | } |
| | 375 | return; |
| | 376 | } |
| | 377 | else if( b->type == OT_DECIMAL) |
| | 378 | { |
| | 379 | int tmp, i; |
| | 380 | OValue *res; |
| | 381 | |
| | 382 | res = a; |
| | 383 | |
| | 384 | for( i = 0; i < res->argc; i++ ) |
| | 385 | { |
| | 386 | tmp = a->tuple[i] * b->num.decimal; |
| | 387 | res->tuple[i] = tmp < 0 ? 0 : tmp > 255 ? 255 : tmp; |
| | 388 | } |
| | 432 | return; |
| | 433 | } |
| | 434 | a = b; |
| | 435 | } |
| | 436 | else if( a->type == OT_TUPLE ) |
| | 437 | { |
| | 438 | if( b->type == OT_TUPLE ) |
| | 439 | { |
| | 440 | int tmp, i; |
| | 441 | OValue* res; |
| | 442 | |
| | 443 | res = a; |
| | 444 | |
| | 445 | res->argc = a->argc > b->argc ? a->argc : b->argc; |
| | 446 | for( i = 0; i < res->argc; i++ ) |
| | 447 | { |
| | 448 | if ( b->tuple[i] == 0) |
| | 449 | goto div0; |
| | 450 | tmp = a->tuple[i] / b->tuple[i]; |
| | 451 | res->tuple[i] = tmp > 255 ? 255 : tmp; |
| | 452 | } |
| | 453 | return; |
| | 454 | } |
| | 455 | else if( b->type == OT_INTEGER ) |
| | 456 | { |
| | 457 | int tmp, i; |
| | 458 | OValue *res; |
| | 459 | |
| | 460 | res = a; |
| | 461 | |
| | 462 | for( i = 0; i < res->argc; i++ ) |
| | 463 | { |
| | 464 | if (b->integer == 0) |
| | 465 | goto div0; |
| | 466 | tmp = a->tuple[i] / b->integer; |
| | 467 | res->tuple[i] = tmp < 0 ? 0 : tmp > 255 ? 255 : tmp; |
| | 468 | } |
| | 469 | return; |
| | 470 | } |
| | 471 | else if( b->type == OT_DECIMAL) |
| | 472 | { |
| | 473 | int tmp, i; |
| | 474 | OValue *res; |
| | 475 | |
| | 476 | res = a; |
| | 477 | |
| | 478 | for( i = 0; i < res->argc; i++ ) |
| | 479 | { |
| | 480 | if (b->num.decimal == 0) |
| | 481 | goto div0; |
| | 482 | tmp = a->tuple[i] / b->num.decimal; |
| | 483 | res->tuple[i] = tmp < 0 ? 0 : tmp > 255 ? 255 : tmp; |
| | 484 | } |