示例#1
0
文件: builder.c 项目: abed-hawa/amara
int DomletteBuilder_Init(PyObject *module)
{
  PyObject *import;

  if (Expat_IMPORT == NULL) return -1;
  if (RuleMatch_Init() < 0) return -1;

  empty_args_tuple = PyTuple_New(0);
  if (empty_args_tuple == NULL) return -1;

  empty_string = XmlString_FromASCII("");
  if (empty_string == NULL) return -1;

  import = PyImport_ImportModule("gc");
  if (import == NULL) return -1;
#define GET_GC_FUNC(NAME)                                       \
  gc_##NAME##_function = PyObject_GetAttrString(import, #NAME); \
  if (gc_##NAME##_function == NULL) {                           \
    Py_DECREF(import);                                          \
    return -1;                                                  \
  }
  GET_GC_FUNC(enable);
  GET_GC_FUNC(disable);
  GET_GC_FUNC(isenabled);
  Py_DECREF(import);
#undef GET_GC_FUNC

#define ADD_CONSTANT(name) \
  if (PyModule_AddIntConstant(module, #name, name) < 0) return -1
  ADD_CONSTANT(PARSE_FLAGS_STANDALONE);
  ADD_CONSTANT(PARSE_FLAGS_EXTERNAL_ENTITIES);
  ADD_CONSTANT(PARSE_FLAGS_VALIDATE);

  return 0;
}
示例#2
0
TextureManager::TextureManager() {
	HSQUIRRELVM vm = engine::script_engine->vm;

	sq_pushroottable(vm); // 1
	sq_pushstring(vm, "Resources", -1); // 2
	CSQ(sq_get(vm, -2)); // 2

	sq_pushstring(vm, "TextureInfo", -1); // 3
	sq_newtable(vm); // 4
	CSQ(sq_newslot(vm, -3, SQFalse)); // 2
	sq_poptop(vm); // 1

#define ADD_CONSTANT(name) \
		sq_pushstring(vm, PREFIX #name, -1); \
		sq_pushinteger(vm, static_cast<SQInteger>(ENUM_PREFIX name)); \
		CSQ(sq_newslot(vm, -3, SQFalse))

#define PREFIX "TEXFILTER_"
#define ENUM_PREFIX Texture::FilterMode::
	ADD_CONSTANT(NEAREST);
	ADD_CONSTANT(LINEAR);
	ADD_CONSTANT(MIPMAP_LINEAR);
#undef PREFIX
#undef ENUM_PREFIX

#define PREFIX "TEXREPEAT_"
#define ENUM_PREFIX Texture::RepeatMode::
	ADD_CONSTANT(CLAMP);
	ADD_CONSTANT(WRAP);
#undef PREFIX
#undef ENUM_PREFIX

#undef ADD_CONSTANT

	sq_poptop(vm); // 0
}
示例#3
0
int luaopen_errno_c(lua_State *L) {
    luaL_checkversion(L);
    
    luaL_Reg l[] = {
        {"strerror", lstrerror},
        {NULL, NULL}
    };
    luaL_newlib(L, l);

    ADD_CONSTANT(L, EINVAL);
    ADD_CONSTANT(L, EWOULDBLOCK);
    ADD_CONSTANT(L, EINPROGRESS);
    ADD_CONSTANT(L, EALREADY);
    ADD_CONSTANT(L, EAGAIN);
    ADD_CONSTANT(L, EISCONN);
    ADD_CONSTANT(L, EBADF);
    return 1;
}
示例#4
0
int AddConstants(PyObject *module)
{
  ADD_ENUM(COleClientItem, emptyState);// @const win32uiole|COleClientItem_emptyState|
  ADD_ENUM(COleClientItem, loadedState);// @const win32uiole|COleClientItem_loadedState|
  ADD_ENUM(COleClientItem, openState);// @const win32uiole|COleClientItem_openState|
  ADD_ENUM(COleClientItem, activeState);// @const win32uiole|COleClientItem_activeState|
  ADD_ENUM(COleClientItem, activeUIState);// @const win32uiole|COleClientItem_activeUIState|
  ADD_CONSTANT(OLE_CHANGED);        // @const win32uiole|OLE_CHANGED|representation of a draw aspect has changed
  ADD_CONSTANT(OLE_SAVED);          // @const win32uiole|OLE_SAVED|the item has committed its storage
  ADD_CONSTANT(OLE_CLOSED);         // @const win32uiole|OLE_CLOSED|the item has closed
  ADD_CONSTANT(OLE_RENAMED);        // @const win32uiole|OLE_RENAMED|the item has changed its moniker
  ADD_CONSTANT(OLE_CHANGED_STATE);  // @const win32uiole|OLE_CHANGED_STATE|the item state (open, active, etc.) has changed
  ADD_CONSTANT(OLE_CHANGED_ASPECT); // @const win32uiole|OLE_CHANGED_ASPECT|the item draw aspect has changed
  return 0;
}
示例#5
0
文件: net.c 项目: DakaiTV/DakaiVLC
void luaopen_net_intf( lua_State *L )
{
    lua_newtable( L );
    luaL_register( L, NULL, vlclua_net_intf_reg );
#define ADD_CONSTANT( value )    \
    lua_pushinteger( L, POLL##value ); \
    lua_setfield( L, -2, "POLL"#value );
    ADD_CONSTANT( IN )
    ADD_CONSTANT( PRI )
    ADD_CONSTANT( OUT )
    ADD_CONSTANT( ERR )
    ADD_CONSTANT( HUP )
    ADD_CONSTANT( NVAL )
    lua_setfield( L, -2, "net" );
}
示例#6
0
文件: lua-ev.c 项目: catinred2/levent
LUALIB_API int luaopen_levent_ev_c(lua_State *L) {
    luaL_checkversion(L);

    // call create metatable
    CREATE_METATABLE(loop, L);
    CREATE_METATABLE(io, L);
    CREATE_METATABLE(timer, L);
    CREATE_METATABLE(signal, L);
    CREATE_METATABLE(prepare, L);
    CREATE_METATABLE(check, L);
    CREATE_METATABLE(idle, L);

    luaL_newlib(L, ev_module_methods);

    // add constant
    ADD_CONSTANT(L, EV_READ)
    ADD_CONSTANT(L, EV_WRITE);
    ADD_CONSTANT(L, EV_TIMER);
    ADD_CONSTANT(L, EV_PERIODIC);
    ADD_CONSTANT(L, EV_SIGNAL);
    ADD_CONSTANT(L, EV_CHILD);
    ADD_CONSTANT(L, EV_STAT);
    ADD_CONSTANT(L, EV_IDLE);
    ADD_CONSTANT(L, EV_PREPARE);
    ADD_CONSTANT(L, EV_CHECK);
    ADD_CONSTANT(L, EV_EMBED);
    ADD_CONSTANT(L, EV_FORK);
    ADD_CONSTANT(L, EV_CLEANUP);
    ADD_CONSTANT(L, EV_ASYNC);
    ADD_CONSTANT(L, EV_CUSTOM);
    ADD_CONSTANT(L, EV_ERROR);

    // break
    ADD_CONSTANT(L, EVBREAK_ONE);
    ADD_CONSTANT(L, EVBREAK_ALL);

    // priority
    ADD_CONSTANT(L, EV_MINPRI);
    ADD_CONSTANT(L, EV_MAXPRI);
    return 1;
}
示例#7
0
LUALIB_API int luaopen_levent_socket_c(lua_State *L) {
    luaL_checkversion(L);

    if(luaL_newmetatable(L, SOCKET_METATABLE)) {
        luaL_setfuncs(L, socket_mt, 0);

        luaL_newlib(L, socket_methods);
        lua_setfield(L, -2, "__index");
    }
    lua_pop(L, 1);
    // +end

    luaL_newlib(L, socket_module_methods);
    // address family
    ADD_CONSTANT(L, AF_INET);
    ADD_CONSTANT(L, AF_INET6);

    // socket type
    ADD_CONSTANT(L, SOCK_STREAM);
    ADD_CONSTANT(L, SOCK_DGRAM);

    // protocal type
    ADD_CONSTANT(L, IPPROTO_TCP);
    ADD_CONSTANT(L, IPPROTO_UDP);

    // sock opt
    ADD_CONSTANT(L, SOL_SOCKET);

    ADD_CONSTANT(L, SO_REUSEADDR);
    ADD_CONSTANT(L, SO_LINGER);
    ADD_CONSTANT(L, SO_KEEPALIVE);
    ADD_CONSTANT(L, SO_SNDBUF);
    ADD_CONSTANT(L, SO_RCVBUF);
#ifdef SO_REUSEPORT
    ADD_CONSTANT(L, SO_REUSEPORT);
#endif
#ifdef SO_NOSIGPIPE
    ADD_CONSTANT(L, SO_NOSIGPIPE);
#endif 
#ifdef SO_NREAD
    ADD_CONSTANT(L, SO_NREAD);
#endif
#ifdef SO_NWRITE
    ADD_CONSTANT(L, SO_NWRITE);
#endif
#ifdef SO_LINGER_SEC
    ADD_CONSTANT(L, SO_LINGER_SEC);
#endif
    return 1;
}
示例#8
0
static int AddConstants(PyObject *module)
{
	int rc;
	ADD_CONSTANT(CF_TEXT);
	ADD_CONSTANT(CF_BITMAP);
	ADD_CONSTANT(CF_METAFILEPICT);
	ADD_CONSTANT(CF_SYLK);
	ADD_CONSTANT(CF_DIF);
	ADD_CONSTANT(CF_TIFF);
	ADD_CONSTANT(CF_OEMTEXT);
	ADD_CONSTANT(CF_DIB);
	ADD_CONSTANT(CF_PALETTE);
	ADD_CONSTANT(CF_PENDATA);
	ADD_CONSTANT(CF_RIFF);
	ADD_CONSTANT(CF_WAVE);
	ADD_CONSTANT(CF_UNICODETEXT);
	ADD_CONSTANT(CF_ENHMETAFILE);
	ADD_CONSTANT(CF_HDROP);
	ADD_CONSTANT(CF_LOCALE);
	ADD_CONSTANT(CF_DIBV5);
	ADD_CONSTANT(CF_MAX);
	ADD_CONSTANT(CF_OWNERDISPLAY);
	ADD_CONSTANT(CF_DSPTEXT);
	ADD_CONSTANT(CF_DSPBITMAP);
	ADD_CONSTANT(CF_DSPMETAFILEPICT);
	ADD_CONSTANT(CF_DSPENHMETAFILE);
	return 0;
}