octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [changeset] property value not paired with name in __add_datasource_


From: David Bateman
Subject: Re: [changeset] property value not paired with name in __add_datasource__.m
Date: Mon, 01 Sep 2008 15:35:24 +0200
User-agent: Thunderbird 2.0.0.16 (X11/20080725)

Ben Abbott wrote:

On Sep 1, 2008, at 9:06 AM, Ben Abbott wrote:

The script __add_datasource__ does not preserve the property values.

I'm confused as to how __add_datasource__ is intended to work. Is this behavior correct?

If yours works properly (different, I assume), perhaps our sources are out of sync?

Ben

I'm presently unable to pull from jwe's archive :-(

To apply David's patch I edited the sources myself. My archive is now a bit of a mess :-(

In any event, I have a solution (I think). The functioning code for *my* __add_datasource__.m is below. I've modified line 37. It was "while (i < numel (varargin))".

David, the test plot you suggested works now. Is my inferred solution proper?

 21 function newargs = __add_datasource__ (fcn, h, data, varargin)
 22
 23   if (nargin < 3)
 24     error ("internal error");
 25   endif
 26
 27   if (ischar (data))
 28     data = {data};
 29   endif
 30
 31   for i = 1 : numel (data)
 32     addproperty (strcat (data{i}, "datasource"), h, "string", "");
 33   endfor
 34
 35   i = 1;
 36   newargs = {};
 37   while (i <= numel (varargin))
 38     arg = varargin{i++};
39 if (ischar (arg) && length (arg > 1) && strcmpi (arg(2:end), "datasource"))
 40       arg = tolower (arg);
 41       val = varargin{i++};
 42       if (ischar (val))
 43         set (h, arg, val);
 44       else
 45         error ("%s: expecting data source to be a string", fcn);
 46       endif
 47     else
 48       newargs{end + 1} = arg;
 49     endif
 50   endwhile
 51 endfunction

Ben



Ok, we are out of sync.. My __add_datasource__ reads..

function newargs = __add_datasource__ (fcn, h, data, varargin)

 if (nargin < 3)
   error ("internal error");
 endif

 if (ischar (data))
   data = {data};
 endif

 for i = 1 : numel (data)
   addproperty (strcat (data{i}, "datasource"), h, "string", "");
 endfor

 i = 0;
 newargs = {};
 while (i < numel (varargin))
   arg = varargin{++i};
   if (i != numel(varargin) && ischar (arg) &&
   length (arg > 1) && strcmpi (arg(2:end), "datasource"))
     arg = tolower (arg);
     val = varargin{++i};
     if (ischar (val))
   set (h, arg, val);
     else
   error ("%s: expecting data source to be a string", fcn);
     endif
   else
     newargs{end + 1} = arg;
   endif
 endwhile
endfunction

As you say I can't check what John actually has in his repository as I can't get to it at the moment.

D.


--
David Bateman                                address@hidden
Motorola Labs - Paris +33 1 69 35 48 04 (Ph) Parc Les Algorithmes, Commune de St Aubin +33 6 72 01 06 33 (Mob) 91193 Gif-Sur-Yvette FRANCE +33 1 69 35 77 01 (Fax) The information contained in this communication has been classified as: [x] General Business Information [ ] Motorola Internal Use Only [ ] Motorola Confidential Proprietary



reply via email to

[Prev in Thread] Current Thread [Next in Thread]