changeset 9445:675c4333424b octave-forge

control: use assignin for set command, this allows set (sys, "key", value) without return value
author paramaniac
date Thu, 16 Feb 2012 07:12:40 +0000
parents e8b75df0bf70
children 69ee0bc898eb
files main/control/inst/@lti/set.m
diffstat 1 files changed, 6 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/main/control/inst/@lti/set.m	Wed Feb 15 21:15:20 2012 +0000
+++ b/main/control/inst/@lti/set.m	Thu Feb 16 07:12:40 2012 +0000
@@ -41,12 +41,7 @@
       retsys = sys;      # would lead to unwanted output when using
     endif                # set (sys)
 
-  elseif (nargout == 0)  # set (sys, "prop1", val1, ...)
-
-    warning ("lti: set: use sys = get (sys, 'property1', ...) to save changes");
-    warning ("          octave does not support pass by reference");
-
-  else                   # sys = set (sys, "prop1", val1, ...)
+  else                   # set (sys, "prop1", val1, ...), sys = set (sys, "prop1", val1, ...)
 
     if (rem (nargin-1, 2))
       error ("lti: set: properties and values must come in pairs");
@@ -99,7 +94,11 @@
       endswitch
     endfor
 
-    retsys = sys;
+    if (nargout == 0)    # set (sys, "prop1", val1, ...)
+      assignin ("caller", inputname (1), sys);
+    else                 # sys = set (sys, "prop1", val1, ...)
+      retsys = sys;
+    endif
 
   endif