///////////////////////////////////////////////////////////////////////////
| 487 | |
| 488 | //////////////////////////////////////////////////////////////////////////////// |
| 489 | bool Variant::operator>(const Variant& other) const { |
| 490 | Variant left(*this); |
| 491 | Variant right(other); |
| 492 | |
| 493 | if (left._type == type_string) Lexer::dequote(left._string); |
| 494 | |
| 495 | if (right._type == type_string) Lexer::dequote(right._string); |
| 496 | |
| 497 | switch (left._type) { |
| 498 | case type_boolean: |
| 499 | switch (right._type) { |
| 500 | case type_boolean: |
| 501 | return !left._bool && right._bool; |
| 502 | case type_integer: |
| 503 | left.cast(type_integer); |
| 504 | return left._integer > right._integer; |
| 505 | case type_real: |
| 506 | left.cast(type_real); |
| 507 | return left._real > right._real; |
| 508 | case type_string: |
| 509 | left.cast(type_string); |
| 510 | return left._string > right._string; |
| 511 | case type_date: |
| 512 | left.cast(type_date); |
| 513 | return left._date > right._date; |
| 514 | case type_duration: |
| 515 | left.cast(type_duration); |
| 516 | return left._duration > right._duration; |
| 517 | } |
| 518 | break; |
| 519 | |
| 520 | case type_integer: |
| 521 | switch (right._type) { |
| 522 | case type_boolean: |
| 523 | right.cast(type_integer); |
| 524 | return left._integer > right._integer; |
| 525 | case type_integer: |
| 526 | return left._integer > right._integer; |
| 527 | case type_real: |
| 528 | left.cast(type_real); |
| 529 | return left._real > right._real; |
| 530 | case type_string: |
| 531 | left.cast(type_string); |
| 532 | return left._string > right._string; |
| 533 | case type_date: |
| 534 | left.cast(type_date); |
| 535 | return left._date > right._date; |
| 536 | case type_duration: |
| 537 | left.cast(type_duration); |
| 538 | return left._duration > right._duration; |
| 539 | } |
| 540 | break; |
| 541 | |
| 542 | case type_real: |
| 543 | switch (right._type) { |
| 544 | case type_boolean: |
| 545 | right.cast(type_real); |
| 546 | return left._real > right._real; |