aboutsummaryrefslogtreecommitdiff
path: root/ch_core/vgroups.lua
diff options
context:
space:
mode:
Diffstat (limited to 'ch_core/vgroups.lua')
-rw-r--r--ch_core/vgroups.lua32
1 files changed, 32 insertions, 0 deletions
diff --git a/ch_core/vgroups.lua b/ch_core/vgroups.lua
new file mode 100644
index 0000000..5b43fd8
--- /dev/null
+++ b/ch_core/vgroups.lua
@@ -0,0 +1,32 @@
+ch_core.open_submod("vgroups")
+
+local vgroups = {}
+local private_vgroups = {}
+
+function ch_core.create_private_vgroup(vgroup, tbl)
+ if vgroups[vgroup] then
+ error("Vgroup "..vgroup.." demanded as private already exists!")
+ end
+ local result = tbl or {}
+ vgroups[vgroup] = result
+ private_vgroups[vgroup] = true
+ return result
+end
+
+function ch_core.get_shared_vgroup(vgroup)
+ if private_vgroups[vgroup] then
+ error("Vgroup "..vgroup.." is private!")
+ end
+ local result = vgroups[vgroup]
+ if not result then
+ result = {}
+ vgroups[vgroup] = result
+ end
+ return result
+end
+
+function ch_core.try_read_vgroup(vgroup)
+ return vgroups[vgroup]
+end
+
+ch_core.close_submod("vgroups")