lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


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"