1 ## Copyright (C) 2009 VZLU Prague, a.s., Czech Republic
3 ## This program is free software; you can redistribute it and/or modify it under
4 ## the terms of the GNU General Public License as published by the Free Software
5 ## Foundation; either version 3 of the License, or (at your option) any later
8 ## This program is distributed in the hope that it will be useful, but WITHOUT
9 ## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 ## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
13 ## You should have received a copy of the GNU General Public License along with
14 ## this program; if not, see <http://www.gnu.org/licenses/>.
17 ## @deftypefn{Function File} {d =} subsref (d, s)
18 ## Overloaded subsref for dictionaries.
21 ## Author: Jaroslav Hajek <highegg@gmail.com>
23 function varargout = subsref (d, s)
25 error ("dict: missing index");
34 error ("dict: needs exactly one index");
37 i = lookup (d.keys, ind, "m");
41 error ("key does not exist: %s", ind);
43 elseif (iscellstr (ind))
44 i = lookup (d.keys, ind, "m");
46 e = reshape (d.values (i), size (ind)); # ensure correct shape.
48 ## Report the first non-existing key.
49 error ("key does not exist: %s", ind{find (i == 0, 1)});
52 error ("invalid index");
62 error ("@dict/subsref: invalid property \"%s\"", fld);
65 error ("invalid subscript type");
69 varargout = {subsref(e, s(2:end))};