diff src/ov-typeinfo.cc @ 4640:2d237a76dbdd

[project @ 2003-11-22 11:24:44 by jwe]
author jwe
date Sat, 22 Nov 2003 11:24:44 +0000
parents 87c01a296263
children e95c86d48732
line wrap: on
line diff
--- a/src/ov-typeinfo.cc	Sat Nov 22 04:25:29 2003 +0000
+++ b/src/ov-typeinfo.cc	Sat Nov 22 11:24:44 2003 +0000
@@ -82,10 +82,11 @@
 
 int
 octave_value_typeinfo::register_type (const std::string& t_name,
-				      const std::string& c_name)
+				      const std::string& c_name,
+				      const octave_value& val)
 {
   return (instance_ok ())
-    ? instance->do_register_type (t_name, c_name) : -1;
+    ? instance->do_register_type (t_name, c_name, val) : -1;
 }
 
 bool
@@ -149,7 +150,8 @@
 
 int
 octave_value_typeinfo::do_register_type (const std::string& t_name,
-					 const std::string& c_name)
+					 const std::string& c_name,
+					 const octave_value& val)
 {
   int i = 0;
 
@@ -165,6 +167,8 @@
 
       types.resize (len, std::string ());
 
+      vals.resize (len, octave_value ());
+
       unary_ops.resize (static_cast<int> (octave_value::num_unary_ops),
 			len, static_cast<unary_op_fcn> (0));
 
@@ -188,6 +192,8 @@
 
   types (i) = t_name;
 
+  vals (i) = val;
+
   num_types++;
 
   return i;
@@ -323,6 +329,23 @@
   return false;
 }
 
+octave_value
+octave_value_typeinfo::do_lookup_type (const std::string& nm)
+{
+  octave_value retval;
+
+  for (int i = 0; i < num_types; i++)
+    {
+      if (nm == types(i))
+	{
+	  retval = vals(i);
+	  break;
+	}
+    }
+
+  return retval;
+}
+
 unary_op_fcn
 octave_value_typeinfo::do_lookup_unary_op (octave_value::unary_op op, int t)
 {