#line 563 "/home/ubuntu/felix/src/packages/gui.fdoc"
class FlxGuiDrawable
{
interface drawable_t {
draw: surface_t -> 0;
get_z: 1 -> uint32;
get_tag: 1 -> string;
}
object drawable (tag:string) (z:uint32) (d: surface_t -> 0) implements drawable_t =
{
method fun get_z () => z;
method proc draw (surf:surface_t) => d surf;
method fun get_tag () => tag;
}
noinline fun mk_drawable[T] (tag:string) (z:uint32) (d: &SDL_Surface -> T -> 0) (var a:T) : drawable_t =>
drawable tag z (proc (s:surface_t) { d (s.get_sdl_surface()) a; })
;
noinline fun mk_drawable[T] (d: &SDL_Surface -> T -> 0) (var a:T) : drawable_t =>
drawable "notag" 100u32 (proc (s:surface_t) { d (s.get_sdl_surface()) a; })
;
noinline fun mk_drawable[T] (tag:string) (d: &SDL_Surface -> T -> 0) (var a:T) : drawable_t =>
drawable tag 100u32 (proc (s:surface_t) { d (s.get_sdl_surface()) a; })
;
}