26 #if ! defined (octave_ov_typeinfo_h)
27 #define octave_ov_typeinfo_h 1
29 #include "octave-config.h"
70 explicit type_info (
int init_tab_sz = 16);
85 return register_unary_class_op (op,
f,
true);
90 return register_unary_op (op, t,
f,
true);
96 return register_non_const_unary_op (op, t,
f,
true);
102 return register_binary_class_op (op,
f,
true);
108 return register_binary_op (op, t1, t2,
f,
true);
114 return register_binary_class_op (op,
f,
true);
120 return register_binary_op (op, t_lhs, t_rhs,
f,
true);
125 return register_cat_op (t1, t2,
f,
true);
131 return register_assign_op (op, t_lhs, t_rhs,
f,
true);
137 return register_assignany_op (op, t_lhs,
f,
true);
142 return register_pref_assign_conv (t_lhs, t_rhs, t_result,
true);
148 return register_widening_op (t, t_result,
f,
true);
155 bool abort_on_duplicate =
false);
158 bool abort_on_duplicate =
false);
162 bool abort_on_duplicate =
false);
166 bool abort_on_duplicate =
false);
173 bool abort_on_duplicate =
false);
179 bool abort_on_duplicate =
false);
182 bool abort_on_duplicate =
false);
185 bool abort_on_duplicate =
false);
187 bool register_pref_assign_conv (
int,
int,
int,
188 bool abort_on_duplicate =
false);
191 bool abort_on_duplicate =
false);
291 extern OCTINTERP_API
int register_type (const std::
string& t_name,
292 const std::
string& c_name,
octave_base_value *(* type_conv_fcn)(const octave_base_value &)
string_vector & operator=(const string_vector &)=default
Array< void * > m_compound_binary_class_ops
bool register_binary_class_op(octave_value::compound_binary_op, binary_class_op_fcn, bool abort_on_duplicate=false)
Array< void * > m_compound_binary_ops
bool install_binary_class_op(octave_value::compound_binary_op op, binary_class_op_fcn f)
bool install_widening_op(int t, int t_result, octave_base_value::type_conv_fcn f)
type_info(const type_info &)=delete
Array< octave_value * > m_vals
Array< void * > m_binary_ops
bool install_cat_op(int t1, int t2, cat_op_fcn f)
Array< void * > m_cat_ops
Array< void * > m_unary_class_ops
Array< std::string > m_types
Array< void * > m_assignany_ops
bool register_binary_class_op(octave_value::binary_op, binary_class_op_fcn, bool abort_on_duplicate=false)
bool install_assignany_op(octave_value::assign_op op, int t_lhs, assignany_op_fcn f)
bool install_non_const_unary_op(octave_value::unary_op op, int t, non_const_unary_op_fcn f)
bool install_unary_op(octave_value::unary_op op, int t, unary_op_fcn f)
bool install_binary_op(octave_value::compound_binary_op op, int t_lhs, int t_rhs, binary_op_fcn f)
Array< void * > m_unary_ops
Array< void * > m_widening_ops
Array< void * > m_non_const_unary_ops
Array< void * > m_assign_ops
bool install_pref_assign_conv(int t_lhs, int t_rhs, int t_result)
bool register_binary_op(octave_value::binary_op, int, int, binary_op_fcn, bool abort_on_duplicate=false)
bool register_binary_op(octave_value::compound_binary_op, int, int, binary_op_fcn, bool abort_on_duplicate=false)
Array< int > m_pref_assign_conv
bool install_assign_op(octave_value::assign_op op, int t_lhs, int t_rhs, assign_op_fcn f)
bool install_unary_class_op(octave_value::unary_op op, unary_class_op_fcn f)
Array< void * > m_binary_class_ops
bool install_binary_class_op(octave_value::binary_op op, binary_class_op_fcn f)
bool install_binary_op(octave_value::binary_op op, int t1, int t2, binary_op_fcn f)
OCTAVE_BEGIN_NAMESPACE(octave) static octave_value daspk_fcn
F77_RET_T const F77_DBLE const F77_DBLE * f
const octave_base_value const Array< octave_idx_type > & ra_idx
return octave_value(v1.char_array_value() . concat(v2.char_array_value(), ra_idx),((a1.is_sq_string()||a2.is_sq_string()) ? '\'' :'"'))
OCTINTERP_API assignany_op_fcn lookup_assignany_op(octave_value::assign_op op, int t_lhs)
OCTINTERP_API assign_op_fcn lookup_assign_op(octave_value::assign_op op, int t_lhs, int t_rhs)
octave::type_info::binary_op_fcn binary_op_fcn
OCTINTERP_API octave_base_value::type_conv_fcn lookup_widening_op(int t, int t_result)
OCTINTERP_API unary_class_op_fcn lookup_unary_class_op(octave_value::unary_op op)
OCTINTERP_API octave_scalar_map installed_type_info(void)
OCTINTERP_API binary_op_fcn lookup_binary_op(octave_value::binary_op op, int t1, int t2)
OCTINTERP_API int register_type(const std::string &t_name, const std::string &c_name, const octave_value &val)
OCTINTERP_API binary_class_op_fcn lookup_binary_class_op(octave_value::binary_op op)
octave::type_info::binary_class_op_fcn binary_class_op_fcn
OCTINTERP_API non_const_unary_op_fcn lookup_non_const_unary_op(octave_value::unary_op op, int t)
octave::type_info::assign_op_fcn assign_op_fcn
octave::type_info::non_const_unary_op_fcn non_const_unary_op_fcn
octave::type_info::assignany_op_fcn assignany_op_fcn
octave::type_info::unary_op_fcn unary_op_fcn
OCTINTERP_API string_vector installed_type_names(void)
OCTINTERP_API octave_value lookup_type(const std::string &nm)
OCTINTERP_API unary_op_fcn lookup_unary_op(octave_value::unary_op op, int t)
OCTINTERP_API cat_op_fcn lookup_cat_op(int t1, int t2)
OCTINTERP_API int lookup_pref_assign_conv(int t_lhs, int t_rhs)
octave::type_info::cat_op_fcn cat_op_fcn
octave::type_info::unary_class_op_fcn unary_class_op_fcn
OCTINTERP_API octave_value unary_op(type_info &ti, octave_value::unary_op op, const octave_value &a)
OCTINTERP_API octave_value binary_op(type_info &ti, octave_value::binary_op op, const octave_value &a, const octave_value &b)