cmp
int cmp(var self, var obj);
The return value of cmp is < 0 if self is less than obj, > 0 if self is greater than obj and 0 if they are equal.
eq
bool eq(var self, var obj);
Returns true if the object self is equal to the object obj.
neq
bool neq(var self, var obj);
Returns false if the object self is equal to the object obj.
gt
bool gt(var self, var obj);
Returns true if the object self is greater than the object obj.
lt
bool lt(var self, var obj);
Returns false if the object self is less than the object obj.
ge
bool ge(var self, var obj);
Returns false if the object self is greater than or equal to the object obj.
le
bool le(var self, var obj);
Returns false if the object self is less than or equal to the object obj.
Usage 1
show($I( eq($I(1), $I( 1)))); /* 1 */
show($I(neq($I(2), $I(20)))); /* 1 */
show($I(neq($S("Hello"), $S("Hello")))); /* 0 */
show($I( eq($S("Hello"), $S("There")))); /* 0 */
var a = $I(1); var b = $I(1);
show($I(eq(a, b))); /* 1 */
show($I(a is b)); /* 0 */
show($I(a isnt b)); /* 1 */
Usage 2
show($I(gt($I(15), $I(3 )))); /* 1 */
show($I(lt($I(70), $I(81)))); /* 1 */
show($I(lt($I(71), $I(71)))); /* 0 */
show($I(ge($I(78), $I(71)))); /* 1 */
show($I(gt($I(32), $I(32)))); /* 0 */
show($I(le($I(21), $I(32)))); /* 1 */
show($I(cmp($I(20), $I(20)))); /* 0 */
show($I(cmp($I(21), $I(20)))); /* 1 */
show($I(cmp($I(20), $I(21)))); /* -1 */
Comparison
The Cmp class is used to define comparison between two object values. This class is important as it is used by many data structures to test equality or ordering of objects.
By default, if passed two objects of the same type, the Cmp class will simply compare the raw memory of both objects, using the Size class.
To implement this class a cmp function must be provided which returns < 0 if the first object is less than the second, > 0 if the first object is greater than the second, and 0 if they are equal.
For objects that manage their own data this class may need to be overridden to ensure that objects of the same value are still treated as equal. E.G. for string types.
This class to used to test for value equality between objects, I.E. if they represent the same thing. For object equality the is keyword can be used, which will return true only if two variables are pointing to the same object in memory.
struct Cmp {
int (*cmp)(var, var);
};