« 安曇野の旅 | メイン | 朝やる気ねえ »

[Delphi] Squirrelわかってきた(・ω・)(変数の値の取得、自作ライブラリ編)

squirrel

とりあえず、生のAPIで、変数取得するルーチンとか、書きつつ、
SqPlus(DXSquirrel)のソースを眺めていたら、
少しは、構造がつかめてきた。

やっぱり、ソース読んだり、実際に書いたりしないと駄目だねー。

自作ライブラリも、DXSquirrelのライブラリ的な基本構造を参考に、作ってみてる。

というか、ほとんど、SquirrelVMとか、SquirrelObjectとかを、使いやすいように移植という感じw
ただのコピペではなく、自分なりに、消化しつつ書き書き。
さらにある程度、理解しているので、バグってても直せるからよいのですよ。
(SqPlusのバグ見つけたりもした。本家の掲示板では指摘されてた)

理解は重要だなぁ。

ちなみに、前に書いた「変数の中身を得る」というのは、

TestString <- "hoge"
TestInt <- 1234
TestBool <- true

という、Squirrelソースがあった場合、
自作ライブラリを使うと、こう書ける。

TSquirrelObject.Get は、Variant で返るので、自動で型に合わせてくれる。
Hashライクな、TSquirrelObject["文字列"] でのアクセスも、TSquirrelObject.Get と同じ。
(Squirrelのスロット表現は、Squirrelでもハッシュ風に書けるので採用)

まだ、ちょっと面倒だけど、もう少し簡単にできるようにしたい。
(例えば、面倒なので、TSquirrelObject.Get じゃなくて、直接 SquirrelVM.Get でも行けるようにするとか。後は、interface実装にして、TSquirrelObject.Releaseいらなくするとか)

SquirrelVM.GetRootTable ってのは、RootTable を得ている。
RootTableは、Rubyで言えば、main みたいなもので、
ソースのトップレベルでの暗黙の This みたいなもの。
(Squirrelのソースで、Hogeと書いても、実際には、RootTable.Hogeなのだ)

TSquirrelObject は、RootTableを含む、Squirrel内のオブジェクト表現をラップしたものです。

これで、スタックはあまり意識しなくていいはずだけどなあ?

さて、その他に実験して、Hoge.Foo.TestInt などを一発で取得する方法も分かった。
これは後ほどね。
(ちなみに、上記方法では一発では、得られないのです)

カテゴリ: [ Delphi ]

コメントを投稿

Twitter(今何してる?)

プロフィール

あわせて読みたい

あわせて読みたいブログパーツ

人気エントリー

About

2007年08月03日 02:14に投稿されたエントリーのページです。

ひとつ前の投稿は「[旅] 安曇野の旅」です。

次の投稿は「[メンタルヘルス] 朝やる気ねえ」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。