bind
( ... "class" "selector" – ... ) objects “bind”
指定のクラス class の 指定セレクター selector のメソッドを execute します。
<bind>
( class selector-xt – xt ) objects “<bind>”
xt は、 指定クラス class のセレクター selector-xt のメソッドです。
bind'
( "class" "selector" – xt ) objects “bind”’
xt は 指定のクラス class の 指定のセレクター selector のメソッドです。
[bind]
( compile-time: "class" "selector" – ; run-time: ... object – ... ) objects “[bind]”
指定のクラス class の 指定のセレクター selector のメソッドをコンパイルします。
class
( parent-class – align offset ) objects “class”
parent-class の子として新しいクラス定義を開始します。 スタックに積まれた align offset は field などで使用されます。
class->map
( class – map ) objects “class->map”
指定のクラス class のメソッド・マップへのポインターを map に返します。
class-inst-size
( class – addr ) objects “class-inst-size”
指定のクラス class のインスタンス(つまり、 オブジェクト)のサイズ仕様を指します。 通常 class-inst-size
2@ ( class -- align size )
として使用されます。
class-override!
( xt sel-xt class-map – ) objects “class-override!”
指定の xt は、 指定の class-map のセレクター sel-xt の新しいメソッドです。
class-previous
( class – ) objects “class-previous”
指定の class のワードリストを検索順序スタック(the search order)から drop します。 class のワードリストが実際に検索順序スタックに含まれているかどうかのチェックは行われません。
class>order
( class – ) objects “class>order”
クラス class のワードリストを検索順序スタック(the search-order)の先頭に追加します。
construct
( ... object – ) objects “construct”
指定の object のデータ・フィールドを初期化します。 基底クラス object の construct
メソッドは何も行いません: ( object -- )
.
current'
( "selector" – xt ) objects “current”’
xt は、 現在のクラスの指定の selector のメソッドです。
[current]
( compile-time: "selector" – ; run-time: ... object – ... ) objects “[current]”
現在のクラスの selector のメソッドをコンパイルします。
current-interface
( – addr ) objects “current-interface”
変数(Variable): 現在定義中のクラスまたはインターフェイスが含まれます。
dict-new
( ... class – object ) objects “dict-new”
指定のクラス class オブジェクト用の領域を allot
を使用してディクショナリ内に確保し、
初期化(init-object
)したオブジェクトへのポインターを object に返します(訳注: object
は領域の先頭ではなくてメソッド・マップ(object-map)フィールドを指している事に注意)
end-class
( align offset "name" – ) objects “end-class”
name という名前を付けてクラス定義を終了します。 name 実行時: -- class
end-class-noname
( align offset – class ) objects “end-class-noname”
クラス定義を終了します。 結果のクラスは class です。
end-interface
( "name" – ) objects “end-interface”
name
という名前を付けてインターフェイス定義を終了します。 name
の実行時: --interface
end-interface-noname
( – interface ) objects “end-interface-noname”
インターフェイス定義を終了します。 結果のインターフェイスは interface
end-methods
( – ) objects “end-methods”
クラスのメソッド定義から通常モードに切り替えます(現在、 これは古い検索順序スタックを復元するだけです)。
exitm
( – ) objects “exitm”
メソッドから exit
します。 古い this
を復元します。
heap-new
( ... class – object ) objects “heap-new”
allocate
し、 クラス class のオブジェクトを初期化します。
implementation
( interface – ) objects “implementation”
現在のクラスは指定のインターフェイス interface を実装します。 つまり、 あなたは、 現在のクラス内とその子孫のクラス内で、 指定のインターフェイス interface の全てのセレクターを使用できます。
init-object
( ... class object – ) objects “init-object”
メモリーのチャンク object (アドレス)をクラス class のオブジェクトのために初期化します。 それから
construct
を実行します(訳注: class の construct
用のスタック項目も必要な事に注意。
6.24.3.2 Basic ‘objects.fs’ Usage の例 circle で言えば n-radius が必要で(my-circle2
というメモリー領域をクラス・オブジェクトにするとして、) 50 circle my-circle-2 init-object
としなければならない)
inst-value
( align1 offset1 "name" – align2 offset2 ) objects “inst-value”
align2 offset2 は w のサイズだけ足し込んだ値です。 name の実行時:
-- w
w は、this
オブジェクトの name フィールドの値です。
inst-var
( align1 offset1 align size "name" – align2 offset2 ) objects “inst-var”
addr は、this
オブジェクトのフィールド name のアドレスです。 name の実行時:
-- addr
interface
( – ) objects “interface”
インターフェイス定義を開始します。
m:
( – xt colon-sys; run-time: object – ) objects “m:”
メソッド定義を開始します。 定義中は指定の object が新しい this
になります。
:m
( "name" – xt; run-time: object – ) objects “:m”
名前付きメソッド定義を開始します。 定義中は指定の object が新しい this
になります。 ;m
で終わらせる必要があります。
;m
( colon-sys –; run-time: – ) objects “;m”
メソッド定義を終了します。 古い this
を復元します。
method
( xt "name" – ) objects “method”
セレクター name を作成し、xt を現在のクラスのメソッドにします。 name
の実行時:
... object -- ...
methods
( class – ) objects “methods”
class を現在のクラスにします。 これは、 セレクターをオーバーライドするメソッドを定義するために使用することを目的としています。 新しいフィールドやセレクターを定義することはできません。
object
( – class ) objects “object”
すべてのクラスの祖先。
overrides
( xt "selector" – ) objects “overrides”
現在のクラスの selector のデフォルト・メソッドを xt に置き換えます。 overrides
はインターフェイス定義中に使用してはいけません。
[parent]
( compile-time: "selector" – ; run-time: ... object – ... ) objects “[parent]”
現在のクラスの親の selector のメソッドをコンパイルします。
print
( object – ) objects “print”
オブジェクトを出力します。 指定のクラス object のメソッドは、 オブジェクトのアドレスとそのクラスのアドレスを出力します。
protected
( – ) objects “protected”
現在のクラスのワードリストをコンパイル・ワードリスト(the compilation wordlist)にセットします
public
( – ) objects “public”
実際にコンパイル・ワードリスト(the compilation wordlist)を変更した最後の protected
より前に有効だったコンパイル・ワードリストを復元します。
selector
( "name" – ) objects “selector”
現在のクラスとその子孫のセレクター name を作成します。 overrides
を使用して、
現在のクラスのセレクターのメソッドを設定できます。 name の実行時: ... object -- ...
this
( – object ) objects “this”
現在のメソッドの受信オブジェクト(receiving object)(別名アクティブ・オブジェクト)。
<to-inst>
( w xt – ) objects “<to-inst>”
実行トークン xt を inst-value で作成したフィールドとみなしてフィールド・オフセットを取得し、 現在のオブジェクト(this)の当該フィールドに指定の値 w を格納します。
[to-inst]
( compile-time: "name" – ; run-time: w – ) objects “[to-inst]”
w を this
オブジェクトの name フィールドに格納します。
to-this
( object – ) objects “to-this”
this
を設定します(内部的に使用されるものですが、 デバッグ時に役立ちます)。
xt-new
( ... class xt – object ) objects “xt-new”
xt ( align size -- addr )
を使用して何らかの形で領域を確保し、 そこに指定のクラス class
の新しいオブジェクトを作成(init-object
)します。