Esempio n. 1
0
	Exported<Actual>::Exported(lua_State *state, typename Exported<Actual>::Method *methods, lua_CFunction func)
		: luaState(state), methodList(methods)
	{
		lua_pushregistry(luaState, CLASS_REGISTRY);
		lua_newcppclass<Actual>(luaState, methodList, func);
		registerIndex = lua_tableinsert(luaState, -2);
		lua_pop(luaState, 1);
	}
Esempio n. 2
0
File: tdoc.c Progetto: nuxlli/wax
static void traverseNodes(TidyDoc doc, lua_State *L, TidyNode node)
{
    TidyNodeType nt = tidyNodeGetType ( node );
    
    switch (nt)
    {
        case TidyNode_Text:
            if ( tidyNodeHasText (doc, node) )
            {
                if ( push_node_text(L, doc, node) == 1 )
                {
                    lua_tableinsert(L);
                }
            }
            break;
        case TidyNode_Start:
        case TidyNode_StartEnd:
            lua_newtable(L);
        
            if ( push_node_attributes(L, node) == 1 )
            {
                lua_pushstring(L, "attr");
                lua_insert(L,-2);
                lua_rawset(L,-3);
            }
            
            lua_pushstring(L,"tag");
            lua_pushstring(L, tidyNodeGetName (node));  
            lua_rawset(L,-3);
            traverseDeeper(doc, L, node);            
            lua_tableinsert(L);            
            break;
        case TidyNode_Root:
            traverseDeeper(doc, L, node);
            break;
        default:
            // ignore. keep gcc compiler happy.
            break;
    }
}
Esempio n. 3
0
	int Exported<Actual>::registerObject(Actual *object)
	{
		lua_pushregistry(luaState, OBJECT_REGISTRY);  // OBJECTS
		lua_boxobject<Actual>(luaState, object);      // OBJECTS, object
		lua_pushregistry(luaState, CLASS_REGISTRY);   // OBJECTS, object, CLASSES
		lua_pushnumber(luaState, registerIndex);      // OBJECTS, object, CLASSES, classIndex
		lua_rawget(luaState, -2);                     // OBJECTS, object, CLASSES, classMeta
		lua_setmetatable(luaState, -3);               // OBJECTS, object, CLASSES
		lua_pop(luaState, 1);                         // OBJECTS, object
		int result = lua_tableinsert(luaState, -2);   // OBJECTS
		lua_pop(luaState, 1);                         // 
		return result;
	}