public void SetGetter(string name, LuaRef getter) { if (name == "Item") { SetMemberFunction(LunaNative.___get_indexed, getter); } else { meta.RawGet(LunaNative.___getters).RawSet(name, getter); } }
public static string GetMemberName(LuaRef parent, string name) { string full_name = parent.RawGet(___type, "<unknown>"); full_name += '.'; full_name += name; return(full_name); }
public void SetReadOnly(string name) { LuaRef meta_class = meta; string full_name = LunaNative.GetMemberName(meta_class, name); LuaRef err = LuaRef.CreateFunctionWith(State, LunaNative.ErrorReadOnly, full_name); meta_class.RawGet(LunaNative.___setters).RawSet(name, err); }
public SharpModule(SharpModule parent, string name) : base(parent) { LuaRef parentMeta = parent.meta; LuaRef luaref = parentMeta.RawGet(name) as LuaRef; if (luaref) { meta = luaref; return; } this.parent = parent; meta = LunaNative.create_module(parentMeta.State, parentMeta, name); Name = name; }
public static LuaRef CreateClass(LuaRef module, string name, Type classType, Type superClass, LuaNativeFunction dctor) { LuaRef classref = module.RawGet <LuaRef, string>(name); if (classref) { return(classref); } var meta = LunaNative.create_class(module.State, module, name, classType, dctor); if (superClass != null) { LuaRef registry = new LuaRef(module.State, LUA_REGISTRYINDEX); int superClassID = SharpObject.TypeID(superClass); LuaRef super = registry.RawGet <LuaRef>(superClassID); meta.RawSet(LunaNative.___super, super); } return(meta); }
public static string GetFullName(LuaRef parent, string name) { string full_name = parent.RawGet(___type, ""); if (!string.IsNullOrEmpty(full_name)) { int pos = full_name.IndexOf('<'); if (pos != -1) { full_name.Remove(0, pos + 1); } pos = full_name.LastIndexOf('>'); if (pos != -1) { full_name.Remove(pos); } full_name += '.'; } full_name += name; return(full_name); }
public LuaRef GetGlobal(string fullPath) { return(_global.RawGet(fullPath)); }