Mercurial > hg > octave-lyh
diff examples/structdemo.cc @ 6572:8e7148b84b59
[project @ 2007-04-25 04:13:44 by jwe]
author | jwe |
---|---|
date | Wed, 25 Apr 2007 04:14:49 +0000 |
parents | |
children | 4270ded9ddc6 |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/examples/structdemo.cc @@ -0,0 +1,37 @@ +#include <octave/oct.h> +#include <octave/ov-struct.h> + +DEFUN_DLD (structdemo, args, , "Struct demo.") +{ + int nargin = args.length (); + octave_value retval; + + if (nargin != 2) + print_usage (); + else + { + Octave_map arg0 = args(0).map_value (); + std::string arg1 = args(1).string_value (); + + if (! error_state && arg0.contains (arg1)) + { + // The following two lines might be written as + // octave_value tmp; + // for (Octave_map::iterator p0 = arg0.begin() ; + // p0 != arg0.end(); p0++ ) + // if (arg0.key (p0) == arg1) + // { + // tmp = arg0.contents (p0) (0); + // break; + // } + // though using seek is more concise. + Octave_map::const_iterator p1 = arg0.seek (arg1); + octave_value tmp = arg0.contents(p1)(0); + Octave_map st; + st.assign ("selected", tmp); + retval = octave_value (st); + } + } + return retval; +} +