/* Automatically generated by mkexports.lua */
#include <libextl/extl.h>
#include <libextl/private.h>

/* quiet warnings for generated code */
#ifdef __GNUC__
#pragma GCC diagnostic ignored "-Wunused-parameter"
#pragma GCC diagnostic ignored "-Wunused-macros"
#endif

EXTL_DEFCLASS(WRegion);
EXTL_DEFCLASS(WHook);
EXTL_DEFCLASS(WScreen);
EXTL_DEFCLASS(WGroupWS);
EXTL_DEFCLASS(WGroup);
EXTL_DEFCLASS(WGroupCW);
EXTL_DEFCLASS(WMPlex);
EXTL_DEFCLASS(WRootWin);
EXTL_DEFCLASS(WTimer);
EXTL_DEFCLASS(WFrame);
EXTL_DEFCLASS(WMoveresMode);
EXTL_DEFCLASS(WClientWin);
EXTL_DEFCLASS(WWindow);
EXTL_DEFCLASS(WInfoWin);
static bool l2chnd_t__(ExtlTab (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    out[0].t=fn();
    return TRUE;
}
static bool l2chnd_s_i__(char* (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    out[0].s=fn(in[0].i);
    return TRUE;
}
static bool l2chnd_s_o__WFrame(char* (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WFrame)) return FALSE;
    out[0].s=fn(in[0].o);
    return TRUE;
}
static bool l2chnd_b_of__WMPlex_(bool (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WMPlex)) return FALSE;
    out[0].b=fn(in[0].o, in[1].f);
    return TRUE;
}
static bool l2chnd_v_o__WFrame(void (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WFrame)) return FALSE;
    fn(in[0].o);
    return TRUE;
}
static bool l2chnd_t_o__WClientWin(ExtlTab (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WClientWin)) return FALSE;
    out[0].t=fn(in[0].o);
    return TRUE;
}
static bool l2chnd_o_s__(Obj* (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    out[0].o=fn(in[0].s);
    return TRUE;
}
static bool l2chnd_i_sb___(int (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    out[0].i=fn(in[0].s, in[1].b);
    return TRUE;
}
static bool l2chnd_b_f__(bool (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    out[0].b=fn(in[0].f);
    return TRUE;
}
static bool l2chnd_t_o__WRegion(ExtlTab (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WRegion)) return FALSE;
    out[0].t=fn(in[0].o);
    return TRUE;
}
static bool l2chnd_b_oos__WMPlex_WRegion_(bool (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WMPlex)) return FALSE;
    if(!EXTL_CHKO(in, 1, WRegion)) return FALSE;
    out[0].b=fn(in[0].o, in[1].o, in[2].s);
    return TRUE;
}
static bool l2chnd_o_ss___(Obj* (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    out[0].o=fn(in[0].s, in[1].s);
    return TRUE;
}
static bool l2chnd_v_ii___(void (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    fn(in[0].i, in[1].i);
    return TRUE;
}
static bool l2chnd_v_ob__WRegion_(void (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WRegion)) return FALSE;
    fn(in[0].o, in[1].b);
    return TRUE;
}
static bool l2chnd_b_oo__WGroup_WRegion(bool (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WGroup)) return FALSE;
    if(!EXTL_CHKO(in, 1, WRegion)) return FALSE;
    out[0].b=fn(in[0].o, in[1].o);
    return TRUE;
}
static bool l2chnd_t_ob__WRegion_(ExtlTab (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WRegion)) return FALSE;
    out[0].t=fn(in[0].o, in[1].b);
    return TRUE;
}
static bool l2chnd_v_s__(void (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    fn(in[0].s);
    return TRUE;
}
static bool l2chnd_o_o__WRegion(Obj* (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WRegion)) return FALSE;
    out[0].o=fn(in[0].o);
    return TRUE;
}
static bool l2chnd_b__(bool (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    out[0].b=fn();
    return TRUE;
}
static bool l2chnd_b_of__WGroup_(bool (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WGroup)) return FALSE;
    out[0].b=fn(in[0].o, in[1].f);
    return TRUE;
}
static bool l2chnd_b_os__WGroup_(bool (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WGroup)) return FALSE;
    out[0].b=fn(in[0].o, in[1].s);
    return TRUE;
}
static bool l2chnd_b_oss__WFrame__(bool (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WFrame)) return FALSE;
    out[0].b=fn(in[0].o, in[1].s, in[2].s);
    return TRUE;
}
static bool l2chnd_v_o__WClientWin(void (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WClientWin)) return FALSE;
    fn(in[0].o);
    return TRUE;
}
static bool l2chnd_t_s__(ExtlTab (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    out[0].t=fn(in[0].s);
    return TRUE;
}
static bool l2chnd_t_o__WGroupWS(ExtlTab (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WGroupWS)) return FALSE;
    out[0].t=fn(in[0].o);
    return TRUE;
}
static bool l2chnd_b_ssb____(bool (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    out[0].b=fn(in[0].s, in[1].s, in[2].b);
    return TRUE;
}
static bool l2chnd_o__(Obj* (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    out[0].o=fn();
    return TRUE;
}
static bool l2chnd_o_oo__WRegion_WRegion(Obj* (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WRegion)) return FALSE;
    if(!EXTL_CHKO(in, 1, WRegion)) return FALSE;
    out[0].o=fn(in[0].o, in[1].o);
    return TRUE;
}
static bool l2chnd_v_oii__WMoveresMode__(void (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WMoveresMode)) return FALSE;
    fn(in[0].o, in[1].i, in[2].i);
    return TRUE;
}
static bool l2chnd_v_oii__WRootWin__(void (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WRootWin)) return FALSE;
    fn(in[0].o, in[1].i, in[2].i);
    return TRUE;
}
static bool l2chnd_t_ot__WRegion_(ExtlTab (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WRegion)) return FALSE;
    out[0].t=fn(in[0].o, in[1].t);
    return TRUE;
}
static bool l2chnd_i_ossf__WRegion___(int (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WRegion)) return FALSE;
    out[0].i=fn(in[0].o, in[1].s, in[2].s, in[3].f);
    return TRUE;
}
static bool l2chnd_o_o__WGroup(Obj* (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WGroup)) return FALSE;
    out[0].o=fn(in[0].o);
    return TRUE;
}
static bool l2chnd_b_ot__WScreen_(bool (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WScreen)) return FALSE;
    out[0].b=fn(in[0].o, in[1].t);
    return TRUE;
}
static bool l2chnd_s_s__(char* (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    out[0].s=fn(in[0].s);
    return TRUE;
}
static bool l2chnd_o_o__WMPlex(Obj* (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WMPlex)) return FALSE;
    out[0].o=fn(in[0].o);
    return TRUE;
}
static bool l2chnd_b_oot__WGroupWS_WRegion_(bool (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WGroupWS)) return FALSE;
    if(!EXTL_CHKO(in, 1, WRegion)) return FALSE;
    out[0].b=fn(in[0].o, in[1].o, in[2].t);
    return TRUE;
}
static bool l2chnd_b_o__WRegion(bool (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WRegion)) return FALSE;
    out[0].b=fn(in[0].o);
    return TRUE;
}
static bool l2chnd_o_oi__WMPlex_(Obj* (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WMPlex)) return FALSE;
    out[0].o=fn(in[0].o, in[1].i);
    return TRUE;
}
static bool l2chnd_v_iiiist_______(void (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    fn(in[0].i, in[1].i, in[2].i, in[3].i, in[4].s, in[5].t);
    return TRUE;
}
static bool l2chnd_o_oot__WMPlex_WRegion_(Obj* (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WMPlex)) return FALSE;
    if(!EXTL_CHKO(in, 1, WRegion)) return FALSE;
    out[0].o=fn(in[0].o, in[1].o, in[2].t);
    return TRUE;
}
static bool l2chnd_v_oiiii__WMoveresMode____(void (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WMoveresMode)) return FALSE;
    fn(in[0].o, in[1].i, in[2].i, in[3].i, in[4].i);
    return TRUE;
}
static bool l2chnd_t_o__WMoveresMode(ExtlTab (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WMoveresMode)) return FALSE;
    out[0].t=fn(in[0].o);
    return TRUE;
}
static bool l2chnd_v_oif__WTimer__(void (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WTimer)) return FALSE;
    fn(in[0].o, in[1].i, in[2].f);
    return TRUE;
}
static bool l2chnd_i_oo__WMPlex_WRegion(int (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WMPlex)) return FALSE;
    if(!EXTL_CHKO(in, 1, WRegion)) return FALSE;
    out[0].i=fn(in[0].o, in[1].o);
    return TRUE;
}
static bool l2chnd_b_o__WTimer(bool (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WTimer)) return FALSE;
    out[0].b=fn(in[0].o);
    return TRUE;
}
static bool l2chnd_v_ot__WGroupWS_(void (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WGroupWS)) return FALSE;
    fn(in[0].o, in[1].t);
    return TRUE;
}
static bool l2chnd_o_ost__WRegion__(Obj* (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WRegion)) return FALSE;
    out[0].o=fn(in[0].o, in[1].s, in[2].t);
    return TRUE;
}
static bool l2chnd_t_ii___(ExtlTab (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    out[0].t=fn(in[0].i, in[1].i);
    return TRUE;
}
static bool l2chnd_t_t__(ExtlTab (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    out[0].t=fn(in[0].t);
    return TRUE;
}
static bool l2chnd_b_os__WRegion_(bool (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WRegion)) return FALSE;
    out[0].b=fn(in[0].o, in[1].s);
    return TRUE;
}
static bool l2chnd_v_o__WRootWin(void (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WRootWin)) return FALSE;
    fn(in[0].o);
    return TRUE;
}
static bool l2chnd_t_o__WMPlex(ExtlTab (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WMPlex)) return FALSE;
    out[0].t=fn(in[0].o);
    return TRUE;
}
static bool l2chnd_o_b__(Obj* (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    out[0].o=fn(in[0].b);
    return TRUE;
}
static bool l2chnd_v_oo__WMPlex_WRegion(void (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WMPlex)) return FALSE;
    if(!EXTL_CHKO(in, 1, WRegion)) return FALSE;
    fn(in[0].o, in[1].o);
    return TRUE;
}
static bool l2chnd_o_oot__WGroup_WRegion_(Obj* (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WGroup)) return FALSE;
    if(!EXTL_CHKO(in, 1, WRegion)) return FALSE;
    out[0].o=fn(in[0].o, in[1].o, in[2].t);
    return TRUE;
}
static bool l2chnd_v_t__(void (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    fn(in[0].t);
    return TRUE;
}
static bool l2chnd_d_o__WClientWin(double (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WClientWin)) return FALSE;
    out[0].d=fn(in[0].o);
    return TRUE;
}
static bool l2chnd_b_oo__WMPlex_WRegion(bool (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WMPlex)) return FALSE;
    if(!EXTL_CHKO(in, 1, WRegion)) return FALSE;
    out[0].b=fn(in[0].o, in[1].o);
    return TRUE;
}
static bool l2chnd_b_o__WFrame(bool (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WFrame)) return FALSE;
    out[0].b=fn(in[0].o);
    return TRUE;
}
static bool l2chnd_v_o__WWindow(void (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WWindow)) return FALSE;
    fn(in[0].o);
    return TRUE;
}
static bool l2chnd_v_o__WMoveresMode(void (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WMoveresMode)) return FALSE;
    fn(in[0].o);
    return TRUE;
}
static bool l2chnd_v_o__WTimer(void (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WTimer)) return FALSE;
    fn(in[0].o);
    return TRUE;
}
static bool l2chnd_v_iit____(void (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    fn(in[0].i, in[1].i, in[2].t);
    return TRUE;
}
static bool l2chnd_b_of__WHook_(bool (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WHook)) return FALSE;
    out[0].b=fn(in[0].o, in[1].f);
    return TRUE;
}
static bool l2chnd_v_osi__WInfoWin__(void (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WInfoWin)) return FALSE;
    fn(in[0].o, in[1].s, in[2].i);
    return TRUE;
}
static bool l2chnd_b_ob__WRegion_(bool (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WRegion)) return FALSE;
    out[0].b=fn(in[0].o, in[1].b);
    return TRUE;
}
static bool l2chnd_t_ot__WMoveresMode_(ExtlTab (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WMoveresMode)) return FALSE;
    out[0].t=fn(in[0].o, in[1].t);
    return TRUE;
}
static bool l2chnd_v_o__WGroupCW(void (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WGroupCW)) return FALSE;
    fn(in[0].o);
    return TRUE;
}
static bool l2chnd_b_t__(bool (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    out[0].b=fn(in[0].t);
    return TRUE;
}
static bool l2chnd_o_ot__WMPlex_(Obj* (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WMPlex)) return FALSE;
    out[0].o=fn(in[0].o, in[1].t);
    return TRUE;
}
static bool l2chnd_o_i__(Obj* (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    out[0].o=fn(in[0].i);
    return TRUE;
}
static bool l2chnd_v_o__WMPlex(void (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WMPlex)) return FALSE;
    fn(in[0].o);
    return TRUE;
}
static bool l2chnd_s_ss___(char* (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    out[0].s=fn(in[0].s, in[1].s);
    return TRUE;
}
static bool l2chnd_t_iiiib______(ExtlTab (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    out[0].t=fn(in[0].i, in[1].i, in[2].i, in[3].i, in[4].b);
    return TRUE;
}
static bool l2chnd_b_s__(bool (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    out[0].b=fn(in[0].s);
    return TRUE;
}
static bool l2chnd_v_ooi__WMPlex_WRegion_(void (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WMPlex)) return FALSE;
    if(!EXTL_CHKO(in, 1, WRegion)) return FALSE;
    fn(in[0].o, in[1].o, in[2].i);
    return TRUE;
}
static bool l2chnd_i_o__WScreen(int (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WScreen)) return FALSE;
    out[0].i=fn(in[0].o);
    return TRUE;
}
static bool l2chnd_s__(char* (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    out[0].s=fn();
    return TRUE;
}
static bool l2chnd_v__(void (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    fn();
    return TRUE;
}
static bool l2chnd_v_f__(void (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    fn(in[0].f);
    return TRUE;
}
static bool l2chnd_o_ot__WGroup_(Obj* (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WGroup)) return FALSE;
    out[0].o=fn(in[0].o, in[1].t);
    return TRUE;
}
static bool l2chnd_s_o__WRegion(char* (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WRegion)) return FALSE;
    out[0].s=fn(in[0].o);
    return TRUE;
}
static bool l2chnd_b_st___(bool (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    out[0].b=fn(in[0].s, in[1].t);
    return TRUE;
}
static bool l2chnd_o_o__WRootWin(Obj* (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WRootWin)) return FALSE;
    out[0].o=fn(in[0].o);
    return TRUE;
}
static bool l2chnd_d_o__WWindow(double (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WWindow)) return FALSE;
    out[0].d=fn(in[0].o);
    return TRUE;
}
static bool l2chnd_i_sffs_____(int (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    out[0].i=fn(in[0].s, in[1].f, in[2].f, in[3].s);
    return TRUE;
}
static bool l2chnd_b_fs___(bool (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    out[0].b=fn(in[0].f, in[1].s);
    return TRUE;
}
static bool l2chnd_b_os__WFrame_(bool (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WFrame)) return FALSE;
    out[0].b=fn(in[0].o, in[1].s);
    return TRUE;
}
static bool l2chnd_i_o__WMPlex(int (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WMPlex)) return FALSE;
    out[0].i=fn(in[0].o);
    return TRUE;
}
static bool l2chnd_i_s__(int (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    out[0].i=fn(in[0].s);
    return TRUE;
}
static bool l2chnd_v_oi__WMPlex_(void (*fn)(), ExtlL2Param *in, ExtlL2Param *out)
{
    if(!EXTL_CHKO1(in, 0, WMPlex)) return FALSE;
    fn(in[0].o, in[1].i);
    return TRUE;
}

extern void region_is_tagged();
extern void region_is_activity();
extern void region_set_tagged_extl();
extern void region_goto();
extern void region___return_target();
extern void region_groupleader_of();
extern void region_goto_();
extern void region_set_name_exact();
extern void region_begin_kbresize();
extern void region_rqclose_propagate();
extern void region_screen_of();
extern void region_geom();
extern void region_manager();
extern void region_get_configuration_extl();
extern void region_rqclose();
extern void region_parent();
extern void region_name();
extern void region_set_name();
extern void region_size_hints_extl();
extern void region_display();
extern void region_rqgeom_extl();
extern void region_set_activity_extl();
extern void region_goto_focus();
extern void region_current();
extern void region_rqorder_extl();
extern void region_is_fully_mapped();
extern void region_is_active();
extern void region_rootwin_of();


static ExtlExportedFnSpec WRegion_exports[] = {
    {"is_tagged", region_is_tagged, "o", "b", (ExtlL2CallHandler*)l2chnd_b_o__WRegion, TRUE, FALSE, FALSE},
    {"is_activity", region_is_activity, "o", "b", (ExtlL2CallHandler*)l2chnd_b_o__WRegion, TRUE, FALSE, FALSE},
    {"set_tagged", region_set_tagged_extl, "oS", "b", (ExtlL2CallHandler*)l2chnd_b_os__WRegion_, FALSE, FALSE, FALSE},
    {"goto", region_goto, "o", "b", (ExtlL2CallHandler*)l2chnd_b_o__WRegion, FALSE, FALSE, FALSE},
    {"__return_target", region___return_target, "o", "o", (ExtlL2CallHandler*)l2chnd_o_o__WRegion, TRUE, FALSE, FALSE},
    {"groupleader_of", region_groupleader_of, "o", "o", (ExtlL2CallHandler*)l2chnd_o_o__WRegion, FALSE, FALSE, FALSE},
    {"goto_", region_goto_, "o", "b", (ExtlL2CallHandler*)l2chnd_b_o__WRegion, FALSE, FALSE, FALSE},
    {"set_name_exact", region_set_name_exact, "oS", "b", (ExtlL2CallHandler*)l2chnd_b_os__WRegion_, FALSE, FALSE, FALSE},
    {"begin_kbresize", region_begin_kbresize, "o", "o", (ExtlL2CallHandler*)l2chnd_o_o__WRegion, FALSE, FALSE, FALSE},
    {"rqclose_propagate", region_rqclose_propagate, "oo", "o", (ExtlL2CallHandler*)l2chnd_o_oo__WRegion_WRegion, FALSE, FALSE, FALSE},
    {"screen_of", region_screen_of, "o", "o", (ExtlL2CallHandler*)l2chnd_o_o__WRegion, TRUE, FALSE, FALSE},
    {"geom", region_geom, "o", "t", (ExtlL2CallHandler*)l2chnd_t_o__WRegion, TRUE, FALSE, FALSE},
    {"manager", region_manager, "o", "o", (ExtlL2CallHandler*)l2chnd_o_o__WRegion, TRUE, FALSE, FALSE},
    {"get_configuration", region_get_configuration_extl, "ob", "t", (ExtlL2CallHandler*)l2chnd_t_ob__WRegion_, FALSE, FALSE, FALSE},
    {"rqclose", region_rqclose, "ob", NULL, (ExtlL2CallHandler*)l2chnd_v_ob__WRegion_, FALSE, FALSE, FALSE},
    {"parent", region_parent, "o", "o", (ExtlL2CallHandler*)l2chnd_o_o__WRegion, TRUE, FALSE, FALSE},
    {"name", region_name, "o", "S", (ExtlL2CallHandler*)l2chnd_s_o__WRegion, TRUE, FALSE, FALSE},
    {"set_name", region_set_name, "oS", "b", (ExtlL2CallHandler*)l2chnd_b_os__WRegion_, FALSE, FALSE, FALSE},
    {"size_hints", region_size_hints_extl, "o", "t", (ExtlL2CallHandler*)l2chnd_t_o__WRegion, TRUE, FALSE, FALSE},
    {"display", region_display, "o", "b", (ExtlL2CallHandler*)l2chnd_b_o__WRegion, FALSE, FALSE, FALSE},
    {"rqgeom", region_rqgeom_extl, "ot", "t", (ExtlL2CallHandler*)l2chnd_t_ot__WRegion_, FALSE, FALSE, FALSE},
    {"set_activity", region_set_activity_extl, "oS", "b", (ExtlL2CallHandler*)l2chnd_b_os__WRegion_, FALSE, FALSE, FALSE},
    {"goto_focus", region_goto_focus, "o", "b", (ExtlL2CallHandler*)l2chnd_b_o__WRegion, FALSE, FALSE, FALSE},
    {"current", region_current, "o", "o", (ExtlL2CallHandler*)l2chnd_o_o__WRegion, TRUE, FALSE, FALSE},
    {"rqorder", region_rqorder_extl, "oS", "b", (ExtlL2CallHandler*)l2chnd_b_os__WRegion_, FALSE, FALSE, FALSE},
    {"is_mapped", region_is_fully_mapped, "o", "b", (ExtlL2CallHandler*)l2chnd_b_o__WRegion, TRUE, FALSE, FALSE},
    {"is_active", region_is_active, "ob", "b", (ExtlL2CallHandler*)l2chnd_b_ob__WRegion_, TRUE, FALSE, FALSE},
    {"rootwin_of", region_rootwin_of, "o", "o", (ExtlL2CallHandler*)l2chnd_o_o__WRegion, TRUE, FALSE, FALSE},
    {NULL, NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE}
};

extern void hook_remove_extl();
extern void hook_listed();
extern void hook_add_extl();


static ExtlExportedFnSpec WHook_exports[] = {
    {"remove", hook_remove_extl, "of", "b", (ExtlL2CallHandler*)l2chnd_b_of__WHook_, FALSE, FALSE, FALSE},
    {"listed", hook_listed, "of", "b", (ExtlL2CallHandler*)l2chnd_b_of__WHook_, TRUE, FALSE, FALSE},
    {"add", hook_add_extl, "of", "b", (ExtlL2CallHandler*)l2chnd_b_of__WHook_, FALSE, FALSE, FALSE},
    {NULL, NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE}
};

extern void screen_id();
extern void screen_set_managed_offset_extl();


static ExtlExportedFnSpec WScreen_exports[] = {
    {"id", screen_id, "o", "i", (ExtlL2CallHandler*)l2chnd_i_o__WScreen, TRUE, FALSE, FALSE},
    {"set_managed_offset", screen_set_managed_offset_extl, "ot", "b", (ExtlL2CallHandler*)l2chnd_b_ot__WScreen_, FALSE, FALSE, FALSE},
    {NULL, NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE}
};

extern void groupws_attach_framed_extl();
extern void groupws_set_initial_outputs();
extern void groupws_get_initial_outputs();


static ExtlExportedFnSpec WGroupWS_exports[] = {
    {"attach_framed", groupws_attach_framed_extl, "oot", "b", (ExtlL2CallHandler*)l2chnd_b_oot__WGroupWS_WRegion_, FALSE, FALSE, FALSE},
    {"set_initial_outputs", groupws_set_initial_outputs, "ot", NULL, (ExtlL2CallHandler*)l2chnd_v_ot__WGroupWS_, TRUE, FALSE, FALSE},
    {"get_initial_outputs", groupws_get_initial_outputs, "o", "t", (ExtlL2CallHandler*)l2chnd_t_o__WGroupWS, TRUE, FALSE, FALSE},
    {NULL, NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE}
};

extern void group_attach();
extern void group_set_fullscreen_extl();
extern void group_attach_new();
extern void group_managed_i();
extern void group_set_bottom();
extern void group_bottom();


static ExtlExportedFnSpec WGroup_exports[] = {
    {"attach", group_attach, "oot", "o", (ExtlL2CallHandler*)l2chnd_o_oot__WGroup_WRegion_, FALSE, FALSE, FALSE},
    {"set_fullscreen", group_set_fullscreen_extl, "oS", "b", (ExtlL2CallHandler*)l2chnd_b_os__WGroup_, FALSE, FALSE, FALSE},
    {"attach_new", group_attach_new, "ot", "o", (ExtlL2CallHandler*)l2chnd_o_ot__WGroup_, FALSE, FALSE, FALSE},
    {"managed_i", group_managed_i, "of", "b", (ExtlL2CallHandler*)l2chnd_b_of__WGroup_, TRUE, FALSE, FALSE},
    {"set_bottom", group_set_bottom, "oo", "b", (ExtlL2CallHandler*)l2chnd_b_oo__WGroup_WRegion, FALSE, FALSE, FALSE},
    {"bottom", group_bottom, "o", "o", (ExtlL2CallHandler*)l2chnd_o_o__WGroup, TRUE, FALSE, FALSE},
    {NULL, NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE}
};

extern void groupcw_toggle_transients_pos();


static ExtlExportedFnSpec WGroupCW_exports[] = {
    {"toggle_transients_pos", groupcw_toggle_transients_pos, "o", NULL, (ExtlL2CallHandler*)l2chnd_v_o__WGroupCW, FALSE, FALSE, FALSE},
    {NULL, NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE}
};

extern void mplex_is_hidden();
extern void mplex_mx_i();
extern void mplex_switch_next();
extern void mplex_inc_index();
extern void mplex_switch_to();
extern void mplex_attach_new();
extern void mplex_set_stdisp_extl();
extern void mplex_managed_i();
extern void mplex_attach();
extern void mplex_get_stdisp_extl();
extern void mplex_set_hidden_extl();
extern void mplex_get_index();
extern void mplex_mx_nth();
extern void mplex_switch_nth();
extern void mplex_mx_current();
extern void mplex_dec_index();
extern void mplex_switch_prev();
extern void mplex_set_index();
extern void mplex_mx_count();


static ExtlExportedFnSpec WMPlex_exports[] = {
    {"is_hidden", mplex_is_hidden, "oo", "b", (ExtlL2CallHandler*)l2chnd_b_oo__WMPlex_WRegion, TRUE, FALSE, FALSE},
    {"mx_i", mplex_mx_i, "of", "b", (ExtlL2CallHandler*)l2chnd_b_of__WMPlex_, TRUE, FALSE, FALSE},
    {"switch_next", mplex_switch_next, "o", NULL, (ExtlL2CallHandler*)l2chnd_v_o__WMPlex, FALSE, FALSE, FALSE},
    {"inc_index", mplex_inc_index, "oo", NULL, (ExtlL2CallHandler*)l2chnd_v_oo__WMPlex_WRegion, FALSE, FALSE, FALSE},
    {"switch_to", mplex_switch_to, "oo", NULL, (ExtlL2CallHandler*)l2chnd_v_oo__WMPlex_WRegion, FALSE, FALSE, FALSE},
    {"attach_new", mplex_attach_new, "ot", "o", (ExtlL2CallHandler*)l2chnd_o_ot__WMPlex_, FALSE, FALSE, FALSE},
    {"set_stdisp", mplex_set_stdisp_extl, "ot", "o", (ExtlL2CallHandler*)l2chnd_o_ot__WMPlex_, FALSE, FALSE, FALSE},
    {"managed_i", mplex_managed_i, "of", "b", (ExtlL2CallHandler*)l2chnd_b_of__WMPlex_, TRUE, FALSE, FALSE},
    {"attach", mplex_attach, "oot", "o", (ExtlL2CallHandler*)l2chnd_o_oot__WMPlex_WRegion_, FALSE, FALSE, FALSE},
    {"get_stdisp", mplex_get_stdisp_extl, "o", "t", (ExtlL2CallHandler*)l2chnd_t_o__WMPlex, TRUE, FALSE, FALSE},
    {"set_hidden", mplex_set_hidden_extl, "ooS", "b", (ExtlL2CallHandler*)l2chnd_b_oos__WMPlex_WRegion_, FALSE, FALSE, FALSE},
    {"get_index", mplex_get_index, "oo", "i", (ExtlL2CallHandler*)l2chnd_i_oo__WMPlex_WRegion, TRUE, FALSE, FALSE},
    {"mx_nth", mplex_mx_nth, "oi", "o", (ExtlL2CallHandler*)l2chnd_o_oi__WMPlex_, TRUE, FALSE, FALSE},
    {"switch_nth", mplex_switch_nth, "oi", NULL, (ExtlL2CallHandler*)l2chnd_v_oi__WMPlex_, FALSE, FALSE, FALSE},
    {"mx_current", mplex_mx_current, "o", "o", (ExtlL2CallHandler*)l2chnd_o_o__WMPlex, TRUE, FALSE, FALSE},
    {"dec_index", mplex_dec_index, "oo", NULL, (ExtlL2CallHandler*)l2chnd_v_oo__WMPlex_WRegion, FALSE, FALSE, FALSE},
    {"switch_prev", mplex_switch_prev, "o", NULL, (ExtlL2CallHandler*)l2chnd_v_o__WMPlex, FALSE, FALSE, FALSE},
    {"set_index", mplex_set_index, "ooi", NULL, (ExtlL2CallHandler*)l2chnd_v_ooi__WMPlex_WRegion_, FALSE, FALSE, FALSE},
    {"mx_count", mplex_mx_count, "o", "i", (ExtlL2CallHandler*)l2chnd_i_o__WMPlex, TRUE, FALSE, FALSE},
    {NULL, NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE}
};

extern void rootwin_current_scr();
extern void rootwin_warp_pointer();


static ExtlExportedFnSpec WRootWin_exports[] = {
    {"current_scr", rootwin_current_scr, "o", "o", (ExtlL2CallHandler*)l2chnd_o_o__WRootWin, TRUE, FALSE, FALSE},
    {"warp_pointer", rootwin_warp_pointer, "oii", NULL, (ExtlL2CallHandler*)l2chnd_v_oii__WRootWin__, TRUE, FALSE, FALSE},
    {NULL, NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE}
};

extern void timer_is_set();
extern void timer_set_extl();
extern void timer_reset();


static ExtlExportedFnSpec WTimer_exports[] = {
    {"is_set", timer_is_set, "o", "b", (ExtlL2CallHandler*)l2chnd_b_o__WTimer, FALSE, FALSE, FALSE},
    {"set", timer_set_extl, "oif", NULL, (ExtlL2CallHandler*)l2chnd_v_oif__WTimer__, FALSE, FALSE, FALSE},
    {"reset", timer_reset, "o", NULL, (ExtlL2CallHandler*)l2chnd_v_o__WTimer, FALSE, FALSE, FALSE},
    {NULL, NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE}
};

extern void frame_set_grattr_extl();
extern void frame_is_grattr();
extern void frame_set_shaded_extl();
extern void frame_is_shaded();
extern void frame_p_tabdrag();
extern void frame_p_switch_tab();
extern void frame_set_mode_extl();
extern void frame_mode_extl();
extern void frame_maximize_vert();
extern void frame_maximize_horiz();


static ExtlExportedFnSpec WFrame_exports[] = {
    {"set_grattr", frame_set_grattr_extl, "oSS", "b", (ExtlL2CallHandler*)l2chnd_b_oss__WFrame__, FALSE, FALSE, FALSE},
    {"is_grattr", frame_is_grattr, "oS", "b", (ExtlL2CallHandler*)l2chnd_b_os__WFrame_, TRUE, FALSE, FALSE},
    {"set_shaded", frame_set_shaded_extl, "oS", "b", (ExtlL2CallHandler*)l2chnd_b_os__WFrame_, FALSE, FALSE, FALSE},
    {"is_shaded", frame_is_shaded, "o", "b", (ExtlL2CallHandler*)l2chnd_b_o__WFrame, TRUE, FALSE, FALSE},
    {"p_tabdrag", frame_p_tabdrag, "o", NULL, (ExtlL2CallHandler*)l2chnd_v_o__WFrame, FALSE, FALSE, FALSE},
    {"p_switch_tab", frame_p_switch_tab, "o", NULL, (ExtlL2CallHandler*)l2chnd_v_o__WFrame, FALSE, FALSE, FALSE},
    {"set_mode", frame_set_mode_extl, "oS", "b", (ExtlL2CallHandler*)l2chnd_b_os__WFrame_, FALSE, FALSE, FALSE},
    {"mode", frame_mode_extl, "o", "S", (ExtlL2CallHandler*)l2chnd_s_o__WFrame, TRUE, FALSE, FALSE},
    {"maximize_vert", frame_maximize_vert, "o", NULL, (ExtlL2CallHandler*)l2chnd_v_o__WFrame, FALSE, FALSE, FALSE},
    {"maximize_horiz", frame_maximize_horiz, "o", NULL, (ExtlL2CallHandler*)l2chnd_v_o__WFrame, FALSE, FALSE, FALSE},
    {NULL, NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE}
};

extern void moveresmode_finish();
extern void moveresmode_geom();
extern void moveresmode_move();
extern void moveresmode_cancel();
extern void moveresmode_rqgeom_extl();
extern void moveresmode_resize();


static ExtlExportedFnSpec WMoveresMode_exports[] = {
    {"finish", moveresmode_finish, "o", NULL, (ExtlL2CallHandler*)l2chnd_v_o__WMoveresMode, FALSE, FALSE, FALSE},
    {"geom", moveresmode_geom, "o", "t", (ExtlL2CallHandler*)l2chnd_t_o__WMoveresMode, FALSE, FALSE, FALSE},
    {"move", moveresmode_move, "oii", NULL, (ExtlL2CallHandler*)l2chnd_v_oii__WMoveresMode__, FALSE, FALSE, FALSE},
    {"cancel", moveresmode_cancel, "o", NULL, (ExtlL2CallHandler*)l2chnd_v_o__WMoveresMode, FALSE, FALSE, FALSE},
    {"rqgeom", moveresmode_rqgeom_extl, "ot", "t", (ExtlL2CallHandler*)l2chnd_t_ot__WMoveresMode_, FALSE, FALSE, FALSE},
    {"resize", moveresmode_resize, "oiiii", NULL, (ExtlL2CallHandler*)l2chnd_v_oiiii__WMoveresMode____, FALSE, FALSE, FALSE},
    {NULL, NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE}
};

extern void clientwin_xid();
extern void clientwin_get_ident();
extern void clientwin_quote_next();
extern void clientwin_nudge();
extern void clientwin_kill();


static ExtlExportedFnSpec WClientWin_exports[] = {
    {"xid", clientwin_xid, "o", "d", (ExtlL2CallHandler*)l2chnd_d_o__WClientWin, TRUE, FALSE, FALSE},
    {"get_ident", clientwin_get_ident, "o", "t", (ExtlL2CallHandler*)l2chnd_t_o__WClientWin, TRUE, FALSE, FALSE},
    {"quote_next", clientwin_quote_next, "o", NULL, (ExtlL2CallHandler*)l2chnd_v_o__WClientWin, FALSE, FALSE, FALSE},
    {"nudge", clientwin_nudge, "o", NULL, (ExtlL2CallHandler*)l2chnd_v_o__WClientWin, FALSE, FALSE, FALSE},
    {"kill", clientwin_kill, "o", NULL, (ExtlL2CallHandler*)l2chnd_v_o__WClientWin, FALSE, FALSE, FALSE},
    {NULL, NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE}
};

extern void gr_refresh();
extern void gr_read_config();
extern void gr_select_engine();


static ExtlExportedFnSpec gr_exports[] = {
    {"refresh", gr_refresh, NULL, NULL, (ExtlL2CallHandler*)l2chnd_v__, FALSE, FALSE, FALSE},
    {"read_config", gr_read_config, NULL, NULL, (ExtlL2CallHandler*)l2chnd_v__, FALSE, FALSE, FALSE},
    {"select_engine", gr_select_engine, "S", "b", (ExtlL2CallHandler*)l2chnd_b_s__, FALSE, FALSE, FALSE},
    {NULL, NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE}
};

extern void window_xid();
extern void window_p_move();
extern void window_p_resize();


static ExtlExportedFnSpec WWindow_exports[] = {
    {"xid", window_xid, "o", "d", (ExtlL2CallHandler*)l2chnd_d_o__WWindow, TRUE, FALSE, FALSE},
    {"p_move", window_p_move, "o", NULL, (ExtlL2CallHandler*)l2chnd_v_o__WWindow, FALSE, FALSE, FALSE},
    {"p_resize", window_p_resize, "o", NULL, (ExtlL2CallHandler*)l2chnd_v_o__WWindow, FALSE, FALSE, FALSE},
    {NULL, NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE}
};

extern void infowin_set_text();


static ExtlExportedFnSpec WInfoWin_exports[] = {
    {"set_text", infowin_set_text, "oSi", NULL, (ExtlL2CallHandler*)l2chnd_v_osi__WInfoWin__, FALSE, FALSE, FALSE},
    {NULL, NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE}
};

extern void ioncore_x_delete_property();
extern void ioncore_snapshot();
extern void ioncore_x_set_text_property();
extern void ioncore_goto_next_screen();
extern void ioncore_exec();
extern void ioncore_warn();
extern void ioncore_x_get_atom_name();
extern void ioncore_defshortening();
extern void ioncore_popen_bgread();
extern void ioncore_set_selection();
extern void ioncore_gettext();
extern void ioncore_version();
extern void ioncore_x_change_property();
extern void ioncore_load_module();
extern void ioncore_resign();
extern void ioncore_shutdown();
extern void ioncore_rootwin();
extern void ioncore_x_intern_atom();
extern void extl_extl_read_savefile();
extern void ioncore_set_paths();
extern void ioncore_do_exec_on();
extern void ioncore_profiling_stop();
extern void ioncore_navi_next();
extern void ioncore_do_getbindings();
extern void ioncore_find_screen_id();
extern void ioncore_region_i();
extern void ioncore_tagged_first();
extern void ioncore_goto_first();
extern void ioncore_clientwin_i();
extern void mainloop_get_hook();
extern void extl_write_savefile();
extern void ioncore_set();
extern void ioncore_current();
extern void ioncore_goto_next();
extern void extl_lookup_script();
extern void ioncore_screens_updated();
extern void ioncore_is_i18n();
extern void ioncore_request_selection();
extern void ioncore_focushistory_i();
extern void ioncore_update_net_state();
extern void create_timer_extl_owned();
extern void mainloop_defer_extl();
extern void ioncore_goto_activity();
extern void ioncore_restart();
extern void ioncore_tagged_clear();
extern void ioncore_warn_traced();
extern void ioncore_progname();
extern void ioncore_do_defbindings();
extern void ioncore_x_get_text_property();
extern void ioncore_profiling_start();
extern void ioncore_restart_other();
extern void ioncore_unsqueeze();
extern void extl_get_savefile();
extern void ioncore_lookup_region();
extern void ioncore_x_set_utf8_property();
extern void ioncore_goto_nth_screen();
extern void ioncore_get();
extern void ioncore_activity_i();
extern void ioncore_activity_first();
extern void ioncore_get_paths();
extern void ioncore_x_get_window_property();
extern void ioncore_aboutmsg();
extern void ioncore_navi_first();
extern void ioncore_tagged_i();
extern void ioncore_lookup_clientwin();
extern void ioncore_goto_prev_screen();
extern void ioncore_goto_previous();
extern void ioncore_detach_extl();


static ExtlExportedFnSpec ioncore_exports[] = {
    {"x_delete_property", ioncore_x_delete_property, "ii", NULL, (ExtlL2CallHandler*)l2chnd_v_ii___, FALSE, FALSE, FALSE},
    {"snapshot", ioncore_snapshot, NULL, NULL, (ExtlL2CallHandler*)l2chnd_v__, FALSE, FALSE, FALSE},
    {"x_set_text_property", ioncore_x_set_text_property, "iit", NULL, (ExtlL2CallHandler*)l2chnd_v_iit____, FALSE, FALSE, FALSE},
    {"goto_next_screen", ioncore_goto_next_screen, NULL, "o", (ExtlL2CallHandler*)l2chnd_o__, FALSE, FALSE, FALSE},
    {"exec", ioncore_exec, "S", "i", (ExtlL2CallHandler*)l2chnd_i_s__, TRUE, FALSE, FALSE},
    {"warn", ioncore_warn, "S", NULL, (ExtlL2CallHandler*)l2chnd_v_s__, TRUE, TRUE, FALSE},
    {"x_get_atom_name", ioncore_x_get_atom_name, "i", "s", (ExtlL2CallHandler*)l2chnd_s_i__, FALSE, FALSE, FALSE},
    {"defshortening", ioncore_defshortening, "SSb", "b", (ExtlL2CallHandler*)l2chnd_b_ssb____, FALSE, FALSE, FALSE},
    {"popen_bgread", ioncore_popen_bgread, "SffS", "i", (ExtlL2CallHandler*)l2chnd_i_sffs_____, TRUE, FALSE, FALSE},
    {"set_selection", ioncore_set_selection, "S", NULL, (ExtlL2CallHandler*)l2chnd_v_s__, FALSE, FALSE, FALSE},
    {"gettext", ioncore_gettext, "S", "S", (ExtlL2CallHandler*)l2chnd_s_s__, TRUE, FALSE, FALSE},
    {"version", ioncore_version, NULL, "S", (ExtlL2CallHandler*)l2chnd_s__, TRUE, FALSE, FALSE},
    {"x_change_property", ioncore_x_change_property, "iiiiSt", NULL, (ExtlL2CallHandler*)l2chnd_v_iiiist_______, FALSE, FALSE, FALSE},
    {"load_module", ioncore_load_module, "S", "b", (ExtlL2CallHandler*)l2chnd_b_s__, FALSE, FALSE, FALSE},
    {"resign", ioncore_resign, NULL, NULL, (ExtlL2CallHandler*)l2chnd_v__, FALSE, FALSE, FALSE},
    {"shutdown", ioncore_shutdown, NULL, NULL, (ExtlL2CallHandler*)l2chnd_v__, FALSE, FALSE, FALSE},
    {"rootwin", ioncore_rootwin, NULL, "o", (ExtlL2CallHandler*)l2chnd_o__, TRUE, FALSE, FALSE},
    {"x_intern_atom", ioncore_x_intern_atom, "Sb", "i", (ExtlL2CallHandler*)l2chnd_i_sb___, FALSE, FALSE, FALSE},
    {"read_savefile", extl_extl_read_savefile, "S", "t", (ExtlL2CallHandler*)l2chnd_t_s__, TRUE, FALSE, FALSE},
    {"set_paths", ioncore_set_paths, "t", "b", (ExtlL2CallHandler*)l2chnd_b_t__, FALSE, FALSE, FALSE},
    {"do_exec_on", ioncore_do_exec_on, "oSSf", "i", (ExtlL2CallHandler*)l2chnd_i_ossf__WRegion___, FALSE, FALSE, FALSE},
    {"profiling_stop", ioncore_profiling_stop, NULL, NULL, (ExtlL2CallHandler*)l2chnd_v__, TRUE, FALSE, FALSE},
    {"navi_next", ioncore_navi_next, "oSt", "o", (ExtlL2CallHandler*)l2chnd_o_ost__WRegion__, FALSE, FALSE, FALSE},
    {"do_getbindings", ioncore_do_getbindings, NULL, "t", (ExtlL2CallHandler*)l2chnd_t__, TRUE, FALSE, FALSE},
    {"find_screen_id", ioncore_find_screen_id, "i", "o", (ExtlL2CallHandler*)l2chnd_o_i__, TRUE, FALSE, FALSE},
    {"region_i", ioncore_region_i, "fS", "b", (ExtlL2CallHandler*)l2chnd_b_fs___, TRUE, FALSE, FALSE},
    {"tagged_first", ioncore_tagged_first, "b", "o", (ExtlL2CallHandler*)l2chnd_o_b__, TRUE, FALSE, FALSE},
    {"goto_first", ioncore_goto_first, "oSt", "o", (ExtlL2CallHandler*)l2chnd_o_ost__WRegion__, FALSE, FALSE, FALSE},
    {"clientwin_i", ioncore_clientwin_i, "f", "b", (ExtlL2CallHandler*)l2chnd_b_f__, TRUE, FALSE, FALSE},
    {"get_hook", mainloop_get_hook, "S", "o", (ExtlL2CallHandler*)l2chnd_o_s__, TRUE, FALSE, FALSE},
    {"write_savefile", extl_write_savefile, "St", "b", (ExtlL2CallHandler*)l2chnd_b_st___, TRUE, FALSE, FALSE},
    {"set", ioncore_set, "t", NULL, (ExtlL2CallHandler*)l2chnd_v_t__, FALSE, FALSE, FALSE},
    {"current", ioncore_current, NULL, "o", (ExtlL2CallHandler*)l2chnd_o__, FALSE, FALSE, FALSE},
    {"goto_next", ioncore_goto_next, "oSt", "o", (ExtlL2CallHandler*)l2chnd_o_ost__WRegion__, FALSE, FALSE, FALSE},
    {"lookup_script", extl_lookup_script, "SS", "s", (ExtlL2CallHandler*)l2chnd_s_ss___, TRUE, FALSE, FALSE},
    {"screens_updated", ioncore_screens_updated, "o", NULL, (ExtlL2CallHandler*)l2chnd_v_o__WRootWin, TRUE, FALSE, FALSE},
    {"is_i18n", ioncore_is_i18n, NULL, "b", (ExtlL2CallHandler*)l2chnd_b__, TRUE, FALSE, FALSE},
    {"request_selection", ioncore_request_selection, "f", NULL, (ExtlL2CallHandler*)l2chnd_v_f__, FALSE, FALSE, FALSE},
    {"focushistory_i", ioncore_focushistory_i, "f", "b", (ExtlL2CallHandler*)l2chnd_b_f__, FALSE, FALSE, FALSE},
    {"update_net_state", ioncore_update_net_state, "o", NULL, (ExtlL2CallHandler*)l2chnd_v_o__WClientWin, TRUE, FALSE, FALSE},
    {"create_timer", create_timer_extl_owned, NULL, "o", (ExtlL2CallHandler*)l2chnd_o__, FALSE, FALSE, FALSE},
    {"defer", mainloop_defer_extl, "f", "b", (ExtlL2CallHandler*)l2chnd_b_f__, TRUE, FALSE, FALSE},
    {"goto_activity", ioncore_goto_activity, NULL, "b", (ExtlL2CallHandler*)l2chnd_b__, FALSE, FALSE, FALSE},
    {"restart", ioncore_restart, NULL, NULL, (ExtlL2CallHandler*)l2chnd_v__, FALSE, FALSE, FALSE},
    {"tagged_clear", ioncore_tagged_clear, NULL, NULL, (ExtlL2CallHandler*)l2chnd_v__, FALSE, FALSE, FALSE},
    {"warn_traced", ioncore_warn_traced, "S", NULL, (ExtlL2CallHandler*)l2chnd_v_s__, TRUE, FALSE, FALSE},
    {"progname", ioncore_progname, NULL, "S", (ExtlL2CallHandler*)l2chnd_s__, TRUE, FALSE, FALSE},
    {"do_defbindings", ioncore_do_defbindings, "St", "b", (ExtlL2CallHandler*)l2chnd_b_st___, FALSE, FALSE, FALSE},
    {"x_get_text_property", ioncore_x_get_text_property, "ii", "t", (ExtlL2CallHandler*)l2chnd_t_ii___, TRUE, FALSE, FALSE},
    {"profiling_start", ioncore_profiling_start, "s", NULL, (ExtlL2CallHandler*)l2chnd_v_s__, TRUE, FALSE, FALSE},
    {"restart_other", ioncore_restart_other, "S", NULL, (ExtlL2CallHandler*)l2chnd_v_s__, FALSE, FALSE, FALSE},
    {"unsqueeze", ioncore_unsqueeze, "ob", NULL, (ExtlL2CallHandler*)l2chnd_v_ob__WRegion_, FALSE, FALSE, FALSE},
    {"get_savefile", extl_get_savefile, "S", "s", (ExtlL2CallHandler*)l2chnd_s_s__, TRUE, FALSE, FALSE},
    {"lookup_region", ioncore_lookup_region, "SS", "o", (ExtlL2CallHandler*)l2chnd_o_ss___, TRUE, FALSE, FALSE},
    {"x_set_utf8_property", ioncore_x_set_utf8_property, "iit", NULL, (ExtlL2CallHandler*)l2chnd_v_iit____, FALSE, FALSE, FALSE},
    {"goto_nth_screen", ioncore_goto_nth_screen, "i", "o", (ExtlL2CallHandler*)l2chnd_o_i__, FALSE, FALSE, FALSE},
    {"get", ioncore_get, NULL, "t", (ExtlL2CallHandler*)l2chnd_t__, TRUE, FALSE, FALSE},
    {"activity_i", ioncore_activity_i, "f", "b", (ExtlL2CallHandler*)l2chnd_b_f__, TRUE, FALSE, FALSE},
    {"activity_first", ioncore_activity_first, NULL, "o", (ExtlL2CallHandler*)l2chnd_o__, TRUE, FALSE, FALSE},
    {"get_paths", ioncore_get_paths, "t", "t", (ExtlL2CallHandler*)l2chnd_t_t__, TRUE, FALSE, FALSE},
    {"x_get_window_property", ioncore_x_get_window_property, "iiiib", "t", (ExtlL2CallHandler*)l2chnd_t_iiiib______, TRUE, FALSE, FALSE},
    {"aboutmsg", ioncore_aboutmsg, NULL, "S", (ExtlL2CallHandler*)l2chnd_s__, TRUE, FALSE, FALSE},
    {"navi_first", ioncore_navi_first, "oSt", "o", (ExtlL2CallHandler*)l2chnd_o_ost__WRegion__, FALSE, FALSE, FALSE},
    {"tagged_i", ioncore_tagged_i, "f", "b", (ExtlL2CallHandler*)l2chnd_b_f__, TRUE, FALSE, FALSE},
    {"lookup_clientwin", ioncore_lookup_clientwin, "S", "o", (ExtlL2CallHandler*)l2chnd_o_s__, TRUE, FALSE, FALSE},
    {"goto_prev_screen", ioncore_goto_prev_screen, NULL, "o", (ExtlL2CallHandler*)l2chnd_o__, FALSE, FALSE, FALSE},
    {"goto_previous", ioncore_goto_previous, NULL, "o", (ExtlL2CallHandler*)l2chnd_o__, FALSE, FALSE, FALSE},
    {"detach", ioncore_detach_extl, "oS", "b", (ExtlL2CallHandler*)l2chnd_b_os__WRegion_, FALSE, FALSE, FALSE},
    {NULL, NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE}
};

bool ioncore_register_exports()
{
    if(!extl_register_class("WRegion", WRegion_exports, "Obj")) return FALSE;
    if(!extl_register_class("WHook", WHook_exports, "Obj")) return FALSE;
    if(!extl_register_class("WWindow", WWindow_exports, "WRegion")) return FALSE;
    if(!extl_register_class("WMPlex", WMPlex_exports, "WWindow")) return FALSE;
    if(!extl_register_class("WScreen", WScreen_exports, "WMPlex")) return FALSE;
    if(!extl_register_class("WGroup", WGroup_exports, "WRegion")) return FALSE;
    if(!extl_register_class("WGroupWS", WGroupWS_exports, "WGroup")) return FALSE;
    if(!extl_register_class("WGroupCW", WGroupCW_exports, "WGroup")) return FALSE;
    if(!extl_register_class("WRootWin", WRootWin_exports, "WWindow")) return FALSE;
    if(!extl_register_class("WTimer", WTimer_exports, "Obj")) return FALSE;
    if(!extl_register_class("WFrame", WFrame_exports, "WMPlex")) return FALSE;
    if(!extl_register_class("WMoveresMode", WMoveresMode_exports, "Obj")) return FALSE;
    if(!extl_register_class("WClientWin", WClientWin_exports, "WRegion")) return FALSE;
    if(!extl_register_module("gr", gr_exports)) return FALSE;
    if(!extl_register_class("WInfoWin", WInfoWin_exports, "WWindow")) return FALSE;
    if(!extl_register_module("ioncore", ioncore_exports)) return FALSE;
    return TRUE;
}

void ioncore_unregister_exports()
{
    extl_unregister_class("WRegion", WRegion_exports);
    extl_unregister_class("WHook", WHook_exports);
    extl_unregister_class("WWindow", WWindow_exports);
    extl_unregister_class("WMPlex", WMPlex_exports);
    extl_unregister_class("WScreen", WScreen_exports);
    extl_unregister_class("WGroup", WGroup_exports);
    extl_unregister_class("WGroupWS", WGroupWS_exports);
    extl_unregister_class("WGroupCW", WGroupCW_exports);
    extl_unregister_class("WRootWin", WRootWin_exports);
    extl_unregister_class("WTimer", WTimer_exports);
    extl_unregister_class("WFrame", WFrame_exports);
    extl_unregister_class("WMoveresMode", WMoveresMode_exports);
    extl_unregister_class("WClientWin", WClientWin_exports);
    extl_unregister_module("gr", gr_exports);
    extl_unregister_class("WInfoWin", WInfoWin_exports);
    extl_unregister_module("ioncore", ioncore_exports);
}

