0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019 function varargout = display2(varargin)
0020
0021
0022 if utils.helper.isinfocall(varargin{:})
0023 varargout{1} = getInfo(varargin{3});
0024 return
0025 end
0026
0027 objs = utils.helper.collect_objects(varargin(:), 'param');
0028
0029 txt = {};
0030
0031 for i=1:numel(objs)
0032 banner = sprintf('---- param %d ----', i);
0033 txt{end+1} = banner;
0034
0035
0036 name = objs(i).key;
0037 v = objs(i).val;
0038
0039 txt{end+1} = ['key: ' name];
0040
0041
0042 txt = main(txt, 'val: ', v);
0043
0044 banner_end(1:length(banner)) = '-';
0045 txt{end+1} = banner_end;
0046
0047 end
0048
0049 if nargout == 0
0050 char(txt)
0051 end
0052
0053 varargout{1} = txt;
0054
0055 end
0056
0057
0058
0059
0060
0061 function txt = main(txt, prefix, val)
0062
0063
0064 if isstruct(val)
0065
0066 fields = fieldnames(val);
0067 txt{end+1} = [prefix, 'structure'];
0068 for ii=1:length(fields)
0069 field = fields{ii};
0070 prefix(1:end) = ' ';
0071 new_prefix = [prefix field ': '];
0072 txt = main(txt, new_prefix, val.(field));
0073 end
0074
0075
0076 elseif iscell(val)
0077
0078 if prefix(end) == '[', prefix = prefix(1:end-1); end
0079
0080 txt{end+1} = sprintf('%scell-array {%dx%d}', prefix, size(val,1), size(val,2));
0081 for ii = 1:size(val,1)
0082 for jj = 1:size(val,2)
0083 prefix(1:end) = ' ';
0084 if ischar(val{ii,jj})
0085 new_prefix = sprintf('%s{%d,%d} ', prefix, ii, jj);
0086 else
0087 new_prefix = sprintf('%s{%d,%d} ', prefix, ii, jj);
0088 end
0089 txt = main(txt, new_prefix, val{ii,jj});
0090 end
0091 end
0092
0093 else
0094 if numel(val) > 1
0095 txt = atomic_value(txt, prefix, val, true);
0096 else
0097 txt = atomic_value(txt, prefix, val, false);
0098 end
0099 end
0100 end
0101
0102 function txt = atomic_value(txt, prefix, val, disp_class_only)
0103
0104
0105 if ischar(val)
0106 if length(val) > 45
0107 txt{end+1} = [prefix '''' val(1:45) ' ...'''];
0108 else
0109 txt{end+1} = [prefix '''' val ''''];
0110 end
0111
0112
0113 elseif islogical(val)
0114 if val == true
0115 txt{end+1} = [prefix 'true'];
0116 else
0117 txt{end+1} = [prefix 'false'];
0118 end
0119
0120
0121 elseif isnumeric(val)
0122 sval = '';
0123 if size(val,1) == 1 || size(val,2) == 1
0124 for j=1:min(length(val), 10)
0125 sval = [sval sprintf('%g ', val(j))];
0126 end
0127 if length(val) > 10
0128 sval = [sval '...'];
0129 end
0130 if sval(end) == ' '
0131 sval = sval(1:end-1);
0132 end
0133 elseif isempty(val)
0134 if prefix(end) == '[', prefix = prefix(1:end-1); end
0135 sval = '[]';
0136 else
0137 sval = sprintf('matrix [%dx%d]', size(val,1), size(val,2));
0138 end
0139 txt{end+1} = [prefix sval];
0140
0141
0142 elseif isa(val, 'sym')
0143 txt{end+1} = [prefix char(val)];
0144
0145 elseif isobject(val)
0146 sval = display(val);
0147
0148 for j=1:numel(sval)
0149 txt{end+1} = [prefix sval{j}];
0150 end
0151
0152
0153
0154
0155
0156
0157
0158
0159
0160
0161
0162
0163
0164
0165
0166
0167
0168
0169
0170
0171
0172
0173
0174
0175
0176
0177
0178
0179
0180
0181
0182
0183
0184
0185
0186
0187
0188
0189
0190
0191
0192
0193
0194
0195
0196
0197
0198
0199
0200
0201 elseif isjava(val)
0202 txt{end+1} = [prefix class(val)];
0203
0204 else
0205 if isobject(val)
0206 txt{end+1} = sprintf('%s<%s>', prefix, class(val));
0207 else
0208 txt{end+1} = sprintf('%s<unknown type>', prefix);
0209 end
0210 end
0211
0212 end
0213
0214
0215
0216
0217
0218
0219
0220
0221
0222
0223
0224
0225 function ii = getInfo(varargin)
0226 if nargin == 1 && strcmpi(varargin{1}, 'None')
0227 sets = {};
0228 pl = [];
0229 else
0230 sets = {'Default'};
0231 pl = getDefaultPlist;
0232 end
0233
0234 ii = minfo(mfilename, 'param', '', utils.const.categories.output, '$Id: display2.m,v 1.4 2008/09/04 15:29:31 ingo Exp $', sets, pl);
0235 end
0236
0237
0238
0239
0240
0241
0242
0243
0244
0245
0246
0247
0248 function plo = getDefaultPlist()
0249 plo = plist();
0250 end
0251
0252
0253
0254
0255
0256
0257
0258
0259
0260