diff src/ov-typeinfo.cc @ 3203:bc61b0e8d60e

[project @ 1998-10-30 20:26:27 by jwe]
author jwe
date Fri, 30 Oct 1998 20:26:31 +0000
parents 3ac3e8edc258
children c3eed8ac845a
line wrap: on
line diff
--- a/src/ov-typeinfo.cc	Thu Oct 29 20:28:02 1998 +0000
+++ b/src/ov-typeinfo.cc	Fri Oct 30 20:26:31 1998 +0000
@@ -44,6 +44,12 @@
 #include <Array2.cc>
 #include <Array3.cc>
 
+template class Array<unary_op_fcn>;
+template class Array2<unary_op_fcn>;
+
+template class Array<non_const_unary_op_fcn>;
+template class Array2<non_const_unary_op_fcn>;
+
 template class Array<binary_op_fcn>;
 template class Array2<binary_op_fcn>;
 template class Array3<binary_op_fcn>;
@@ -80,6 +86,23 @@
 }
 
 bool
+octave_value_typeinfo::register_unary_op (octave_value::unary_op op,
+					   int t, unary_op_fcn f)
+{
+  return (instance_ok ())
+    ? instance->do_register_unary_op (op, t, f) : false;
+}
+
+bool
+octave_value_typeinfo::register_non_const_unary_op (octave_value::unary_op op,
+						    int t,
+						    non_const_unary_op_fcn f)
+{
+  return (instance_ok ())
+    ? instance->do_register_non_const_unary_op (op, t, f) : false;
+}
+
+bool
 octave_value_typeinfo::register_binary_op (octave_value::binary_op op,
 					   int t1, int t2,
 					   binary_op_fcn f)
@@ -138,6 +161,13 @@
 
       types.resize (len, string ());
 
+      unary_ops.resize (static_cast<int> (octave_value::num_unary_ops),
+			len, static_cast<unary_op_fcn> (0));
+
+      non_const_unary_ops.resize
+	(static_cast<int> (octave_value::num_unary_ops),
+	 len, static_cast<non_const_unary_op_fcn> (0));
+
       binary_ops.resize (static_cast<int> (octave_value::num_binary_ops),
 			 len, len, static_cast<binary_op_fcn> (0));
 
@@ -160,6 +190,24 @@
 }
 
 bool
+octave_value_typeinfo::do_register_unary_op (octave_value::unary_op op,
+					     int t, unary_op_fcn f)
+{
+  unary_ops.checkelem (static_cast<int> (op), t) = f;
+
+  return false;
+}
+
+bool
+octave_value_typeinfo::do_register_non_const_unary_op
+  (octave_value::unary_op op, int t, non_const_unary_op_fcn f)
+{
+  non_const_unary_ops.checkelem (static_cast<int> (op), t) = f;
+
+  return false;
+}
+
+bool
 octave_value_typeinfo::do_register_binary_op (octave_value::binary_op op,
 					      int t1, int t2,
 					      binary_op_fcn f)
@@ -208,6 +256,19 @@
 
 #include <iostream.h>
 
+unary_op_fcn
+octave_value_typeinfo::do_lookup_unary_op (octave_value::unary_op op, int t)
+{
+  return unary_ops.checkelem (static_cast<int> (op), t);
+}
+
+non_const_unary_op_fcn
+octave_value_typeinfo::do_lookup_non_const_unary_op
+  (octave_value::unary_op op, int t)
+{
+  return non_const_unary_ops.checkelem (static_cast<int> (op), t);
+}
+
 binary_op_fcn
 octave_value_typeinfo::do_lookup_binary_op (octave_value::binary_op op,
 					    int t1, int t2)