Mercurial > octave-nkf
diff libinterp/octave-value/ov-classdef.cc @ 19137:56bc1464ec59
Implement "isa" for classdef objects.
* ov.h (octave_value::is_instance_of): New method.
* ov-base.h (octave_base_value::is_instance_of): Likewise.
* ov-class.h (octave_class::is_instance_of): New method declaration.
* ov-class.cc (octave_class::is_instance_of): Implement it with
find_parent_class.
* ov-classdef.h (octave_classdef::is_instance_of): New method
declaration.
* ov-classdef.cc (octave_classdef::is_instance_of): Implement it
with lookup_class and is_superclass.
author | Michael Goffioul <michael.goffioul@gmail.com> |
---|---|
date | Sat, 20 Sep 2014 12:43:25 -0400 |
parents | 1f36981ab323 |
children | e0a7718ac085 |
line wrap: on
line diff
--- a/libinterp/octave-value/ov-classdef.cc Sat Sep 20 06:31:27 2014 -0700 +++ b/libinterp/octave-value/ov-classdef.cc Sat Sep 20 12:43:25 2014 -0400 @@ -1088,6 +1088,17 @@ octave_base_value::print_with_name (os, name, print_padding); } +bool +octave_classdef::is_instance_of (const std::string& cls_name) const +{ + cdef_class cls = lookup_class (cls_name, false, false); + + if (cls.ok ()) + return is_superclass (cls, object.get_class ()); + + return false; +} + //---------------------------------------------------------------------------- class octave_classdef_meta : public octave_function