Mercurial > hg > octave-lyh
diff src/bitfcns.cc @ 10315:57a59eae83cc
untabify src C++ source files
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 11 Feb 2010 12:41:46 -0500 |
parents | cd96d29c5efa |
children | e38c071bbc41 |
line wrap: on
line diff
--- a/src/bitfcns.cc +++ b/src/bitfcns.cc @@ -47,36 +47,36 @@ #define BITOPX(OP, FNAME, RET) \ { \ - int nelx = x.numel (); \ - int nely = y.numel (); \ + int nelx = x.numel (); \ + int nely = y.numel (); \ \ - bool is_scalar_op = (nelx == 1 || nely == 1); \ + bool is_scalar_op = (nelx == 1 || nely == 1); \ \ - dim_vector dvx = x.dims (); \ - dim_vector dvy = y.dims (); \ + dim_vector dvx = x.dims (); \ + dim_vector dvy = y.dims (); \ \ - bool is_array_op = (dvx == dvy); \ + bool is_array_op = (dvx == dvy); \ \ - if (is_array_op || is_scalar_op) \ - { \ - RET result; \ + if (is_array_op || is_scalar_op) \ + { \ + RET result; \ \ - if (nelx != 1) \ - result.resize (dvx); \ - else \ - result.resize (dvy); \ + if (nelx != 1) \ + result.resize (dvx); \ + else \ + result.resize (dvy); \ \ - for (int i = 0; i < nelx; i++) \ - if (is_scalar_op) \ - for (int k = 0; k < nely; k++) \ - result(i+k) = x(i) OP y(k); \ - else \ - result(i) = x(i) OP y(i); \ + for (int i = 0; i < nelx; i++) \ + if (is_scalar_op) \ + for (int k = 0; k < nely; k++) \ + result(i+k) = x(i) OP y(k); \ + else \ + result(i) = x(i) OP y(i); \ \ - retval = result; \ - } \ - else \ - error ("%s: size of x and y must match, or one operand must be a scalar", FNAME); \ + retval = result; \ + } \ + else \ + error ("%s: size of x and y must match, or one operand must be a scalar", FNAME); \ } #define BITOP(OP, FNAME) \ @@ -88,173 +88,173 @@ if (nargin == 2) \ { \ if ((args(0).class_name () == octave_scalar::static_class_name ()) \ - || (args(0).class_name () == octave_bool::static_class_name ()) \ - || (args(1).class_name () == octave_scalar::static_class_name ()) \ - || (args(1).class_name () == octave_bool::static_class_name ())) \ - { \ - bool arg0_is_int = (args(0).class_name () != \ - octave_scalar::static_class_name () && \ - args(0).class_name () != \ - octave_bool::static_class_name ()); \ - bool arg1_is_int = (args(1).class_name () != \ - octave_scalar::static_class_name () && \ - args(1).class_name () != \ - octave_bool::static_class_name ()); \ - \ - if (! (arg0_is_int || arg1_is_int)) \ - { \ - uint64NDArray x (args(0).array_value ()); \ - uint64NDArray y (args(1).array_value ()); \ - if (! error_state) \ - BITOPX (OP, FNAME, uint64NDArray); \ - retval = retval.array_value (); \ - } \ - else \ - { \ - int p = (arg0_is_int ? 1 : 0); \ - int q = (arg0_is_int ? 0 : 1); \ + || (args(0).class_name () == octave_bool::static_class_name ()) \ + || (args(1).class_name () == octave_scalar::static_class_name ()) \ + || (args(1).class_name () == octave_bool::static_class_name ())) \ + { \ + bool arg0_is_int = (args(0).class_name () != \ + octave_scalar::static_class_name () && \ + args(0).class_name () != \ + octave_bool::static_class_name ()); \ + bool arg1_is_int = (args(1).class_name () != \ + octave_scalar::static_class_name () && \ + args(1).class_name () != \ + octave_bool::static_class_name ()); \ + \ + if (! (arg0_is_int || arg1_is_int)) \ + { \ + uint64NDArray x (args(0).array_value ()); \ + uint64NDArray y (args(1).array_value ()); \ + if (! error_state) \ + BITOPX (OP, FNAME, uint64NDArray); \ + retval = retval.array_value (); \ + } \ + else \ + { \ + int p = (arg0_is_int ? 1 : 0); \ + int q = (arg0_is_int ? 0 : 1); \ \ - NDArray dx = args(p).array_value (); \ + NDArray dx = args(p).array_value (); \ \ - if (args(q).type_id () == octave_uint64_matrix::static_type_id () \ - || args(q).type_id () == octave_uint64_scalar::static_type_id ()) \ - { \ - uint64NDArray x (dx); \ - uint64NDArray y = args(q).uint64_array_value (); \ - if (! error_state) \ - BITOPX (OP, FNAME, uint64NDArray); \ - } \ - else if (args(q).type_id () == octave_uint32_matrix::static_type_id () \ - || args(q).type_id () == octave_uint32_scalar::static_type_id ()) \ - { \ - uint32NDArray x (dx); \ - uint32NDArray y = args(q).uint32_array_value (); \ - if (! error_state) \ - BITOPX (OP, FNAME, uint32NDArray); \ - } \ - else if (args(q).type_id () == octave_uint16_matrix::static_type_id () \ - || args(q).type_id () == octave_uint16_scalar::static_type_id ()) \ - { \ - uint16NDArray x (dx); \ - uint16NDArray y = args(q).uint16_array_value (); \ - if (! error_state) \ - BITOPX (OP, FNAME, uint16NDArray); \ - } \ - else if (args(q).type_id () == octave_uint8_matrix::static_type_id () \ - || args(q).type_id () == octave_uint8_scalar::static_type_id ()) \ - { \ - uint8NDArray x (dx); \ - uint8NDArray y = args(q).uint8_array_value (); \ - if (! error_state) \ - BITOPX (OP, FNAME, uint8NDArray); \ - } \ - else if (args(q).type_id () == octave_int64_matrix::static_type_id () \ - || args(q).type_id () == octave_int64_scalar::static_type_id ()) \ - { \ - int64NDArray x (dx); \ - int64NDArray y = args(q).int64_array_value (); \ - if (! error_state) \ - BITOPX (OP, FNAME, int64NDArray); \ - } \ - else if (args(q).type_id () == octave_int32_matrix::static_type_id () \ - || args(q).type_id () == octave_int32_scalar::static_type_id ()) \ - { \ - int32NDArray x (dx); \ - int32NDArray y = args(q).int32_array_value (); \ - if (! error_state) \ - BITOPX (OP, FNAME, int32NDArray); \ - } \ - else if (args(q).type_id () == octave_int16_matrix::static_type_id () \ - || args(q).type_id () == octave_int16_scalar::static_type_id ()) \ - { \ - int16NDArray x (dx); \ - int16NDArray y = args(q).int16_array_value (); \ - if (! error_state) \ - BITOPX (OP, FNAME, int16NDArray); \ - } \ - else if (args(q).type_id () == octave_int8_matrix::static_type_id () \ - || args(q).type_id () == octave_int8_scalar::static_type_id ()) \ - { \ - int8NDArray x (dx); \ - int8NDArray y = args(q).int8_array_value (); \ - if (! error_state) \ - BITOPX (OP, FNAME, int8NDArray); \ - } \ - else \ - error ("%s: invalid operand type", FNAME); \ - } \ - } \ + if (args(q).type_id () == octave_uint64_matrix::static_type_id () \ + || args(q).type_id () == octave_uint64_scalar::static_type_id ()) \ + { \ + uint64NDArray x (dx); \ + uint64NDArray y = args(q).uint64_array_value (); \ + if (! error_state) \ + BITOPX (OP, FNAME, uint64NDArray); \ + } \ + else if (args(q).type_id () == octave_uint32_matrix::static_type_id () \ + || args(q).type_id () == octave_uint32_scalar::static_type_id ()) \ + { \ + uint32NDArray x (dx); \ + uint32NDArray y = args(q).uint32_array_value (); \ + if (! error_state) \ + BITOPX (OP, FNAME, uint32NDArray); \ + } \ + else if (args(q).type_id () == octave_uint16_matrix::static_type_id () \ + || args(q).type_id () == octave_uint16_scalar::static_type_id ()) \ + { \ + uint16NDArray x (dx); \ + uint16NDArray y = args(q).uint16_array_value (); \ + if (! error_state) \ + BITOPX (OP, FNAME, uint16NDArray); \ + } \ + else if (args(q).type_id () == octave_uint8_matrix::static_type_id () \ + || args(q).type_id () == octave_uint8_scalar::static_type_id ()) \ + { \ + uint8NDArray x (dx); \ + uint8NDArray y = args(q).uint8_array_value (); \ + if (! error_state) \ + BITOPX (OP, FNAME, uint8NDArray); \ + } \ + else if (args(q).type_id () == octave_int64_matrix::static_type_id () \ + || args(q).type_id () == octave_int64_scalar::static_type_id ()) \ + { \ + int64NDArray x (dx); \ + int64NDArray y = args(q).int64_array_value (); \ + if (! error_state) \ + BITOPX (OP, FNAME, int64NDArray); \ + } \ + else if (args(q).type_id () == octave_int32_matrix::static_type_id () \ + || args(q).type_id () == octave_int32_scalar::static_type_id ()) \ + { \ + int32NDArray x (dx); \ + int32NDArray y = args(q).int32_array_value (); \ + if (! error_state) \ + BITOPX (OP, FNAME, int32NDArray); \ + } \ + else if (args(q).type_id () == octave_int16_matrix::static_type_id () \ + || args(q).type_id () == octave_int16_scalar::static_type_id ()) \ + { \ + int16NDArray x (dx); \ + int16NDArray y = args(q).int16_array_value (); \ + if (! error_state) \ + BITOPX (OP, FNAME, int16NDArray); \ + } \ + else if (args(q).type_id () == octave_int8_matrix::static_type_id () \ + || args(q).type_id () == octave_int8_scalar::static_type_id ()) \ + { \ + int8NDArray x (dx); \ + int8NDArray y = args(q).int8_array_value (); \ + if (! error_state) \ + BITOPX (OP, FNAME, int8NDArray); \ + } \ + else \ + error ("%s: invalid operand type", FNAME); \ + } \ + } \ else if (args(0).class_name () == args(1).class_name ()) \ - { \ - if (args(0).type_id () == octave_uint64_matrix::static_type_id () \ - || args(0).type_id () == octave_uint64_scalar::static_type_id ()) \ - { \ - uint64NDArray x = args(0).uint64_array_value (); \ - uint64NDArray y = args(1).uint64_array_value (); \ - if (! error_state) \ - BITOPX (OP, FNAME, uint64NDArray); \ - } \ - else if (args(0).type_id () == octave_uint32_matrix::static_type_id () \ - || args(0).type_id () == octave_uint32_scalar::static_type_id ()) \ - { \ - uint32NDArray x = args(0).uint32_array_value (); \ - uint32NDArray y = args(1).uint32_array_value (); \ - if (! error_state) \ - BITOPX (OP, FNAME, uint32NDArray); \ - } \ - else if (args(0).type_id () == octave_uint16_matrix::static_type_id () \ - || args(0).type_id () == octave_uint16_scalar::static_type_id ()) \ - { \ - uint16NDArray x = args(0).uint16_array_value (); \ - uint16NDArray y = args(1).uint16_array_value (); \ - if (! error_state) \ - BITOPX (OP, FNAME, uint16NDArray); \ - } \ - else if (args(0).type_id () == octave_uint8_matrix::static_type_id () \ - || args(0).type_id () == octave_uint8_scalar::static_type_id ()) \ - { \ - uint8NDArray x = args(0).uint8_array_value (); \ - uint8NDArray y = args(1).uint8_array_value (); \ - if (! error_state) \ - BITOPX (OP, FNAME, uint8NDArray); \ - } \ - else if (args(0).type_id () == octave_int64_matrix::static_type_id () \ - || args(0).type_id () == octave_int64_scalar::static_type_id ()) \ - { \ - int64NDArray x = args(0).int64_array_value (); \ - int64NDArray y = args(1).int64_array_value (); \ - if (! error_state) \ - BITOPX (OP, FNAME, int64NDArray); \ - } \ - else if (args(0).type_id () == octave_int32_matrix::static_type_id () \ - || args(0).type_id () == octave_int32_scalar::static_type_id ()) \ - { \ - int32NDArray x = args(0).int32_array_value (); \ - int32NDArray y = args(1).int32_array_value (); \ - if (! error_state) \ - BITOPX (OP, FNAME, int32NDArray); \ - } \ - else if (args(0).type_id () == octave_int16_matrix::static_type_id () \ - || args(0).type_id () == octave_int16_scalar::static_type_id ()) \ - { \ - int16NDArray x = args(0).int16_array_value (); \ - int16NDArray y = args(1).int16_array_value (); \ - if (! error_state) \ - BITOPX (OP, FNAME, int16NDArray); \ - } \ - else if (args(0).type_id () == octave_int8_matrix::static_type_id () \ - || args(0).type_id () == octave_int8_scalar::static_type_id ()) \ - { \ - int8NDArray x = args(0).int8_array_value (); \ - int8NDArray y = args(1).int8_array_value (); \ - if (! error_state) \ - BITOPX (OP, FNAME, int8NDArray); \ - } \ - else \ - error ("%s: invalid operand type", FNAME); \ - } \ + { \ + if (args(0).type_id () == octave_uint64_matrix::static_type_id () \ + || args(0).type_id () == octave_uint64_scalar::static_type_id ()) \ + { \ + uint64NDArray x = args(0).uint64_array_value (); \ + uint64NDArray y = args(1).uint64_array_value (); \ + if (! error_state) \ + BITOPX (OP, FNAME, uint64NDArray); \ + } \ + else if (args(0).type_id () == octave_uint32_matrix::static_type_id () \ + || args(0).type_id () == octave_uint32_scalar::static_type_id ()) \ + { \ + uint32NDArray x = args(0).uint32_array_value (); \ + uint32NDArray y = args(1).uint32_array_value (); \ + if (! error_state) \ + BITOPX (OP, FNAME, uint32NDArray); \ + } \ + else if (args(0).type_id () == octave_uint16_matrix::static_type_id () \ + || args(0).type_id () == octave_uint16_scalar::static_type_id ()) \ + { \ + uint16NDArray x = args(0).uint16_array_value (); \ + uint16NDArray y = args(1).uint16_array_value (); \ + if (! error_state) \ + BITOPX (OP, FNAME, uint16NDArray); \ + } \ + else if (args(0).type_id () == octave_uint8_matrix::static_type_id () \ + || args(0).type_id () == octave_uint8_scalar::static_type_id ()) \ + { \ + uint8NDArray x = args(0).uint8_array_value (); \ + uint8NDArray y = args(1).uint8_array_value (); \ + if (! error_state) \ + BITOPX (OP, FNAME, uint8NDArray); \ + } \ + else if (args(0).type_id () == octave_int64_matrix::static_type_id () \ + || args(0).type_id () == octave_int64_scalar::static_type_id ()) \ + { \ + int64NDArray x = args(0).int64_array_value (); \ + int64NDArray y = args(1).int64_array_value (); \ + if (! error_state) \ + BITOPX (OP, FNAME, int64NDArray); \ + } \ + else if (args(0).type_id () == octave_int32_matrix::static_type_id () \ + || args(0).type_id () == octave_int32_scalar::static_type_id ()) \ + { \ + int32NDArray x = args(0).int32_array_value (); \ + int32NDArray y = args(1).int32_array_value (); \ + if (! error_state) \ + BITOPX (OP, FNAME, int32NDArray); \ + } \ + else if (args(0).type_id () == octave_int16_matrix::static_type_id () \ + || args(0).type_id () == octave_int16_scalar::static_type_id ()) \ + { \ + int16NDArray x = args(0).int16_array_value (); \ + int16NDArray y = args(1).int16_array_value (); \ + if (! error_state) \ + BITOPX (OP, FNAME, int16NDArray); \ + } \ + else if (args(0).type_id () == octave_int8_matrix::static_type_id () \ + || args(0).type_id () == octave_int8_scalar::static_type_id ()) \ + { \ + int8NDArray x = args(0).int8_array_value (); \ + int8NDArray y = args(1).int8_array_value (); \ + if (! error_state) \ + BITOPX (OP, FNAME, int8NDArray); \ + } \ + else \ + error ("%s: invalid operand type", FNAME); \ + } \ else \ - error ("%s: must have matching operand types", FNAME); \ + error ("%s: must have matching operand types", FNAME); \ } \ else \ print_usage (); \ @@ -334,46 +334,46 @@ double d1, d2; \ \ if (n.all_integers (d1, d2)) \ - { \ - int m_nel = m.numel (); \ - int n_nel = n.numel (); \ + { \ + int m_nel = m.numel (); \ + int n_nel = n.numel (); \ \ - bool is_scalar_op = (m_nel == 1 || n_nel == 1); \ + bool is_scalar_op = (m_nel == 1 || n_nel == 1); \ \ - dim_vector m_dv = m.dims (); \ - dim_vector n_dv = n.dims (); \ + dim_vector m_dv = m.dims (); \ + dim_vector n_dv = n.dims (); \ \ - bool is_array_op = (m_dv == n_dv); \ + bool is_array_op = (m_dv == n_dv); \ \ - if (is_array_op || is_scalar_op) \ - { \ - T ## NDArray result; \ + if (is_array_op || is_scalar_op) \ + { \ + T ## NDArray result; \ \ - if (m_nel != 1) \ - result.resize (m_dv); \ - else \ - result.resize (n_dv); \ + if (m_nel != 1) \ + result.resize (m_dv); \ + else \ + result.resize (n_dv); \ \ - for (int i = 0; i < m_nel; i++) \ - if (is_scalar_op) \ - for (int k = 0; k < n_nel; k++) \ - if (static_cast<int> (n(k)) >= bits_in_type) \ - result(i+k) = 0; \ - else \ - result(i+k) = bitshift (m(i), static_cast<int> (n(k)), mask); \ - else \ - if (static_cast<int> (n(i)) >= bits_in_type) \ - result(i) = 0; \ - else \ - result(i) = bitshift (m(i), static_cast<int> (n(i)), mask); \ + for (int i = 0; i < m_nel; i++) \ + if (is_scalar_op) \ + for (int k = 0; k < n_nel; k++) \ + if (static_cast<int> (n(k)) >= bits_in_type) \ + result(i+k) = 0; \ + else \ + result(i+k) = bitshift (m(i), static_cast<int> (n(k)), mask); \ + else \ + if (static_cast<int> (n(i)) >= bits_in_type) \ + result(i) = 0; \ + else \ + result(i) = bitshift (m(i), static_cast<int> (n(i)), mask); \ \ - retval = result; \ - } \ - else \ - error ("bitshift: size of A and N must match, or one operand must be a scalar"); \ - } \ + retval = result; \ + } \ + else \ + error ("bitshift: size of A and N must match, or one operand must be a scalar"); \ + } \ else \ - error ("bitshift: expecting second argument to be integer"); \ + error ("bitshift: expecting second argument to be integer"); \ } #define DO_UBITSHIFT(T, N) \ @@ -381,11 +381,11 @@ { \ int bits_in_type = octave_ ## T :: nbits (); \ T ## NDArray m = m_arg.T ## _array_value (); \ - octave_ ## T mask = octave_ ## T::max (); \ + octave_ ## T mask = octave_ ## T::max (); \ if ((N) < bits_in_type) \ - mask = bitshift (mask, (N) - bits_in_type); \ + mask = bitshift (mask, (N) - bits_in_type); \ else if ((N) < 1) \ - mask = 0; \ + mask = 0; \ DO_BITSHIFT (T); \ } \ while (0) @@ -395,11 +395,11 @@ { \ int bits_in_type = octave_ ## T :: nbits (); \ T ## NDArray m = m_arg.T ## _array_value (); \ - octave_ ## T mask = octave_ ## T::max (); \ + octave_ ## T mask = octave_ ## T::max (); \ if ((N) < bits_in_type) \ - mask = bitshift (mask, (N) - bits_in_type); \ + mask = bitshift (mask, (N) - bits_in_type); \ else if ((N) < 1) \ - mask = 0; \ + mask = 0; \ mask = mask | octave_ ## T :: min (); /* FIXME: 2's complement only? */ \ DO_BITSHIFT (T); \ } \ @@ -448,63 +448,63 @@ NDArray n = args(1).array_value (); if (error_state) - error ("bitshift: expecting integer as second argument"); + error ("bitshift: expecting integer as second argument"); else - { - if (nargin == 3) - { - // FIXME -- for compatibility, we should accept an array - // or a scalar as the third argument. - if (args(2).numel () > 1) - error ("bitshift: expecting scalar integer as third argument"); - else - { - nbits = args(2).int_value (); - - if (error_state) - error ("bitshift: expecting integer as third argument"); - else if (nbits < 0) - error ("bitshift: number of bits to mask must be positive"); - } - } - } + { + if (nargin == 3) + { + // FIXME -- for compatibility, we should accept an array + // or a scalar as the third argument. + if (args(2).numel () > 1) + error ("bitshift: expecting scalar integer as third argument"); + else + { + nbits = args(2).int_value (); + + if (error_state) + error ("bitshift: expecting integer as third argument"); + else if (nbits < 0) + error ("bitshift: number of bits to mask must be positive"); + } + } + } if (error_state) - return retval; + return retval; octave_value m_arg = args(0); std::string cname = m_arg.class_name (); if (cname == "uint8") - DO_UBITSHIFT (uint8, nbits < 8 ? nbits : 8); + DO_UBITSHIFT (uint8, nbits < 8 ? nbits : 8); else if (cname == "uint16") - DO_UBITSHIFT (uint16, nbits < 16 ? nbits : 16); + DO_UBITSHIFT (uint16, nbits < 16 ? nbits : 16); else if (cname == "uint32") - DO_UBITSHIFT (uint32, nbits < 32 ? nbits : 32); + DO_UBITSHIFT (uint32, nbits < 32 ? nbits : 32); else if (cname == "uint64") - DO_UBITSHIFT (uint64, nbits < 64 ? nbits : 64); + DO_UBITSHIFT (uint64, nbits < 64 ? nbits : 64); else if (cname == "int8") - DO_SBITSHIFT (int8, nbits < 8 ? nbits : 8); + DO_SBITSHIFT (int8, nbits < 8 ? nbits : 8); else if (cname == "int16") - DO_SBITSHIFT (int16, nbits < 16 ? nbits : 16); + DO_SBITSHIFT (int16, nbits < 16 ? nbits : 16); else if (cname == "int32") - DO_SBITSHIFT (int32, nbits < 32 ? nbits : 32); + DO_SBITSHIFT (int32, nbits < 32 ? nbits : 32); else if (cname == "int64") - DO_SBITSHIFT (int64, nbits < 64 ? nbits : 64); + DO_SBITSHIFT (int64, nbits < 64 ? nbits : 64); else if (cname == "double") - { - nbits = (nbits < 53 ? nbits : 53); - int64_t mask = 0x1FFFFFFFFFFFFFLL; - if (nbits < 53) - mask = mask >> (53 - nbits); - else if (nbits < 1) - mask = 0; - int bits_in_type = 64; - NDArray m = m_arg.array_value (); - DO_BITSHIFT ( ); - } + { + nbits = (nbits < 53 ? nbits : 53); + int64_t mask = 0x1FFFFFFFFFFFFFLL; + if (nbits < 53) + mask = mask >> (53 - nbits); + else if (nbits < 1) + mask = 0; + int bits_in_type = 64; + NDArray m = m_arg.array_value (); + DO_BITSHIFT ( ); + } else - error ("bitshift: not defined for %s objects", cname.c_str ()); + error ("bitshift: not defined for %s objects", cname.c_str ()); } else print_usage ();