standard library package BaseFunctions {
doc
/*
* This package defines a basic set of functions defined on all kinds of values.
* Most correspond to similarly named operators in the KerML expression syntax.
*/
private import Base::Anything;
private import Objects::Object;
private import Metaobjects::Metaobject;
private import KerML::Metaclass;
private import ScalarValues::*;
abstract function '=='{ in x: Anything[0..1]; in y: Anything[0..1];
return : Boolean[1];
}
function '!='{ in x: Anything[0..1]; in y: Anything[0..1];
return : Boolean[1] = not (x == y);
}
abstract function '==='{ in x: Anything[0..1]; in y: Anything[0..1];
return : Boolean[1];
}
function '!=='{ in x: Anything[0..1]; in y: Anything[0..1];
return : Boolean[1] = not (x === y);
}
abstract function ToString{ in x: Anything[0..1];
return : String;
}
abstract function '['{ in x: Anything[0..*] nonunique; in y: Anything[0..*] nonunique;
return : Anything[0..*] nonunique;
}
abstract function '#'{ in seq: Anything[0..*] ordered nonunique; in index: Positive[1..*] ordered nonunique;
return : Anything[0..1];
}
abstract function ','{ in seq1: Anything[0..*] ordered nonunique; in seq2: Anything[0..*] ordered nonunique;
return : Anything[0..*] ordered nonunique;
}
abstract function 'all'{
return : Object[0..*];
}
abstract function 'istype'{
in seq: Anything[0..*];
in 'type': Anything;
return : Boolean[1];
}
abstract function 'hastype'{
in seq: Anything[0..*];
in 'type': Anything;
return : Boolean;
}
abstract function '@'{
in seq: Anything[0..*];
in 'type': Anything;
return : Boolean[1];
}
abstract function '@@'{
in seq: Metaobject[0..*];
in 'type': Metaobject;
return : Boolean[1];
}
abstract function 'as'{
in seq: Anything[0..*] ordered nonunique;
return : Anything[0..*] ordered nonunique;
}
abstract function 'meta'{
in seq: Metaobject[0..*] ordered nonunique;
return : Metaobject[0..*] ordered nonunique;
}
}