size_t XMLReader::PushNamespaces() { size_t previousMappingSize = mNamespaceMappings.size(); NamespaceMapping mapping; for (std::vector<Attribute>::iterator i = mAttributes.begin(); i != mAttributes.end(); ++i) { if (Equals(i->mName, "xmlns")) { mapping.mPrefix.clear(); mapping.mNamespaceURI = i->mValue; mNamespaceMappings.push_back(mapping); } else if (Equals(i->mPrefix, "xmlns")) { mapping.mPrefix = i->mLocalName; mapping.mNamespaceURI = i->mValue; mNamespaceMappings.push_back(mapping); } } LookupNamespace(mCurrentName); for (std::vector<Attribute>::iterator i = mAttributes.begin(); i != mAttributes.end(); ++i) { LookupNamespace(*i); } return previousMappingSize; }
static int lu_ts_func(lua_State *L) { const char *nsName = luaL_checkstring(L, 1); const char *fnName = luaL_checkstring(L, 2); if (!strcmp(nsName, "")) nsName = NULL; char *ns = (char *)LookupNamespace(nsName); char *nsEntry = (char *)Namespace__lookup((int)ns, (int)StringTableInsert(StringTable, fnName, false)); if (nsEntry == NULL) { luaL_error(L, "unknown function %s::%s", nsName, fnName); return 0; } lua_pushlightuserdata(L, nsEntry); lua_pushcclosure(L, lu_ts_func_call, 1); return 1; }