From: Jo-Philipp Wich Date: Thu, 28 Oct 2010 17:26:48 +0000 (+0000) Subject: libs/core: implement substate() in uci model for creating bound state cursors X-Git-Tag: 0.10.0~567 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=21de97b23523aa365c929ce72a0fbeee7ba7b333;p=oweals%2Fluci.git libs/core: implement substate() in uci model for creating bound state cursors --- 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