Mercurial > octave-nkf
comparison scripts/control/system/cellidx.m @ 7136:59dcf01bb3e3
[project @ 2007-11-08 20:18:25 by jwe]
author | jwe |
---|---|
date | Thu, 08 Nov 2007 20:18:26 +0000 |
parents | a1dbe9d80eee |
children |
comparison
equal
deleted
inserted
replaced
7135:8aa770b6c5bf | 7136:59dcf01bb3e3 |
---|---|
32 ## an error message is returned in @var{errmsg}. If only one output | 32 ## an error message is returned in @var{errmsg}. If only one output |
33 ## argument is requested, then @var{cellidx} prints @var{errmsg} to the | 33 ## argument is requested, then @var{cellidx} prints @var{errmsg} to the |
34 ## screen and exits with an error. | 34 ## screen and exits with an error. |
35 ## @end deftypefn | 35 ## @end deftypefn |
36 | 36 |
37 function [idxvec,errmsg] = cellidx(listvar,strlist) | 37 function [idxvec,errmsg] = cellidx (listvar, strlist) |
38 | 38 |
39 if(nargin != 2) | 39 if (nargin != 2) |
40 print_usage (); | 40 print_usage (); |
41 endif | 41 endif |
42 | 42 |
43 if(ischar(strlist)) | 43 if (ischar (strlist)) |
44 tmp = strlist; | 44 tmp = strlist; |
45 strlist = {}; | 45 strlist = {}; |
46 for kk=1:rows(tmp) | 46 for kk = 1:rows(tmp) |
47 strlist{kk} = deblank(tmp(kk,:)); | 47 strlist{kk} = deblank (tmp(kk,:)); |
48 endfor | 48 endfor |
49 endif | 49 endif |
50 | 50 |
51 if(ischar(listvar)) | 51 if (ischar (listvar)) |
52 tmp = listvar; | 52 tmp = listvar; |
53 listvar = {}; | 53 listvar = {}; |
54 for kk=1:rows(tmp) | 54 for kk = 1:rows(tmp) |
55 listvar{kk} = deblank(tmp(kk,:)); | 55 listvar{kk} = deblank (tmp(kk,:)); |
56 endfor | 56 endfor |
57 endif | 57 endif |
58 | 58 |
59 ## initialize size of idxvec (for premature return) | 59 ## initialize size of idxvec (for premature return) |
60 idxvec = zeros(length(strlist),1); | 60 idxvec = zeros (length(strlist), 1); |
61 | 61 |
62 errmsg = ""; | 62 errmsg = ""; |
63 if(!is_signal_list(listvar)) | 63 if (! is_signal_list (listvar)) |
64 errmsg = "listvar must be a list of strings"; | 64 errmsg = "listvar must be a list of strings"; |
65 elseif(!is_signal_list(strlist)) | 65 elseif (! is_signal_list (strlist)) |
66 errmsg = "strlist must be a list of strings"; | 66 errmsg = "strlist must be a list of strings"; |
67 endif | 67 endif |
68 | 68 |
69 if(length(errmsg)) | 69 if (length (errmsg)) |
70 if(nargout < 2) error(errmsg); | 70 if (nargout < 2) |
71 else return; | 71 error (errmsg); |
72 else | |
73 return; | |
74 endif | |
72 endif | 75 endif |
73 endif | |
74 | 76 |
75 nsigs = length(listvar); | 77 nsigs = length(listvar); |
76 for idx = 1:length(strlist) | 78 for idx = 1:length(strlist) |
77 signame = strlist{idx}; | 79 signame = strlist{idx}; |
78 for jdx = 1:nsigs | 80 for jdx = 1:nsigs |
79 if( strcmp(signame,listvar{jdx}) ) | 81 if (strcmp (signame, listvar{jdx}) ) |
80 if(idxvec(idx) != 0) | 82 if (idxvec(idx) != 0) |
81 warning("Duplicate signal name %s (%d,%d)\n", ... | 83 warning ("Duplicate signal name %s (%d,%d)\n", |
82 listvar{jdx},jdx,idxvec(idx)); | 84 listvar{jdx}, jdx, idxvec(idx)); |
85 else | |
86 idxvec(idx) = jdx; | |
87 endif | |
88 endif | |
89 endfor | |
90 if (idxvec(idx) == 0) | |
91 errmsg = sprintf ("Did not find %s", signame); | |
92 if (nargout == 1) | |
93 error (errmsg); | |
83 else | 94 else |
84 idxvec(idx) = jdx; | 95 break; |
85 endif | 96 endif |
86 endif | 97 endif |
87 endfor | 98 endfor |
88 if(idxvec(idx) == 0) | |
89 errmsg = sprintf("Did not find %s",signame); | |
90 if(nargout == 1) | |
91 error(errmsg); | |
92 else | |
93 break | |
94 end | |
95 endif | |
96 endfor | |
97 | 99 |
98 endfunction | 100 endfunction |