Mercurial > octave-nkf
view .hgsubstate @ 15913:8521321604df classdef
Initial support for object array semantic.
* libinterp/octave-value/ov-classdef.h (class cdef_object_array): New class.
(cdef_object_rep::empty_clone, cdef_object_rep::copy,
cdef_object_rep::make_array, cdef_object_rep::is_array,
cdef_object_rep::array_value): New methods.
(cdef_object::empty_clone, cdef_object::make_array, cdef_object::copy,
cdef_object::is_array, cdef_object::array_value): Likewise.
(cdef_object_base::empty_clone, cdef_object_base::make_array): Likewise.
(handle_cdef_object::copy): Likewise.
(value_cdef_object::copy): Likewise.
(cdef_class::cdef_class_rep::copy, cdef_property::cdef_property_rep::copy,
cdef_method::cdef_method_rep::copy, cdef_package::cdef_package_rep::copy):
Likewise.
(handle_cdef_object::handle_cdef_object): New copy constructor.
(cdef_object::make_unique): New method.
(cdef_object::subsasgn): Use it.
(cdef_class::cdef_class_rep::meta): New member.
(cdef_class::cdef_class_rep::cdef_class_rep): Initialize it.
(cdef_class::cdef_class_rep::mark_as_meta_class,
cdef_class::cdef_class_rep::is_meta): Use and manipulate it.
(cdef_class::mark_as_meta_class, cdef_class::is_meta): Likewise.
(cdef_class::cdef_class_rep::construct_object,
cdef_class::cdef_class_rep::is_abstract, cdef_class::cdef_class_rep::is_sealed):
New methods.
(cdef_class::construct_object, cdef_class::is_abstract, cdef_class::is_sealed):
Likewise.
(cdef_class::cdef_class_rep::cdef_class_rep): New copy constructor.
(cdef_property::cdef_property_rep::default_value): Remove member.
(cdef_property::cdef_property_rep::get_value ()): Use "DefaultValue" slot.
(cdef_property::cdef_property_rep::set_value (octave_value)): Remove method.
(cdef_property::set_value (octave_value)): Likewise.
(cdef_property::cdef_property_rep::cdef_property_rep): New copy constructor.
(cdef_method::cdef_method_rep::cdef_method_rep): Likewise.
(cdef_package::cdef_package_rep::cdef_package_rep): Likewise.
(octave_classdef::empty_clone): Call cdef_object::empty_clone.
(octave_classdef::undef_subsasgn): New method.
(class cdef_property, class cdef_method, class cdef_package): Mark cdef_class
as friend.
* libinterp/octave-value/ov-classdef.cc: Include Array.cc.
(make_class): Initialize "Abstract" property. Do not register classes with
empty name.
(make_meta_class): New static function.
(make_method): Check whether function object is valid.
(make_package): Do not register packages with empty name.
(octave_classdef::undef_subsasgn): New method.
(class cdef_object_array): New class.
(cdef_class::cdef_class_rep::cdef_class_rep): Initialize meta.
(cdef_class::cdef_class_rep::find_methods,
cdef_class::cdef_class_rep::find_names): Use cdef_method::is_constructor
instead of relying on the method name.
(cdef_class::cdef_class_rep::construct_object): New method.
(cdef_class::cdef_class_rep::construct): Use it.
(install_classdef): Use make_meta_class. Create "Abstract" property for
class meta.class.
author | Michael Goffioul <michael.goffioul@gmail.com> |
---|---|
date | Tue, 08 Jan 2013 12:34:30 -0500 |
parents | 44f30dcd87e0 |
children | d2774d202323 |