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);
};