[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: The "make the special type in C" journey and type
- From: Sean Conner <sean@...>
- Date: Thu, 3 Oct 2013 19:26:06 -0400
It was thus said that the Great liam mail once stated:
>
> I agree with Justin here for userdata types, in fact a certain library[1]
> does not even know the types of userdata[2] in C++ which is not so
> unusual[3]. If you really wanted to check the type then using the debug
> library seems very very wrong to me; just don't set a __metatable entry to
> hide it, grab the metatable and check against the type you want.
Be careful, because that isn't always true. I wrote code to bind Xlib to
Lua [4], and each userdata created gets its own distinct metatable. [5] Of
course, that metatable has a _TYPE field associated with it ...
-spc
> [1] OOLua
> [2] It has no __tostring method either as this would reveal an
> implementation details and would surprise some users I am sure.
> [3] luaL_checkudata which is not used in [1] does not even know the type,
> it checks to see if it is a certain requested type
[4] Why Xlib? Why not? I like playing around with implementing user
interfaces from scratch.
[5] Because I wanted a way to associate extra data with a userdata type,
and by giving each userdata its own metatable, I can stash do the
association. So, for instance:
w = display:window(...)
w.annotate = "This is a top level window"