Mercurial > forge
changeset 9307:7b6980185ff5 octave-forge
quaternion_oo: more informative error messages
author | paramaniac |
---|---|
date | Sat, 31 Dec 2011 07:45:55 +0000 |
parents | 7e68bce1112a |
children | a92b9dc3179e |
files | extra/quaternion_oo/inst/@quaternion/subsasgn.m extra/quaternion_oo/inst/@quaternion/subsref.m |
diffstat | 2 files changed, 12 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/extra/quaternion_oo/inst/@quaternion/subsasgn.m Fri Dec 30 16:42:50 2011 +0000 +++ b/extra/quaternion_oo/inst/@quaternion/subsasgn.m Sat Dec 31 07:45:55 2011 +0000 @@ -24,10 +24,10 @@ function q = subsasgn (q, idx, val) switch (idx(1).type) - case "()" - if (length (idx(1).subs) == 1 && isa (q, "quaternion")) # required by horzcat, vertcat, cat, ... - q(idx(1).subs{:}) = val; - else # general case + case "()" # q(...) = val + if (length (idx(1).subs) == 1 && isa (q, "quaternion")) # required by horzcat, vertcat, cat, ... + q(idx(1).subs{:}) = val; # q = cellfun (@quaternion, varargin) + else # general case val = quaternion (val); w = subsasgn (q.w, idx, val.w); x = subsasgn (q.x, idx, val.x); @@ -36,12 +36,13 @@ q = quaternion (w, x, y, z); endif - case "." + case "." # q.w = val if (! is_real_array (val)) - error ("quaternion: subsasgn: invalid type"); + error ("quaternion: subsasgn: invalid argument type, require real array"); endif if (! size_equal (subsref (q.w, idx(2:end)), val)) - error ("quaternion: subsasgn: invalid size"); + error ("quaternion: subsasgn: invalid argument size [%s], require dimensions [%s]", \ + num2str (size (val), "%d "), num2str (size (subsref (q.w, idx(2:end))), "%d ")); endif switch (tolower (idx(1).subs)) case {"w", "s"} @@ -53,11 +54,11 @@ case {"z", "k"} q.z = subsasgn (q.z, idx(2:end), val); otherwise - error ("quaternion: subsasgn: invalid subscript name"); + error ("quaternion: subsasgn: invalid subscript name '%s'", idx(1).subs); endswitch otherwise - error ("quaternion: subsasgn: under construction"); + error ("quaternion: subsasgn: invalid subscript type '%s'", idx(1).type); endswitch endfunction
--- a/extra/quaternion_oo/inst/@quaternion/subsref.m Fri Dec 30 16:42:50 2011 +0000 +++ b/extra/quaternion_oo/inst/@quaternion/subsref.m Sat Dec 31 07:45:55 2011 +0000 @@ -37,7 +37,7 @@ q.w = zeros (size (q.w)); ret = subsref (q, s(2:end)); otherwise - error ("quaternion: invalid subscript name"); + error ("quaternion: invalid subscript name '%s'", s(1).subs); endswitch case "()" # q(...) @@ -48,7 +48,7 @@ ret = quaternion (w, x, y, z); otherwise - error ("quaternion: invalid subscript type"); + error ("quaternion: invalid subscript type '%s'", s(1).type); endswitch endfunction