2012年2月12日日曜日

Squirrelの組み込み Mac編 その2

Squirrelの計算結果をCに渡すのを試します。
Squirrel側では、returnではなくprint()を使って渡します。
他のやり方があって、returnでも渡せるかもしれないが、今回はprint()で渡します。


その1で使った test.nut の中身を下記のように変えます。


function foo(i, f, s)
{
    print(123);
    print(0.987);
    print("abc");
}

その1で使った minimal.c の printfunc 関数の中身を下記のように変えます。


    switch (sq_gettype(v, -2)) {
        case OT_INTEGER:
            SQInteger  ret;
            sq_getinteger(v, -2, &ret);
            sq_pop(v, 1);
            printf(" int = %d ", (int)ret);
            break;
        case OT_FLOAT:
            SQFloat  fret;
            sq_getfloat(v, -2, &fret);
            sq_pop(v, 1);            
            printf(" float = %f ", fret);
            break;
        case OT_STRING:
            const SQChar  *cret;
            sq_getstring(v, -2, &cret);
            sq_pop(v, 1);
            printf(" string = %s ", cret);
            break;    
    }


これで実行してやると

 int = 123  float = 0.987000  string = abc 

と表示されると思います。
Squirrel側でprint()した値がC側に渡されたことになります。

0 件のコメント:

コメントを投稿