41 #define DEF_CLASS_UNOP(name) \
43 oct_unop_ ## name (const octave_value& a) \
45 octave_value retval; \
47 std::string class_name = a.class_name (); \
49 octave_value meth = symbol_table::find_method (#name, class_name); \
51 if (meth.is_defined ()) \
53 octave_value_list args; \
57 octave_value_list tmp = feval (meth.function_value (), args, 1); \
59 if (tmp.length () > 0) \
63 error ("%s method not defined for %s class", \
64 #name, class_name.c_str ()); \
77 #define DEF_CLASS_BINOP(name) \
79 oct_binop_ ## name (const octave_value& a1, const octave_value& a2) \
81 octave_value retval; \
83 std::string dispatch_type \
84 = a1.is_object () ? a1.class_name () : a2.class_name (); \
86 octave_value meth = symbol_table::find_method (#name, dispatch_type); \
88 if (meth.is_defined ()) \
90 octave_value_list args; \
95 octave_value_list tmp = feval (meth.function_value (), args, 1); \
97 if (tmp.length () > 0) \
101 error ("%s method not defined for %s class", \
102 #name, dispatch_type.c_str ()); \
126 #define INSTALL_CLASS_UNOP(op, f) \
127 octave_value_typeinfo::register_unary_class_op \
128 (octave_value::op, oct_unop_ ## f)
130 #define INSTALL_CLASS_BINOP(op, f) \
131 octave_value_typeinfo::register_binary_class_op \
132 (octave_value::op, oct_binop_ ## f)
#define DEF_CLASS_BINOP(name)
octave_value op_uplus(const octave_value &a)
octave_value op_el_pow(const octave_value &a1, const octave_value &a2)
octave_value op_eq(const octave_value &a1, const octave_value &a2)
#define DEF_CLASS_UNOP(name)
octave_value op_el_ldiv(const octave_value &a1, const octave_value &a2)
static void transpose(octave_idx_type N, const octave_idx_type *ridx, const octave_idx_type *cidx, octave_idx_type *ridx2, octave_idx_type *cidx2)
octave_value op_pow(const octave_value &a1, const octave_value &a2)
#define INSTALL_CLASS_BINOP(op, f)
octave_value op_div(const octave_value &a1, const octave_value &a2)
void install_class_ops(void)
octave_value op_el_or(const octave_value &a1, const octave_value &a2)
octave_value op_not(const octave_value &a)
octave_value op_transpose(const octave_value &a)
octave_value op_el_and(const octave_value &a1, const octave_value &a2)
octave_value op_le(const octave_value &a1, const octave_value &a2)
octave_value op_lt(const octave_value &a1, const octave_value &a2)
octave_value op_el_div(const octave_value &a1, const octave_value &a2)
octave_value op_ne(const octave_value &a1, const octave_value &a2)
octave_value op_add(const octave_value &a1, const octave_value &a2)
octave_value op_ldiv(const octave_value &a1, const octave_value &a2)
octave_value op_sub(const octave_value &a1, const octave_value &a2)
octave_value op_el_mul(const octave_value &a1, const octave_value &a2)
octave_value op_hermitian(const octave_value &a)
octave_value op_ge(const octave_value &a1, const octave_value &a2)
octave_value op_uminus(const octave_value &a)
#define INSTALL_CLASS_UNOP(op, f)
octave_value op_mul(const octave_value &a1, const octave_value &a2)
octave_value op_gt(const octave_value &a1, const octave_value &a2)