renamed hcl to hak
This commit is contained in:
150
src/kernel.hak
Normal file
150
src/kernel.hak
Normal file
@ -0,0 +1,150 @@
|
||||
class Apex {
|
||||
fun isNil?() { return false }
|
||||
fun notNil?() { return true }
|
||||
|
||||
fun(#class) basicNew(size) {
|
||||
return (core.basicNew self size)
|
||||
}
|
||||
|
||||
fun(#class) respondsTo(mth) {
|
||||
return (core.classRespondsTo self mth)
|
||||
}
|
||||
|
||||
fun respondsTo(mth) {
|
||||
return (core.instRespondsTo self mth)
|
||||
}
|
||||
|
||||
fun primAt(pos) {
|
||||
return (core.primAt self pos)
|
||||
}
|
||||
|
||||
fun primtAtPut(pos value) {
|
||||
return (core.primAtPut self pos value)
|
||||
}
|
||||
|
||||
fun basicAt(pos) {
|
||||
return (core.basicAt self pos)
|
||||
}
|
||||
|
||||
fun basicAtPut(pos value) {
|
||||
return (core.basicAtPut self pos value)
|
||||
}
|
||||
|
||||
fun basicSize() {
|
||||
return (core.basicSize self)
|
||||
}
|
||||
|
||||
## TODO: ...
|
||||
fun == (oprnd) { return (== self oprnd) }
|
||||
fun ~= (oprnd) { return (~= self oprnd) }
|
||||
## TODO: fun perform(name ...) {}
|
||||
}
|
||||
|
||||
class(#uncopyable #varying #limited #final) Class: Apex [
|
||||
_name
|
||||
_mdic
|
||||
_spec
|
||||
_selfspec
|
||||
_superclass
|
||||
_nivars_super
|
||||
_ibrand
|
||||
_ivarnames
|
||||
_cvarnames
|
||||
] {
|
||||
fun name() {
|
||||
##return (core.className self)
|
||||
return _class
|
||||
}
|
||||
|
||||
fun instanceVariableNames() {
|
||||
## TODO: this still returns nil as the acutal manipulation of the field has not been implemented
|
||||
return _ivarnames
|
||||
}
|
||||
|
||||
fun classVariableNames() {
|
||||
## TODO: this still returns nil as the acutal manipulation of the field has not been implemented
|
||||
return _cvarnames
|
||||
}
|
||||
}
|
||||
|
||||
class UndefinedObject: Apex {
|
||||
fun isNil?() { return true }
|
||||
fun notNil?() { return false }
|
||||
}
|
||||
|
||||
class Object: Apex {
|
||||
}
|
||||
|
||||
## ---------------------------------------------------------------------------------
|
||||
|
||||
$include "Magnitude.hak"
|
||||
$include "Collection.hak"
|
||||
##$include "System.hak"
|
||||
|
||||
## ---------------------------------------------------------------------------------
|
||||
|
||||
k := "abcdefghijklmn"
|
||||
printf "string length %d\n" ("aaaa":length)
|
||||
printf "substring [%s]\n" (k:slice 5 6)
|
||||
|
||||
try {
|
||||
printf "substring [%c]\n" (k:at 13)
|
||||
k:atPut 14 'A'
|
||||
printf "[%s]\n" k
|
||||
} catch (e) {
|
||||
printf "EXCEPTION %O\n" e
|
||||
}
|
||||
|
||||
k := #[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]
|
||||
|
||||
try {
|
||||
k:atPut 2 'A'
|
||||
printf "%O\n" k
|
||||
} catch (e) {
|
||||
printf "EXCEPTION %O\n" e
|
||||
}
|
||||
|
||||
k := #b[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]
|
||||
try {
|
||||
k:atPut 2 -10
|
||||
printf "%O\n" k
|
||||
} catch (e) {
|
||||
printf "EXCEPTION %O\n" e
|
||||
}
|
||||
|
||||
|
||||
k := (Array:new 10)
|
||||
k:atPut 3 "hello"
|
||||
printf "%O\n" k
|
||||
|
||||
printf "[%O]\n" (String:new 5)
|
||||
printf "[%O]\n" (String:basicNew 5)
|
||||
|
||||
printf "[%O]\n" (String:respondsTo "new")
|
||||
printf "[%O]\n" (String:respondsTo "newx")
|
||||
printf "[%O]\n" (" ":respondsTo "new")
|
||||
printf "[%O]\n" (" ":respondsTo "length")
|
||||
|
||||
##printf "[%O]\n" (String:classVariableNames)
|
||||
##printf "[%O]\n" (String:instanceVariableNames)
|
||||
|
||||
##printf "%O\n" #"abcdefg"
|
||||
|
||||
|
||||
printf "----------------------------------------\n"
|
||||
|
||||
k := #[1 2 3]
|
||||
printf "%O\n" (k:basicAt 2)
|
||||
|
||||
class Z: Object [ a b c ] {
|
||||
fun(#classinst) new() {
|
||||
self.a := 10
|
||||
self.b := 20
|
||||
self.c := 30
|
||||
}
|
||||
}
|
||||
##k := (Z:basicNew 0)
|
||||
k := (Z:new)
|
||||
printf "%O\n" (k:basicAt 2)
|
||||
|
||||
|
Reference in New Issue
Block a user