| 619 | } |
| 620 | |
| 621 | const std::string LDAPExpr::ToString() const |
| 622 | { |
| 623 | std::string res; |
| 624 | res.append("("); |
| 625 | if ((d->m_operator & SIMPLE) != 0) |
| 626 | { |
| 627 | res.append(d->m_attrName); |
| 628 | switch (d->m_operator) |
| 629 | { |
| 630 | case EQ: |
| 631 | res.append("="); |
| 632 | break; |
| 633 | case LE: |
| 634 | res.append("<="); |
| 635 | break; |
| 636 | case GE: |
| 637 | res.append(">="); |
| 638 | break; |
| 639 | case APPROX: |
| 640 | res.append("~="); |
| 641 | break; |
| 642 | } |
| 643 | |
| 644 | for (std::size_t i = 0; i < d->m_attrValue.length(); i++) |
| 645 | { |
| 646 | Byte c = d->m_attrValue.at(i); |
| 647 | if (c == '(' || c == ')' || c == '*' || c == '\\') |
| 648 | { |
| 649 | res.append(1, '\\'); |
| 650 | } |
| 651 | else if (c == LDAPExprConstants::WILDCARD()) |
| 652 | { |
| 653 | c = '*'; |
| 654 | } |
| 655 | res.append(1, c); |
| 656 | } |
| 657 | } |
| 658 | else |
| 659 | { |
| 660 | switch (d->m_operator) |
| 661 | { |
| 662 | case AND: |
| 663 | res.append("&"); |
| 664 | break; |
| 665 | case OR: |
| 666 | res.append("|"); |
| 667 | break; |
| 668 | case NOT: |
| 669 | res.append("!"); |
| 670 | break; |
| 671 | } |
| 672 | for (std::size_t i = 0; i < d->m_args.size(); i++) |
| 673 | { |
| 674 | res.append(d->m_args[i].ToString()); |
| 675 | } |
| 676 | } |
| 677 | res.append(")"); |
| 678 | return res; |