Mercurial > hg > octave-nkf
changeset 18348:122239398a03
Partial support for operator overload in classdef.
* ov-classdef.h (octave_classdef::is_object): New method.
* ov.h (do_binary_op, do_unary_op): Look for class operator overloads
for classdef objects too.
author | Michael Goffioul <michael.goffioul@gmail.com> |
---|---|
date | Sat, 18 Jan 2014 21:31:53 -0500 |
parents | 81c1edd70bfd |
children | a97ed15d1ea8 |
files | libinterp/octave-value/ov-classdef.h libinterp/octave-value/ov.cc |
diffstat | 2 files changed, 10 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/octave-value/ov-classdef.h +++ b/libinterp/octave-value/ov-classdef.h @@ -1411,6 +1411,8 @@ bool is_map (void) const { return true; } + bool is_object (void) const { return true; } + bool print_as_scalar (void) const { return true; } void print(std::ostream& os, bool pr_as_read_syntax = false) const
--- a/libinterp/octave-value/ov.cc +++ b/libinterp/octave-value/ov.cc @@ -1952,7 +1952,9 @@ int t2 = v2.type_id (); if (t1 == octave_class::static_type_id () - || t2 == octave_class::static_type_id ()) + || t2 == octave_class::static_type_id () + || t1 == octave_classdef::static_type_id () + || t2 == octave_classdef::static_type_id ()) { octave_value_typeinfo::binary_class_op_fcn f = octave_value_typeinfo::lookup_binary_class_op (op); @@ -2208,7 +2210,9 @@ int t2 = v2.type_id (); if (t1 == octave_class::static_type_id () - || t2 == octave_class::static_type_id ()) + || t2 == octave_class::static_type_id () + || t1 == octave_classdef::static_type_id () + || t2 == octave_classdef::static_type_id ()) { octave_value_typeinfo::binary_class_op_fcn f = octave_value_typeinfo::lookup_binary_class_op (op); @@ -2382,7 +2386,8 @@ int t = v.type_id (); - if (t == octave_class::static_type_id ()) + if (t == octave_class::static_type_id () + || t == octave_classdef::static_type_id ()) { octave_value_typeinfo::unary_class_op_fcn f = octave_value_typeinfo::lookup_unary_class_op (op);