changeset 18306: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	Sat Jan 18 15:31:23 2014 -0500
+++ b/libinterp/octave-value/ov-classdef.h	Sat Jan 18 21:31:53 2014 -0500
@@ -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	Sat Jan 18 15:31:23 2014 -0500
+++ b/libinterp/octave-value/ov.cc	Sat Jan 18 21:31:53 2014 -0500
@@ -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);