From 21de97b23523aa365c929ce72a0fbeee7ba7b333 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Thu, 28 Oct 2010 17:26:48 +0000 Subject: [PATCH] libs/core: implement substate() in uci model for creating bound state cursors --- libs/core/luasrc/model/uci.lua | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/libs/core/luasrc/model/uci.lua b/libs/core/luasrc/model/uci.lua index 66bd0a026..46b0db8d8 100644 --- a/libs/core/luasrc/model/uci.lua +++ b/libs/core/luasrc/model/uci.lua @@ -227,6 +227,32 @@ function Cursor._affected(self, configlist) return reloadlist end +--- Create a sub-state of this cursor. The sub-state is tied to the parent +-- curser, means it the parent unloads or loads configs, the sub state will +-- do so as well. +-- @return UCI state cursor tied to the parent cursor +function Cursor.substate(self) + Cursor._substates = Cursor._substates or { } + Cursor._substates[self] = Cursor._substates[self] or cursor_state() + return Cursor._substates[self] +end + +local _load = Cursor.load +function Cursor.load(self, ...) + if Cursor._substates and Cursor._substates[self] then + _load(Cursor._substates[self], ...) + end + return _load(self, ...) +end + +local _unload = Cursor.unload +function Cursor.unload(self, ...) + if Cursor._substates and Cursor._substates[self] then + _unload(Cursor._substates[self], ...) + end + return _unload(self, ...) +end + --- Add an anonymous section. -- @class function -- 2.11.0