in reply to Re: Overload '+=' with XSub
in thread Overload '+=' with XSub
First up - I don't really understand this XSub at all. I gather it's also handling -=, *=, /=, %=, &=, |= and ^= via some sort of lookup. The XPUSHs() also puzzles me. What does that achieve ?void overload_addeq (x, y, o) mpz_assume x mpz_coerce y order_noswap o ALIAS: GMP::Mpz::overload_subeq = 1 GMP::Mpz::overload_muleq = 2 GMP::Mpz::overload_diveq = 3 GMP::Mpz::overload_remeq = 4 GMP::Mpz::overload_andeq = 5 GMP::Mpz::overload_ioreq = 6 GMP::Mpz::overload_xoreq = 7 PREINIT: static_functable const struct { void (*op) (mpz_ptr, mpz_srcptr, mpz_srcptr); } table[] = { { mpz_add }, /* 0 */ { mpz_sub }, /* 1 */ { mpz_mul }, /* 2 */ { mpz_tdiv_q }, /* 3 */ { mpz_tdiv_r }, /* 4 */ { mpz_and }, /* 5 */ { mpz_ior }, /* 6 */ { mpz_xor }, /* 7 */ }; PPCODE: assert_table (ix); (*table[ix].op) (x->m, x->m, y); XPUSHs (ST(0));
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: Overload '+=' with XSub
by Anno (Deacon) on Mar 29, 2007 at 10:51 UTC | |
by syphilis (Archbishop) on Mar 29, 2007 at 12:21 UTC | |
by Anno (Deacon) on Mar 29, 2007 at 17:30 UTC | |
by Trizor (Pilgrim) on Mar 29, 2007 at 11:31 UTC | |
by syphilis (Archbishop) on Mar 29, 2007 at 12:39 UTC |