223        CHECK((lhs == rhs) == lhsEqRhs);
 
  224        CHECK((lhs != rhs) != lhsEqRhs);
 
  225        CHECK((lhs < rhs) == (!(lhsEqRhs || !lhsLtRhs)));
 
  226        CHECK((lhs <= rhs) == (lhsEqRhs || lhsLtRhs));
 
  227        CHECK((lhs >= rhs) == (lhsEqRhs || !lhsLtRhs));
 
  228        CHECK((lhs > rhs) == (!(lhsEqRhs || lhsLtRhs)));
 
  257#pragma push_macro("DO_COMPARE") 
  259#define DO_COMPARE(lhs, rhs, eq, lt) doCompare(lhs, rhs, eq, lt, __LINE__) 
  261    DO_COMPARE(null0, intNeg1, 
false, 
true);
 
  262    DO_COMPARE(null0, int0, 
false, 
true);
 
  263    DO_COMPARE(null0, intPos1, 
false, 
true);
 
  264    DO_COMPARE(null0, uint0, 
false, 
true);
 
  265    DO_COMPARE(null0, uint1, 
false, 
true);
 
  266    DO_COMPARE(null0, realNeg1, 
false, 
true);
 
  267    DO_COMPARE(null0, real0, 
false, 
true);
 
  268    DO_COMPARE(null0, realPos1, 
false, 
true);
 
  269    DO_COMPARE(null0, str0, 
false, 
true);
 
  270    DO_COMPARE(null0, str1, 
false, 
true);
 
  271    DO_COMPARE(null0, boolF, 
false, 
true);
 
  272    DO_COMPARE(null0, boolT, 
false, 
true);
 
  273    DO_COMPARE(null0, array0, 
false, 
true);
 
  274    DO_COMPARE(null0, array1, 
false, 
true);
 
  275    DO_COMPARE(null0, obj0, 
false, 
true);
 
  276    DO_COMPARE(null0, obj1, 
false, 
true);
 
  278    DO_COMPARE(intNeg1, null0, 
false, 
false);
 
  279    DO_COMPARE(intNeg1, intNeg1, 
true, 
false);
 
  280    DO_COMPARE(intNeg1, int0, 
false, 
true);
 
  281    DO_COMPARE(intNeg1, intPos1, 
false, 
true);
 
  282    DO_COMPARE(intNeg1, uint0, 
false, 
true);
 
  283    DO_COMPARE(intNeg1, uint1, 
false, 
true);
 
  284    DO_COMPARE(intNeg1, realNeg1, 
false, 
true);
 
  285    DO_COMPARE(intNeg1, real0, 
false, 
true);
 
  286    DO_COMPARE(intNeg1, realPos1, 
false, 
true);
 
  287    DO_COMPARE(intNeg1, str0, 
false, 
true);
 
  288    DO_COMPARE(intNeg1, str1, 
false, 
true);
 
  289    DO_COMPARE(intNeg1, boolF, 
false, 
true);
 
  290    DO_COMPARE(intNeg1, boolT, 
false, 
true);
 
  291    DO_COMPARE(intNeg1, array0, 
false, 
true);
 
  292    DO_COMPARE(intNeg1, array1, 
false, 
true);
 
  293    DO_COMPARE(intNeg1, obj0, 
false, 
true);
 
  294    DO_COMPARE(intNeg1, obj1, 
false, 
true);
 
  296    DO_COMPARE(int0, null0, 
false, 
false);
 
  297    DO_COMPARE(int0, intNeg1, 
false, 
false);
 
  298    DO_COMPARE(int0, int0, 
true, 
false);
 
  299    DO_COMPARE(int0, intPos1, 
false, 
true);
 
  300    DO_COMPARE(int0, uint0, 
true, 
false);
 
  301    DO_COMPARE(int0, uint1, 
false, 
true);
 
  302    DO_COMPARE(int0, realNeg1, 
false, 
true);
 
  303    DO_COMPARE(int0, real0, 
false, 
true);
 
  304    DO_COMPARE(int0, realPos1, 
false, 
true);
 
  305    DO_COMPARE(int0, str0, 
false, 
true);
 
  306    DO_COMPARE(int0, str1, 
false, 
true);
 
  307    DO_COMPARE(int0, boolF, 
false, 
true);
 
  308    DO_COMPARE(int0, boolT, 
false, 
true);
 
  309    DO_COMPARE(int0, array0, 
false, 
true);
 
  310    DO_COMPARE(int0, array1, 
false, 
true);
 
  311    DO_COMPARE(int0, obj0, 
false, 
true);
 
  312    DO_COMPARE(int0, obj1, 
false, 
true);
 
  314    DO_COMPARE(intPos1, null0, 
false, 
false);
 
  315    DO_COMPARE(intPos1, intNeg1, 
false, 
false);
 
  316    DO_COMPARE(intPos1, int0, 
false, 
false);
 
  317    DO_COMPARE(intPos1, intPos1, 
true, 
false);
 
  318    DO_COMPARE(intPos1, uint0, 
false, 
false);
 
  319    DO_COMPARE(intPos1, uint1, 
true, 
false);
 
  320    DO_COMPARE(intPos1, realNeg1, 
false, 
true);
 
  321    DO_COMPARE(intPos1, real0, 
false, 
true);
 
  322    DO_COMPARE(intPos1, realPos1, 
false, 
true);
 
  323    DO_COMPARE(intPos1, str0, 
false, 
true);
 
  324    DO_COMPARE(intPos1, str1, 
false, 
true);
 
  325    DO_COMPARE(intPos1, boolF, 
false, 
true);
 
  326    DO_COMPARE(intPos1, boolT, 
false, 
true);
 
  327    DO_COMPARE(intPos1, array0, 
false, 
true);
 
  328    DO_COMPARE(intPos1, array1, 
false, 
true);
 
  329    DO_COMPARE(intPos1, obj0, 
false, 
true);
 
  330    DO_COMPARE(intPos1, obj1, 
false, 
true);
 
  332    DO_COMPARE(uint0, null0, 
false, 
false);
 
  333    DO_COMPARE(uint0, intNeg1, 
false, 
false);
 
  334    DO_COMPARE(uint0, int0, 
true, 
false);
 
  335    DO_COMPARE(uint0, intPos1, 
false, 
true);
 
  336    DO_COMPARE(uint0, uint0, 
true, 
false);
 
  337    DO_COMPARE(uint0, uint1, 
false, 
true);
 
  338    DO_COMPARE(uint0, realNeg1, 
false, 
true);
 
  339    DO_COMPARE(uint0, real0, 
false, 
true);
 
  340    DO_COMPARE(uint0, realPos1, 
false, 
true);
 
  341    DO_COMPARE(uint0, str0, 
false, 
true);
 
  342    DO_COMPARE(uint0, str1, 
false, 
true);
 
  343    DO_COMPARE(uint0, boolF, 
false, 
true);
 
  344    DO_COMPARE(uint0, boolT, 
false, 
true);
 
  345    DO_COMPARE(uint0, array0, 
false, 
true);
 
  346    DO_COMPARE(uint0, array1, 
false, 
true);
 
  347    DO_COMPARE(uint0, obj0, 
false, 
true);
 
  348    DO_COMPARE(uint0, obj1, 
false, 
true);
 
  350    DO_COMPARE(uint1, null0, 
false, 
false);
 
  351    DO_COMPARE(uint1, intNeg1, 
false, 
false);
 
  352    DO_COMPARE(uint1, int0, 
false, 
false);
 
  353    DO_COMPARE(uint1, intPos1, 
true, 
false);
 
  354    DO_COMPARE(uint1, uint0, 
false, 
false);
 
  355    DO_COMPARE(uint1, uint1, 
true, 
false);
 
  356    DO_COMPARE(uint1, realNeg1, 
false, 
true);
 
  357    DO_COMPARE(uint1, real0, 
false, 
true);
 
  358    DO_COMPARE(uint1, realPos1, 
false, 
true);
 
  359    DO_COMPARE(uint1, str0, 
false, 
true);
 
  360    DO_COMPARE(uint1, str1, 
false, 
true);
 
  361    DO_COMPARE(uint1, boolF, 
false, 
true);
 
  362    DO_COMPARE(uint1, boolT, 
false, 
true);
 
  363    DO_COMPARE(uint1, array0, 
false, 
true);
 
  364    DO_COMPARE(uint1, array1, 
false, 
true);
 
  365    DO_COMPARE(uint1, obj0, 
false, 
true);
 
  366    DO_COMPARE(uint1, obj1, 
false, 
true);
 
  368    DO_COMPARE(realNeg1, null0, 
false, 
false);
 
  369    DO_COMPARE(realNeg1, intNeg1, 
false, 
false);
 
  370    DO_COMPARE(realNeg1, int0, 
false, 
false);
 
  371    DO_COMPARE(realNeg1, intPos1, 
false, 
false);
 
  372    DO_COMPARE(realNeg1, uint0, 
false, 
false);
 
  373    DO_COMPARE(realNeg1, uint1, 
false, 
false);
 
  374    DO_COMPARE(realNeg1, realNeg1, 
true, 
false);
 
  375    DO_COMPARE(realNeg1, real0, 
false, 
true);
 
  376    DO_COMPARE(realNeg1, realPos1, 
false, 
true);
 
  377    DO_COMPARE(realNeg1, str0, 
false, 
true);
 
  378    DO_COMPARE(realNeg1, str1, 
false, 
true);
 
  379    DO_COMPARE(realNeg1, boolF, 
false, 
true);
 
  380    DO_COMPARE(realNeg1, boolT, 
false, 
true);
 
  381    DO_COMPARE(realNeg1, array0, 
false, 
true);
 
  382    DO_COMPARE(realNeg1, array1, 
false, 
true);
 
  383    DO_COMPARE(realNeg1, obj0, 
false, 
true);
 
  384    DO_COMPARE(realNeg1, obj1, 
false, 
true);
 
  386    DO_COMPARE(real0, null0, 
false, 
false);
 
  387    DO_COMPARE(real0, intNeg1, 
false, 
false);
 
  388    DO_COMPARE(real0, int0, 
false, 
false);
 
  389    DO_COMPARE(real0, intPos1, 
false, 
false);
 
  390    DO_COMPARE(real0, uint0, 
false, 
false);
 
  391    DO_COMPARE(real0, uint1, 
false, 
false);
 
  392    DO_COMPARE(real0, realNeg1, 
false, 
false);
 
  393    DO_COMPARE(real0, real0, 
true, 
false);
 
  394    DO_COMPARE(real0, realPos1, 
false, 
true);
 
  395    DO_COMPARE(real0, str0, 
false, 
true);
 
  396    DO_COMPARE(real0, str1, 
false, 
true);
 
  397    DO_COMPARE(real0, boolF, 
false, 
true);
 
  398    DO_COMPARE(real0, boolT, 
false, 
true);
 
  399    DO_COMPARE(real0, array0, 
false, 
true);
 
  400    DO_COMPARE(real0, array1, 
false, 
true);
 
  401    DO_COMPARE(real0, obj0, 
false, 
true);
 
  402    DO_COMPARE(real0, obj1, 
false, 
true);
 
  404    DO_COMPARE(realPos1, null0, 
false, 
false);
 
  405    DO_COMPARE(realPos1, intNeg1, 
false, 
false);
 
  406    DO_COMPARE(realPos1, int0, 
false, 
false);
 
  407    DO_COMPARE(realPos1, intPos1, 
false, 
false);
 
  408    DO_COMPARE(realPos1, uint0, 
false, 
false);
 
  409    DO_COMPARE(realPos1, uint1, 
false, 
false);
 
  410    DO_COMPARE(realPos1, realNeg1, 
false, 
false);
 
  411    DO_COMPARE(realPos1, real0, 
false, 
false);
 
  412    DO_COMPARE(realPos1, realPos1, 
true, 
false);
 
  413    DO_COMPARE(realPos1, str0, 
false, 
true);
 
  414    DO_COMPARE(realPos1, str1, 
false, 
true);
 
  415    DO_COMPARE(realPos1, boolF, 
false, 
true);
 
  416    DO_COMPARE(realPos1, boolT, 
false, 
true);
 
  417    DO_COMPARE(realPos1, array0, 
false, 
true);
 
  418    DO_COMPARE(realPos1, array1, 
false, 
true);
 
  419    DO_COMPARE(realPos1, obj0, 
false, 
true);
 
  420    DO_COMPARE(realPos1, obj1, 
false, 
true);
 
  422    DO_COMPARE(str0, null0, 
false, 
false);
 
  423    DO_COMPARE(str0, intNeg1, 
false, 
false);
 
  424    DO_COMPARE(str0, int0, 
false, 
false);
 
  425    DO_COMPARE(str0, intPos1, 
false, 
false);
 
  426    DO_COMPARE(str0, uint0, 
false, 
false);
 
  427    DO_COMPARE(str0, uint1, 
false, 
false);
 
  428    DO_COMPARE(str0, realNeg1, 
false, 
false);
 
  429    DO_COMPARE(str0, real0, 
false, 
false);
 
  430    DO_COMPARE(str0, realPos1, 
false, 
false);
 
  431    DO_COMPARE(str0, str0, 
true, 
false);
 
  432    DO_COMPARE(str0, str1, 
false, 
true);
 
  433    DO_COMPARE(str0, boolF, 
false, 
true);
 
  434    DO_COMPARE(str0, boolT, 
false, 
true);
 
  435    DO_COMPARE(str0, array0, 
false, 
true);
 
  436    DO_COMPARE(str0, array1, 
false, 
true);
 
  437    DO_COMPARE(str0, obj0, 
false, 
true);
 
  438    DO_COMPARE(str0, obj1, 
false, 
true);
 
  440    DO_COMPARE(str1, null0, 
false, 
false);
 
  441    DO_COMPARE(str1, intNeg1, 
false, 
false);
 
  442    DO_COMPARE(str1, int0, 
false, 
false);
 
  443    DO_COMPARE(str1, intPos1, 
false, 
false);
 
  444    DO_COMPARE(str1, uint0, 
false, 
false);
 
  445    DO_COMPARE(str1, uint1, 
false, 
false);
 
  446    DO_COMPARE(str1, realNeg1, 
false, 
false);
 
  447    DO_COMPARE(str1, real0, 
false, 
false);
 
  448    DO_COMPARE(str1, realPos1, 
false, 
false);
 
  449    DO_COMPARE(str1, str0, 
false, 
false);
 
  450    DO_COMPARE(str1, str1, 
true, 
false);
 
  451    DO_COMPARE(str1, boolF, 
false, 
true);
 
  452    DO_COMPARE(str1, boolT, 
false, 
true);
 
  453    DO_COMPARE(str1, array0, 
false, 
true);
 
  454    DO_COMPARE(str1, array1, 
false, 
true);
 
  455    DO_COMPARE(str1, obj0, 
false, 
true);
 
  456    DO_COMPARE(str1, obj1, 
false, 
true);
 
  458    DO_COMPARE(boolF, null0, 
false, 
false);
 
  459    DO_COMPARE(boolF, intNeg1, 
false, 
false);
 
  460    DO_COMPARE(boolF, int0, 
false, 
false);
 
  461    DO_COMPARE(boolF, intPos1, 
false, 
false);
 
  462    DO_COMPARE(boolF, uint0, 
false, 
false);
 
  463    DO_COMPARE(boolF, uint1, 
false, 
false);
 
  464    DO_COMPARE(boolF, realNeg1, 
false, 
false);
 
  465    DO_COMPARE(boolF, real0, 
false, 
false);
 
  466    DO_COMPARE(boolF, realPos1, 
false, 
false);
 
  467    DO_COMPARE(boolF, str0, 
false, 
false);
 
  468    DO_COMPARE(boolF, str1, 
false, 
false);
 
  469    DO_COMPARE(boolF, boolF, 
true, 
false);
 
  470    DO_COMPARE(boolF, boolT, 
false, 
true);
 
  471    DO_COMPARE(boolF, array0, 
false, 
true);
 
  472    DO_COMPARE(boolF, array1, 
false, 
true);
 
  473    DO_COMPARE(boolF, obj0, 
false, 
true);
 
  474    DO_COMPARE(boolF, obj1, 
false, 
true);
 
  476    DO_COMPARE(boolT, null0, 
false, 
false);
 
  477    DO_COMPARE(boolT, intNeg1, 
false, 
false);
 
  478    DO_COMPARE(boolT, int0, 
false, 
false);
 
  479    DO_COMPARE(boolT, intPos1, 
false, 
false);
 
  480    DO_COMPARE(boolT, uint0, 
false, 
false);
 
  481    DO_COMPARE(boolT, uint1, 
false, 
false);
 
  482    DO_COMPARE(boolT, realNeg1, 
false, 
false);
 
  483    DO_COMPARE(boolT, real0, 
false, 
false);
 
  484    DO_COMPARE(boolT, realPos1, 
false, 
false);
 
  485    DO_COMPARE(boolT, str0, 
false, 
false);
 
  486    DO_COMPARE(boolT, str1, 
false, 
false);
 
  487    DO_COMPARE(boolT, boolF, 
false, 
false);
 
  488    DO_COMPARE(boolT, boolT, 
true, 
false);
 
  489    DO_COMPARE(boolT, array0, 
false, 
true);
 
  490    DO_COMPARE(boolT, array1, 
false, 
true);
 
  491    DO_COMPARE(boolT, obj0, 
false, 
true);
 
  492    DO_COMPARE(boolT, obj1, 
false, 
true);
 
  494    DO_COMPARE(array0, null0, 
false, 
false);
 
  495    DO_COMPARE(array0, intNeg1, 
false, 
false);
 
  496    DO_COMPARE(array0, int0, 
false, 
false);
 
  497    DO_COMPARE(array0, intPos1, 
false, 
false);
 
  498    DO_COMPARE(array0, uint0, 
false, 
false);
 
  499    DO_COMPARE(array0, uint1, 
false, 
false);
 
  500    DO_COMPARE(array0, realNeg1, 
false, 
false);
 
  501    DO_COMPARE(array0, real0, 
false, 
false);
 
  502    DO_COMPARE(array0, realPos1, 
false, 
false);
 
  503    DO_COMPARE(array0, str0, 
false, 
false);
 
  504    DO_COMPARE(array0, str1, 
false, 
false);
 
  505    DO_COMPARE(array0, boolF, 
false, 
false);
 
  506    DO_COMPARE(array0, boolT, 
false, 
false);
 
  507    DO_COMPARE(array0, array0, 
true, 
false);
 
  508    DO_COMPARE(array0, array1, 
false, 
true);
 
  509    DO_COMPARE(array0, obj0, 
false, 
true);
 
  510    DO_COMPARE(array0, obj1, 
false, 
true);
 
  512    DO_COMPARE(array1, null0, 
false, 
false);
 
  513    DO_COMPARE(array1, intNeg1, 
false, 
false);
 
  514    DO_COMPARE(array1, int0, 
false, 
false);
 
  515    DO_COMPARE(array1, intPos1, 
false, 
false);
 
  516    DO_COMPARE(array1, uint0, 
false, 
false);
 
  517    DO_COMPARE(array1, uint1, 
false, 
false);
 
  518    DO_COMPARE(array1, realNeg1, 
false, 
false);
 
  519    DO_COMPARE(array1, real0, 
false, 
false);
 
  520    DO_COMPARE(array1, realPos1, 
false, 
false);
 
  521    DO_COMPARE(array1, str0, 
false, 
false);
 
  522    DO_COMPARE(array1, str1, 
false, 
false);
 
  523    DO_COMPARE(array1, boolF, 
false, 
false);
 
  524    DO_COMPARE(array1, boolT, 
false, 
false);
 
  525    DO_COMPARE(array1, array0, 
false, 
false);
 
  526    DO_COMPARE(array1, array1, 
true, 
false);
 
  527    DO_COMPARE(array1, obj0, 
false, 
true);
 
  528    DO_COMPARE(array1, obj1, 
false, 
true);
 
  530    DO_COMPARE(obj0, null0, 
false, 
false);
 
  531    DO_COMPARE(obj0, intNeg1, 
false, 
false);
 
  532    DO_COMPARE(obj0, int0, 
false, 
false);
 
  533    DO_COMPARE(obj0, intPos1, 
false, 
false);
 
  534    DO_COMPARE(obj0, uint0, 
false, 
false);
 
  535    DO_COMPARE(obj0, uint1, 
false, 
false);
 
  536    DO_COMPARE(obj0, realNeg1, 
false, 
false);
 
  537    DO_COMPARE(obj0, real0, 
false, 
false);
 
  538    DO_COMPARE(obj0, realPos1, 
false, 
false);
 
  539    DO_COMPARE(obj0, str0, 
false, 
false);
 
  540    DO_COMPARE(obj0, str1, 
false, 
false);
 
  541    DO_COMPARE(obj0, boolF, 
false, 
false);
 
  542    DO_COMPARE(obj0, boolT, 
false, 
false);
 
  543    DO_COMPARE(obj0, array0, 
false, 
false);
 
  544    DO_COMPARE(obj0, array1, 
false, 
false);
 
  545    DO_COMPARE(obj0, obj0, 
true, 
false);
 
  546    DO_COMPARE(obj0, obj1, 
false, 
true);
 
  548    DO_COMPARE(obj1, null0, 
false, 
false);
 
  549    DO_COMPARE(obj1, intNeg1, 
false, 
false);
 
  550    DO_COMPARE(obj1, int0, 
false, 
false);
 
  551    DO_COMPARE(obj1, intPos1, 
false, 
false);
 
  552    DO_COMPARE(obj1, uint0, 
false, 
false);
 
  553    DO_COMPARE(obj1, uint1, 
false, 
false);
 
  554    DO_COMPARE(obj1, realNeg1, 
false, 
false);
 
  555    DO_COMPARE(obj1, real0, 
false, 
false);
 
  556    DO_COMPARE(obj1, realPos1, 
false, 
false);
 
  557    DO_COMPARE(obj1, str0, 
false, 
false);
 
  558    DO_COMPARE(obj1, str1, 
false, 
false);
 
  559    DO_COMPARE(obj1, boolF, 
false, 
false);
 
  560    DO_COMPARE(obj1, boolT, 
false, 
false);
 
  561    DO_COMPARE(obj1, array0, 
false, 
false);
 
  562    DO_COMPARE(obj1, array1, 
false, 
false);
 
  563    DO_COMPARE(obj1, obj0, 
false, 
false);
 
  564    DO_COMPARE(obj1, obj1, 
true, 
false);
 
  566#pragma pop_macro("DO_COMPARE")