本文整理汇总了C++中SystemPath::SerializeToBlob方法的典型用法代码示例。如果您正苦于以下问题:C++ SystemPath::SerializeToBlob方法的具体用法?C++ SystemPath::SerializeToBlob怎么用?C++ SystemPath::SerializeToBlob使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SystemPath
的用法示例。
在下文中一共展示了SystemPath::SerializeToBlob方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: sizeof
template <> void LuaObject<SystemPath>::PushToLua(const SystemPath &o) {
lua_State *l = Lua::manager->GetLuaState();
// get the system path object cache
if (!luaL_getsubtable(l, LUA_REGISTRYINDEX, "SystemPaths")) {
lua_createtable(l, 0, 1);
lua_pushliteral(l, "v");
lua_setfield(l, -2, "__mode");
lua_setmetatable(l, -2);
}
// stack: [SystemPaths]
// push the system path as a blob to use as a key to look up the actual SystemPath object
char key_blob[SystemPath::SizeAsBlob];
o.SerializeToBlob(key_blob);
lua_pushlstring(l, key_blob, sizeof(key_blob)); // [SystemPaths key]
lua_pushvalue(l, -1); // [SystemPaths key key]
lua_rawget(l, -3); // [SystemPaths key value/nil]
if (lua_isnil(l, -1)) {
// [SystemPaths key nil]
lua_pop(l, 1);
// push a new Lua SystemPath object
Register(new (LuaObjectBase::Allocate(sizeof(LuaCopyObject<SystemPath>))) LuaCopyObject<SystemPath>(o));
// store it in the SystemPaths cache, but keep a copy on the stack
lua_pushvalue(l, -1); // [SystemPaths key value value]
lua_insert(l, -4); // [value SystemPaths key value]
lua_rawset(l, -3); // [value SystemPaths]
lua_pop(l, 1); // [value]
} else {
// [SystemPaths key value]
lua_insert(l, -3); // [value SystemPaths key]
lua_pop(l, 2); // [value]
}
}