diff scripts/audio/@audiorecorder/set.m @ 19522:ee3ec3f02358

maint: moved @audiorecorder and @audioplayer folders inside the audio folder
author Vytautas Jančauskas <unaudio@gmail.com>
date Wed, 18 Sep 2013 00:16:28 +0300
parents scripts/@audiorecorder/set.m@e1f98e402a7e
children 77b52b86b419
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/audio/@audiorecorder/set.m	Wed Sep 18 00:16:28 2013 +0300
@@ -0,0 +1,51 @@
+## -*- texinfo -*-
+## @deftypefn{Function File} set (@var{recorderObj}, @var{Name}, @var{Value})
+## Set the value of property specified by @var{Name} to a given @var{Value}.
+## @deftypefnx{Function File} set (@var{recorderObj}, @var{CellOfNames}, @var{CellOfValues})
+## Given a cell array of property names and a cell array of values, set each property to a corresponding value.
+## @deftypefnx{Function File} set (@var{recorderObj}, @var{StructOfProperties})
+## Given a structure where fields are property names, set the value of those properties for an audiorecorder object to corresponding values.
+## @deftypefnx{Function File} @var{settableProperties} = set (@var{recorderObj})
+## Returns a structure of settable properties.
+## @end deftypefn
+
+function settable = set (varargin)
+  if nargin < 1 || nargin > 3
+    print_usage();
+  endif
+  recorder = struct (varargin{1}).recorder;
+  if nargin == 1
+    settable.SampleRate = {};
+    settable.Tag = {};
+    settable.UserData = {};
+  elseif nargin == 2
+    for [value, property] = varargin{2}
+      setproperty (recorder, property, value);
+    endfor
+  elseif nargin == 3
+    if iscell (varargin{2})
+      index = 1;
+      for property = varargin{2}
+        setproperty (recorder, char(property), varargin{3}{index});
+        index = index + 1;
+      endfor
+    else
+      setproperty (recorder, varargin{2}, varargin{3});
+    endif
+  else
+    error ('audiorecorder: wrong number of arguments to the set method');
+  endif
+endfunction
+
+function setproperty (recorder, property, value)
+  switch property
+    case 'SampleRate'
+      __recorder_set_fs__ (recorder, value);
+    case 'Tag'
+      __recorder_set_tag__ (recorder, value);
+    case 'UserData'
+      __recorder_set_userdata__ (recorder, value);
+    otherwise
+      error ('audiorecorder: no such property or the property specified is read-only');
+  endswitch
+endfunction
\ No newline at end of file