Home > classes > @param > subsref.m

subsref

PURPOSE ^

SUBSREF SUBSREF Define field name indexing for param objects.

SYNOPSIS ^

function b = subsref(p, index)

DESCRIPTION ^

 SUBSREF SUBSREF Define field name indexing for param objects.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 DESCRIPTION: SUBSREF Define field name indexing for param objects.

 EXAMPLES:

  nesting level == 1
    >>  p       = p_vector(2);
    >>  key     = p.key
    >>  val     = p.val
    >>  version = p.version

  nesting level == 2
    >>  p   = p_vector(1).val
    >>  val = p.val(1)
    >>  val = p.val{1}

 VERSION: $Id: subsref.html,v 1.2 2007/07/10 05:37:11 hewitson Exp $

 HISTORY: 31-01-07 M Hewitson
             Creation

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function b = subsref(p, index)
0002 % SUBSREF SUBSREF Define field name indexing for param objects.
0003 %
0004 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0005 %
0006 % DESCRIPTION: SUBSREF Define field name indexing for param objects.
0007 %
0008 % EXAMPLES:
0009 %
0010 %  nesting level == 1
0011 %    >>  p       = p_vector(2);
0012 %    >>  key     = p.key
0013 %    >>  val     = p.val
0014 %    >>  version = p.version
0015 %
0016 %  nesting level == 2
0017 %    >>  p   = p_vector(1).val
0018 %    >>  val = p.val(1)
0019 %    >>  val = p.val{1}
0020 %
0021 % VERSION: $Id: subsref.html,v 1.2 2007/07/10 05:37:11 hewitson Exp $
0022 %
0023 % HISTORY: 31-01-07 M Hewitson
0024 %             Creation
0025 %
0026 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0027 
0028 b = [];
0029 
0030 switch length(index)
0031   % INFO: p(1)
0032   %       p{1}
0033   %       p.key
0034   %       p.val
0035   %       p.version
0036   case 1   % p(1) or p.key
0037     switch index.type
0038       case '()'
0039         idx = index.subs{1};
0040         b = p(idx);
0041       case '{}'
0042         idx = index.subs{1};
0043         b = p{idx};
0044       case '.'
0045         switch index.subs
0046           case 'key'
0047             b = p.key;
0048           case 'val'
0049             b = p.val;
0050           case 'version'
0051             b = p.version;
0052           otherwise
0053             error('### unknown field for param object.');
0054         end
0055       otherwise
0056         error('### unknown indexing method for param objects.');
0057     end
0058   case 2 % p(1).key
0059 
0060     % INFO: p.val(1)
0061     %       p.val{2}
0062     if index(1).type == '.'
0063       fieldName = index(1).subs;
0064 
0065       if length(p) == 1
0066         eval(sprintf('b = subsref (p.%s, index(2));',fieldName))
0067       else
0068         error(['### output is not defined because the '...
0069                'parameter is a vector or matrix.']);
0070       end
0071 
0072     % INFO: p(1).val
0073     elseif index(1).type == '()'
0074       idx = index(1).subs{1};
0075       switch index(2).subs
0076         case 'key'
0077           b = p(idx).key;
0078         case 'val'
0079           b = p(idx).val;
0080         case 'version'
0081           b = p(idx).version;
0082         otherwise
0083           error('### unknown field for param object.');
0084       end
0085     else
0086       error('### unknown indexing method for parameter objects.');
0087     end
0088 
0089   otherwise
0090     error('### unknown indexing method for parameter objects.');
0091 end
0092 
0093 % END
0094

Generated on Wed 04-Jul-2007 19:03:10 by m2html © 2003