Garbage Collection

塵も積もれば山

目次

Blog 利用状況

ニュース

C++とかC#とか数学ネタを投下していく予定です。

[その他のページ]
日々の四方山話を綴った日記出水の日記帳

書庫

日記カテゴリ

[C][Lua]あたいが欲しい

Luaに値を渡すときやLuaから値を貰う時には、スタックを使います。

FILO(First in Last Out)の構造としてのスタックの意味もあるのですが、
もうひとつ、コンバータとしての役割も持っています。

Luaは動的型付けのため、静的型付けのC言語で直接値をとることができません。
そこで、スタックを介して、この変換を行います。

storename = "Foodmart"

上のようなLuaを実行したとして、まずstorenameの値を得る方法です。
storenameはグローバル変数ですので以下のようにします。

lua_getglobal(L, "storename");
if (lua_isstring(L, -1)){
  const char *storename = lua_tostring(L, -1);
}
lua_pop(L, 1);

lua_getglobal()で"storename"という名前のグローバル変数の値をスタックに積みます。
もし、この値が存在していないなら、nilが積まれます。
そして、stringであることを確認し、値を取り出します。
最後に、後始末としてスタックから取り除きます。

逆にstorenameに値をセットするには以下のようにします。

lua_pushstring(L, "wankumart");
lua_setglobal(L, "storename");

まず、Luaに渡さないといけないので、lua_pushstringでスタックに積みます。
そして積んだ値をlua_setglobalでLuaが受け取ります。
lua_setglobalは取り込む際にスタックから値を取り除くので後始末は要りません。

スタックがどのように動くかというのを把握してないといけないので、
この辺がLuaの面倒なところです。

投稿日時 : 2009年3月26日 17:37

Feedback

# [C][Lua]テリブルテーブル 2009/03/27 15:45 Garbage Collection

[C][Lua]テリブルテーブル

# vKQDWZaXcl 2012/01/04 5:31 http://www.kosherbeefjerky.net/

ImsX0O Pleased to read intelligent thoughts in Russian. I`ve been living in England for already 5 years!...

# re: [C][Lua]??????? 2021/08/07 1:52 hydrochloraquine

cloriquine https://chloroquineorigin.com/# hydroxyquine side effects

# xohbwzfhrwtc 2022/06/02 3:58 wmvczotz

https://erythromycin1m.com/# allergic reaction to erythromycin eye ointment

# plaquenil online canada 2022/12/26 20:29 MorrisReaks

http://www.hydroxychloroquinex.com/ hydroxychloroquine pills

タイトル
名前
Url
コメント