///////////////////////////////////////////////////////////////////////////
| 339 | |
| 340 | //////////////////////////////////////////////////////////////////////////////// |
| 341 | bool Variant::operator<=(const Variant& other) const { |
| 342 | Variant left(*this); |
| 343 | Variant right(other); |
| 344 | |
| 345 | if (left._type == type_string) Lexer::dequote(left._string); |
| 346 | |
| 347 | if (right._type == type_string) Lexer::dequote(right._string); |
| 348 | |
| 349 | switch (left._type) { |
| 350 | case type_boolean: |
| 351 | switch (right._type) { |
| 352 | case type_boolean: |
| 353 | return !left._bool || right._bool; |
| 354 | case type_integer: |
| 355 | left.cast(type_integer); |
| 356 | return left._integer <= right._integer; |
| 357 | case type_real: |
| 358 | left.cast(type_real); |
| 359 | return left._real <= right._real; |
| 360 | case type_string: |
| 361 | left.cast(type_string); |
| 362 | return left._string <= right._string; |
| 363 | case type_date: |
| 364 | left.cast(type_date); |
| 365 | return left._date <= right._date; |
| 366 | case type_duration: |
| 367 | left.cast(type_duration); |
| 368 | return left._duration <= right._duration; |
| 369 | } |
| 370 | break; |
| 371 | |
| 372 | case type_integer: |
| 373 | switch (right._type) { |
| 374 | case type_boolean: |
| 375 | right.cast(type_integer); |
| 376 | return left._integer <= right._integer; |
| 377 | case type_integer: |
| 378 | return left._integer <= right._integer; |
| 379 | case type_real: |
| 380 | left.cast(type_real); |
| 381 | return left._real <= right._real; |
| 382 | case type_string: |
| 383 | left.cast(type_string); |
| 384 | return left._string <= right._string; |
| 385 | case type_date: |
| 386 | left.cast(type_date); |
| 387 | return left._date <= right._date; |
| 388 | case type_duration: |
| 389 | left.cast(type_duration); |
| 390 | return left._duration <= right._duration; |
| 391 | } |
| 392 | break; |
| 393 | |
| 394 | case type_real: |
| 395 | switch (right._type) { |
| 396 | case type_boolean: |
| 397 | right.cast(type_real); |
| 398 | return left._real <= right._real; |