[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: zero containing strings
- From: David Jeske <jeske@...>
- Date: Tue, 23 Jun 1998 11:16:13 -0700
On Tue, Jun 23, 1998 at 02:15:49PM -0300, Norman Ramsey wrote:
> > you can always store the pointer as userdata, but you won't be able to
> > use it as string without duplicating the string in Lua.
>
> I'm saddened by this. My code has two copies of every `unique'
> string: one for C code and one for Lua code. I use the C interface
> because it's extremely fast, and I can't find an obvious way to use
> the Lua unique-string table from C. (I don't want these strings
> garbage-collected.) I'm probably missing something. What?
Yeah, you are missing something. Just do this:
| lua_pushstring(my_string_pointer);
| my_string_ref = lua_ref(1);
Then you will have a handle to the unique string inside Lua. The "1"
argument to lua_ref tells it to lock the string so lua won't GC it.
I do this all the time because this:
| lua_pushobject(a_table);
| lua_pushobject(lua_getref(my_string_ref));
| foo = lua_gettable();
Is faster than this:
| lua_pushobject(a_table);
| lua_pushstring(my_string_pointer);
| foo = lua_gettable();
--
David Jeske (N9LCA) + http://www.chat.net/~jeske/ + jeske@chat.net