# HG changeset patch # User Rik # Date 1355791930 28800 # Node ID 317f4857c1e1f6859ff22c69ad181017b474914d # Parent 87a61a4d8fd28c47da26f5b57736c4c914ecef1e Modify class() to return Java class name, not type name "octave_java". * libinterp/octave-value/ov-class.cc(Fclass): Check object type with is_java, call java_class_name () on java objects. Improve docstring. Add %!test block. diff -r 87a61a4d8fd2 -r 317f4857c1e1 libinterp/octave-value/ov-class.cc --- a/libinterp/octave-value/ov-class.cc Mon Dec 17 16:44:41 2012 -0800 +++ b/libinterp/octave-value/ov-class.cc Mon Dec 17 16:52:10 2012 -0800 @@ -45,6 +45,7 @@ #include "mxarray.h" #include "oct-lvalue.h" #include "ov-class.h" +#include "ov-java.h" #include "ov-fcn.h" #include "ov-usr-fcn.h" #include "pager.h" @@ -1921,13 +1922,14 @@ DEFUN (class, args, , "-*- texinfo -*-\n\ -@deftypefn {Built-in Function} {} class (@var{expr})\n\ -@deftypefnx {Built-in Function} {} class (@var{s}, @var{id})\n\ -@deftypefnx {Built-in Function} {} class (@var{s}, @var{id}, @var{p}, @dots{})\n\ -Return the class of the expression @var{expr} or create a class with\n\ +@deftypefn {Function File} {@var{classname} =} class (@var{obj})\n\ +@deftypefnx {Function File} {} class (@var{s}, @var{id})\n\ +@deftypefnx {Function File} {} class (@var{s}, @var{id}, @var{p}, @dots{})\n\ +Return the class of the object @var{obj} or create a class with\n\ fields from structure @var{s} and name (string) @var{id}. Additional\n\ arguments name a list of parent classes from which the new class is\n\ derived.\n\ +@seealso{typeinfo, isa}\n\ @end deftypefn") { octave_value retval; @@ -1937,9 +1939,17 @@ if (nargin == 0) print_usage (); else if (nargin == 1) - retval = args(0).class_name (); + // Called for class of object + if (! args(0).is_java ()) + retval = args(0).class_name (); + else + { + octave_java *jobj = dynamic_cast(args(0).internal_rep ()); + retval = jobj->java_class_name (); + } else { + // Called as class constructor octave_function *fcn = octave_call_stack::caller (); std::string id = args(1).string_value (); @@ -1996,6 +2006,18 @@ return retval; } +/* +%!assert (class (1.1), "double"); +%!assert (class (single (1.1)), "single"); +%!assert (class (uint8 (1)), "uint8"); +%!testif HAVE_JAVA +%! jobj = javaObject ("java.lang.StringBuffer"); +%! assert (class (jobj), "java.lang.StringBuffer"); + +%% Test Input Validation +%!error class () +*/ + DEFUN (__isa_parent__, args, , "-*- texinfo -*-\n\ @deftypefn {Built-in Function} {} __isa_parent__ (@var{class}, @var{name})\n\