55 ::error (
"unable to create value type info object!");
65 const std::string& c_name,
142 int t_lhs,
int t_rhs,
193 if (t_name ==
types (i))
249 warning (
"duplicate unary operator '%s' for class dispatch",
254 =
reinterpret_cast<void *
> (
f);
267 std::string type_name =
types(t);
269 warning (
"duplicate unary operator '%s' for type '%s'",
270 op_name.c_str (), type_name.c_str ());
283 if (lookup_non_const_unary_op (op, t))
286 std::string type_name = types(t);
288 warning (
"duplicate unary operator '%s' for type '%s'",
289 op_name.c_str (), type_name.c_str ());
292 non_const_unary_ops.checkelem (static_cast<int> (op), t)
293 =
reinterpret_cast<void *
> (
f);
306 warning (
"duplicate binary operator '%s' for class dispatch",
311 =
reinterpret_cast<void *
> (
f);
324 std::string t1_name =
types(t1);
325 std::string t2_name =
types(t2);
327 warning (
"duplicate binary operator '%s' for types '%s' and '%s'",
328 op_name.c_str (), t1_name.c_str (), t1_name.c_str ());
332 =
reinterpret_cast<void *
> (
f);
345 warning (
"duplicate compound binary operator '%s' for class dispatch",
350 =
reinterpret_cast<void *
> (
f);
363 std::string t1_name =
types(t1);
364 std::string t2_name =
types(t2);
366 warning (
"duplicate compound binary operator '%s' for types '%s' and '%s'",
367 op_name.c_str (), t1_name.c_str (), t1_name.c_str ());
371 =
reinterpret_cast<void *
> (
f);
382 std::string t1_name =
types(t1);
383 std::string t2_name =
types(t2);
385 warning (
"duplicate concatenation operator for types '%s' and '%s'",
386 t1_name.c_str (), t1_name.c_str ());
396 int t_lhs,
int t_rhs,
402 std::string t_lhs_name =
types(t_lhs);
403 std::string t_rhs_name =
types(t_rhs);
405 warning (
"duplicate assignment operator '%s' for types '%s' and '%s'",
406 op_name.c_str (), t_lhs_name.c_str (), t_rhs_name.c_str ());
410 =
reinterpret_cast<void *
> (
f);
422 std::string t_lhs_name =
types(t_lhs);
424 warning (
"duplicate assignment operator '%s' for types '%s'",
425 op_name.c_str (), t_lhs_name.c_str ());
429 =
reinterpret_cast<void *
> (
f);
440 std::string t_lhs_name =
types(t_lhs);
441 std::string t_rhs_name =
types(t_rhs);
443 warning (
"overriding assignment conversion for types '%s' and '%s'",
444 t_lhs_name.c_str (), t_rhs_name.c_str ());
456 if (lookup_type_conv_op (t, t_result))
458 std::string t_name = types(t);
459 std::string t_result_name = types(t_result);
461 warning (
"overriding type conversion op for '%s' to '%s'",
462 t_name.c_str (), t_result_name.c_str ());
465 type_conv_ops.checkelem (t, t_result) =
reinterpret_cast<void *
> (
f);
474 if (lookup_widening_op (t, t_result))
476 std::string t_name = types(t);
477 std::string t_result_name = types(t_result);
479 warning (
"overriding widening op for '%s' to '%s'",
480 t_name.c_str (), t_result_name.c_str ());
483 widening_ops.checkelem (t, t_result) =
reinterpret_cast<void *
> (
f);
524 void *f = non_const_unary_ops.checkelem (static_cast<int> (op), t);
567 int t_lhs,
int t_rhs)
607 retval(i) =
types(i);
614 @deftypefn {Built-in Function} {} typeinfo ()\n\
615 @deftypefnx {Built-in Function} {} typeinfo (@var{expr})\n\
617 Return the type of the expression @var{expr}, as a string. If\n\
618 @var{expr} is omitted, return an cell array of strings containing all the\n\
619 currently installed data types.\n\
624 int nargin = args.
length ();
628 else if (nargin == 1)