# HG changeset patch # User Michael Goffioul # Date 1358048497 18000 # Node ID da4cd4ab36db33ffc4bf9f1ad65a74be800cd312 # Parent 0cbac4d3a81c5ac034e826562de403c27cc13d95 Report correct size for object of classdef objects. * libinterp/octave-value/ov-classdef.h (cdef_object_rep::dims): New method. (cdef_object::dims): Likewise. (cdef_object_scalar::dims, cdef_object_array::dims): Likewise. (octave_classdef::dims): Use it. (octave_classdef::print_raw): Report array of objects as such. diff --git a/libinterp/octave-value/ov-classdef.h b/libinterp/octave-value/ov-classdef.h --- a/libinterp/octave-value/ov-classdef.h +++ b/libinterp/octave-value/ov-classdef.h @@ -165,6 +165,8 @@ destroy (); } + virtual dim_vector dims (void) const { return dim_vector (); } + protected: /* reference count */ octave_refcount refcount; @@ -228,6 +230,8 @@ cdef_object empty_clone (void) const { return cdef_object (rep->empty_clone ()); } + dim_vector dims (void) const { return rep->dims (); } + cdef_object make_array (void) const { return cdef_object (rep->make_array ()); } @@ -355,6 +359,8 @@ cdef_object_rep* clone (void) const { return new cdef_object_array (*this); } + dim_vector dims (void) const { return array.dims (); } + bool is_valid (void) const { return true; } bool is_array (void) const { return true; } @@ -391,6 +397,8 @@ ~cdef_object_scalar (void) { } + dim_vector dims (void) const { return dim_vector (1, 1); } + void put (const std::string& pname, const octave_value& val) { map.assign (pname, val); } @@ -1234,7 +1242,11 @@ void print_raw(std::ostream& os, bool /* pr_as_read_syntax */ = false) const { - os << object.class_name () << " object"; + if (object.is_array ()) + os << "array (" << object.dims ().str () << ") of " + << object.class_name () << " objects"; + else + os << object.class_name () << " object"; } octave_value_list subsref (const std::string& type, @@ -1258,7 +1270,7 @@ string_vector map_keys (void) const { return object.map_keys (); } - dim_vector dims (void) const { return dim_vector (1, 1); } + dim_vector dims (void) const { return object.dims (); } private: cdef_object object;