summaryrefslogtreecommitdiffstats
path: root/acf/model/root.lua
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-06-28 07:00:01 +0300
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-06-28 13:40:05 +0300
commit00166624a85afdbe24722c7e2e3320316cfbae93 (patch)
treef9484b7eb7c2c889c048b318a402d19a7e8ac5ff /acf/model/root.lua
parent37396d77b3e911b1c5351ab56ff3ec5797e2f62d (diff)
downloadaconf-00166624a85afdbe24722c7e2e3320316cfbae93.tar.bz2
aconf-00166624a85afdbe24722c7e2e3320316cfbae93.tar.xz
prevent deletion of objects referred to by other objects
Diffstat (limited to 'acf/model/root.lua')
-rw-r--r--acf/model/root.lua13
1 files changed, 5 insertions, 8 deletions
diff --git a/acf/model/root.lua b/acf/model/root.lua
index d17f8a9..2d3b2a0 100644
--- a/acf/model/root.lua
+++ b/acf/model/root.lua
@@ -40,7 +40,7 @@ function topology(addr, create)
else addr = pth.split(addr) end
local function defaults(top)
- return util.setdefaults(top, {members={}, paths={}})
+ return util.setdefaults(top, {members={}, paths={}, referrers={}})
end
while #addr > 0 do
@@ -77,14 +77,11 @@ function register(name, field, params)
table.insert(top.paths, record.path)
if record.scope then
- set(
- 'scope',
- node.addr(
- root:fetch(
- pth.to_absolute(record.scope, pth.parent(record.path))
- )
- )
+ local scope = node.addr(
+ root:fetch(pth.to_absolute(record.scope, pth.parent(record.path)))
)
+ set('scope', scope)
+ table.insert(topology(scope, true).referrers, record.path)
end
end
end