Mercurial Hosting > luan
diff src/luan/modules/Boot.luan @ 1578:c922446f53aa
immutable threading
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 08 Feb 2021 14:16:19 -0700 |
parents | 81288d8b20a2 |
children | 2975c932864d |
line wrap: on
line diff
--- a/src/luan/modules/Boot.luan Sun Jan 31 16:04:39 2021 -0700 +++ b/src/luan/modules/Boot.luan Mon Feb 08 14:16:19 2021 -0700 @@ -14,6 +14,10 @@ local LuanUrl = require "java:luan.modules.url.LuanUrl" local LuanJava = require "java:luan.Luan" local LuanTable = require "java:luan.LuanTable" +local get_local_cloned = BasicLuan.get_local_cloned +local set_local_cloned = BasicLuan.set_local_cloned +local is_immutable = BasicLuan.is_immutable +local raw_set = BasicLuan.raw_set local Boot = {} @@ -38,6 +42,19 @@ Boot.no_security = no_security +local local_metatable = { + __index = get_local_cloned +} +function local_metatable.__new_index(tbl,key,value) + if is_immutable(tbl) then + set_local_cloned(tbl,key,value) + else + raw_set(tbl,key,value) + end +end +Boot.local_metatable = local_metatable + + local function new_LuanIn(io) local this = {} this.java = io @@ -87,6 +104,7 @@ end local schemes = {} +set_metatable(schemes,local_metatable) --LuanTable.setSecurity(schemes,"schemes") function schemes.null(path)