@@ -1586,7 +1586,7 @@ Cppyy::TCppMethod_t Cppyy::GetMethodTemplate(
1586
1586
std::vector<Cppyy::TCppMethod_t> unresolved_candidate_methods;
1587
1587
Cpp::GetClassTemplatedMethods (pureName, scope,
1588
1588
unresolved_candidate_methods);
1589
- if (unresolved_candidate_methods.empty ()) {
1589
+ if (unresolved_candidate_methods.empty () && name. find ( " operator " ) == 0 ) {
1590
1590
// try operators
1591
1591
Cppyy::GetClassOperators (scope, pureName, unresolved_candidate_methods);
1592
1592
}
@@ -1636,38 +1636,8 @@ static inline std::string type_remap(const std::string& n1,
1636
1636
void Cppyy::GetClassOperators (Cppyy::TCppScope_t klass,
1637
1637
const std::string& opname,
1638
1638
std::vector<TCppScope_t>& operators) {
1639
- if (opname == " operator+" )
1640
- Cpp::GetOperator (klass, Cpp::Operator::OP_Plus, operators);
1641
- else if (opname == " operator-" )
1642
- Cpp::GetOperator (klass, Cpp::Operator::OP_Minus, operators);
1643
- else if (opname == " operator*" )
1644
- Cpp::GetOperator (klass, Cpp::Operator::OP_Star, operators);
1645
- else if (opname == " operator/" )
1646
- Cpp::GetOperator (klass, Cpp::Operator::OP_Slash, operators);
1647
- else if (opname == " operator<" )
1648
- Cpp::GetOperator (klass, Cpp::Operator::OP_Less, operators);
1649
- else if (opname == " operator<=" )
1650
- Cpp::GetOperator (klass, Cpp::Operator::OP_LessEqual, operators);
1651
- else if (opname == " operator>" )
1652
- Cpp::GetOperator (klass, Cpp::Operator::OP_Greater, operators);
1653
- else if (opname == " operator>=" )
1654
- Cpp::GetOperator (klass, Cpp::Operator::OP_GreaterEqual, operators);
1655
- else if (opname == " operator==" )
1656
- Cpp::GetOperator (klass, Cpp::Operator::OP_EqualEqual, operators);
1657
- else if (opname == " operator!=" )
1658
- Cpp::GetOperator (klass, Cpp::Operator::OP_ExclaimEqual, operators);
1659
- else if (opname == " operator<<" )
1660
- Cpp::GetOperator (klass, Cpp::Operator::OP_LessLess, operators);
1661
- else if (opname == " operator>>" )
1662
- Cpp::GetOperator (klass, Cpp::Operator::OP_GreaterGreater, operators);
1663
- else if (opname == " operator&" )
1664
- Cpp::GetOperator (klass, Cpp::Operator::OP_Amp, operators);
1665
- else if (opname == " operator|" )
1666
- Cpp::GetOperator (klass, Cpp::Operator::OP_Pipe, operators);
1667
- else if (opname == " operator()" )
1668
- Cpp::GetOperator (klass, Cpp::Operator::OP_Call, operators);
1669
- else if (opname == " operator[]" )
1670
- Cpp::GetOperator (klass, Cpp::Operator::OP_Subscript, operators);
1639
+ std::string op = opname.substr (8 );
1640
+ Cpp::GetOperator (klass, Cpp::GetOperatorFromSpelling (op), operators);
1671
1641
}
1672
1642
1673
1643
Cppyy::TCppMethod_t Cppyy::GetGlobalOperator (
@@ -1682,39 +1652,7 @@ Cppyy::TCppMethod_t Cppyy::GetGlobalOperator(
1682
1652
}
1683
1653
1684
1654
std::vector<TCppScope_t> overloads;
1685
- if (opname == " +" )
1686
- Cpp::GetOperator (scope, Cpp::Operator::OP_Plus, overloads);
1687
- else if (opname == " -" )
1688
- Cpp::GetOperator (scope, Cpp::Operator::OP_Minus, overloads);
1689
- else if (opname == " *" )
1690
- Cpp::GetOperator (scope, Cpp::Operator::OP_Star, overloads);
1691
- else if (opname == " /" )
1692
- Cpp::GetOperator (scope, Cpp::Operator::OP_Slash, overloads);
1693
- else if (opname == " <" )
1694
- Cpp::GetOperator (scope, Cpp::Operator::OP_Less, overloads);
1695
- else if (opname == " <=" )
1696
- Cpp::GetOperator (scope, Cpp::Operator::OP_LessEqual, overloads);
1697
- else if (opname == " >" )
1698
- Cpp::GetOperator (scope, Cpp::Operator::OP_Greater, overloads);
1699
- else if (opname == " >=" )
1700
- Cpp::GetOperator (scope, Cpp::Operator::OP_GreaterEqual, overloads);
1701
- else if (opname == " ==" )
1702
- Cpp::GetOperator (scope, Cpp::Operator::OP_EqualEqual, overloads);
1703
- else if (opname == " !=" )
1704
- Cpp::GetOperator (scope, Cpp::Operator::OP_ExclaimEqual, overloads);
1705
- else if (opname == " <<" )
1706
- Cpp::GetOperator (scope, Cpp::Operator::OP_LessLess, overloads);
1707
- else if (opname == " >>" )
1708
- Cpp::GetOperator (scope, Cpp::Operator::OP_GreaterGreater, overloads);
1709
- else if (opname == " &" )
1710
- Cpp::GetOperator (scope, Cpp::Operator::OP_Amp, overloads);
1711
- else if (opname == " |" )
1712
- Cpp::GetOperator (scope, Cpp::Operator::OP_Pipe, overloads);
1713
- else if (opname == " ()" )
1714
- Cpp::GetOperator (scope, Cpp::Operator::OP_Call, overloads);
1715
- else if (opname == " []" )
1716
- Cpp::GetOperator (scope, Cpp::Operator::OP_Subscript, overloads);
1717
-
1655
+ Cpp::GetOperator (scope, Cpp::GetOperatorFromSpelling (opname), overloads);
1718
1656
1719
1657
std::vector<Cppyy::TCppMethod_t> unresolved_candidate_methods;
1720
1658
for (auto overload: overloads) {
0 commit comments