2007-01-01から1ヶ月間の記事一覧

「 乳_も_み 」で

yahooで11位になってるんで数アクセスあるのが一番サーチエンジンからキーワード辿って来る人で多いところかなぁ。いや。なんかNHKスペシャルでGoogleの検索順位のことやってたのでね。この人数と内容じゃ儲かりそうにもないけど。当のGoogleからは技術系の…

クラスとインスタンス

Squirrelのクラス定義は記述上ではテーブルの定義とほとんど同様である。ただし要素の動的削除はできない。追加書き込み専用である。ドキュメントにもあるとおり、クラスからインスタンスが初めて作成された時点で要素の追加や値の変更がロックされる。これ…

ちょっと変なコード

sq>s <- "aaa"; sq>print(s.len()); 3 sq>function f() { print(len()); } sq>f.call(s); 3 関数コンテクストには何でも入り得るということ。default delegateもハッシュテーブルの項目と同様の、単なる検索される要素として提供されているということ。

implicit delegation

関数コンテクストやGetの対象のSQObjectがテーブルであった場合、当然真っ先にこのハッシュテーブル内を検索するわけだが、ここで名前が見つからなかった場合にエラーとせず、あらかじめこのテーブルへ設定しておいた次の検索対象候補としての別のテーブルへ…

Get

Squirrelスクリプトの基本的で一貫したルールとして、exp_context.exp と書くことはexp_contextという名前のSQObject内に、"exp"という名前のつけられたSQObjectを探すことを指す。内部的にはこのような . 演算子はコンテクストとなるSQObjectの実際の型に関…

関数コンテクスト、thisについて

Squirrelでは関数実行には関数そのものと同時にコンテクストとなる変数(environmentとも呼ばれる)を指定する必要がある。この変数は関数内ではthisとしてアクセス可能なほか、関数内で出現する変数や関数などの名前はコンテクスト内を最優先に検索される。S…

fundamentalな部分についてまだ書くよ

前述のSQObject構造体はすべてのSquirrelが提供する型を格納できるようになっている。ハッシュテーブルや配列や文字列、プリミティブ型は当然のことながら、C++側で定義された関数の定義(native closureと呼ばれる)、squirrelで定義された関数の定義(closure…

メモリ管理とか

メモリ管理について。LuaがあくまでGCなのに対してSquirrelは基本的なメモリのライフタイムの管理にリファレンスカウンタを採用している。バリアント変数の実体のような、すべての型の共用体とその内容の型情報を保持するSQObject構造体があり、これを継承し…