summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--libs/core/luasrc/model/uci.lua26
1 files changed, 26 insertions, 0 deletions
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