[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnuastro-commits] master 589ca52: Arithmetic library's flag argument co
From: |
Mohammad Akhlaghi |
Subject: |
[gnuastro-commits] master 589ca52: Arithmetic library's flag argument converted to int type |
Date: |
Sun, 10 Dec 2017 10:45:27 -0500 (EST) |
branch: master
commit 589ca5290f976054ddf3b86919661e915fde0e48
Author: Mohammad Akhlaghi <address@hidden>
Commit: Mohammad Akhlaghi <address@hidden>
Arithmetic library's flag argument converted to int type
The `flags' arguments to `gal_arithmetic' had an `unsigned char'
type. However, on some LLVM compilers, we got the following warning when
using `va_start': "promotion to 'va_start' has undefined behavior" and
"note: parameter of type 'unsigned char' is declared here" (pointing to the
`flags' argument of `gal_arithmetic').
To avoid this warning and have a clean build, in the arithmetic library,
the flags now have an `int' type.
This warning was first reported by Raúl Infante Sainz.
---
bin/arithmetic/arithmetic.c | 4 ++--
doc/gnuastro.texi | 2 +-
lib/arithmetic-binary.c | 3 +--
lib/arithmetic-onlyint.c | 6 +++---
lib/arithmetic.c | 23 +++++++++++------------
lib/gnuastro-internal/arithmetic-binary.h | 3 +--
lib/gnuastro-internal/arithmetic-internal.h | 2 +-
lib/gnuastro-internal/arithmetic-onlyint.h | 4 ++--
lib/gnuastro/arithmetic.h | 2 +-
9 files changed, 23 insertions(+), 26 deletions(-)
diff --git a/bin/arithmetic/arithmetic.c b/bin/arithmetic/arithmetic.c
index 36ed627..73375f5 100644
--- a/bin/arithmetic/arithmetic.c
+++ b/bin/arithmetic/arithmetic.c
@@ -447,8 +447,8 @@ reversepolish(struct arithmeticparams *p)
unsigned int numop, i;
gal_list_str_t *token;
gal_data_t *d1=NULL, *d2=NULL, *d3=NULL;
- unsigned char flags = ( GAL_ARITHMETIC_INPLACE | GAL_ARITHMETIC_FREE
- | GAL_ARITHMETIC_NUMOK );
+ int flags = ( GAL_ARITHMETIC_INPLACE | GAL_ARITHMETIC_FREE
+ | GAL_ARITHMETIC_NUMOK );
/* Prepare the processing: */
diff --git a/doc/gnuastro.texi b/doc/gnuastro.texi
index 4500aaa..6118f87 100644
--- a/doc/gnuastro.texi
+++ b/doc/gnuastro.texi
@@ -22397,7 +22397,7 @@ directly use those functions.
@end deffn
address@hidden {gal_data_t *} gal_arithmetic (int operator, unsigned char
flags, ...)
address@hidden {gal_data_t *} gal_arithmetic (int operator, int flags, ...)
Do the arithmetic operation of @code{operator} on the given operands (the
third argument and any further argument). Certain special conditions can
also be specified with the @code{flag} operator. The acceptable values for
diff --git a/lib/arithmetic-binary.c b/lib/arithmetic-binary.c
index c5facc8..a0a69da 100644
--- a/lib/arithmetic-binary.c
+++ b/lib/arithmetic-binary.c
@@ -348,8 +348,7 @@ along with Gnuastro. If not, see
<http://www.gnu.org/licenses/>.
/************* Top level function *****************/
/************************************************************************/
gal_data_t *
-arithmetic_binary(int operator, uint8_t flags, gal_data_t *lo,
- gal_data_t *ro)
+arithmetic_binary(int operator, int flags, gal_data_t *lo, gal_data_t *ro)
{
/* Read the variable arguments. `lo' and `ro' keep the original data, in
case their type isn't built (based on configure options are configure
diff --git a/lib/arithmetic-onlyint.c b/lib/arithmetic-onlyint.c
index 9e26382..9c60197 100644
--- a/lib/arithmetic-onlyint.c
+++ b/lib/arithmetic-onlyint.c
@@ -265,8 +265,8 @@ along with Gnuastro. If not, see
<http://www.gnu.org/licenses/>.
/************* Top level function *****************/
/************************************************************************/
gal_data_t *
-arithmetic_onlyint_binary(int operator, unsigned char flags,
- gal_data_t *lo, gal_data_t *ro)
+arithmetic_onlyint_binary(int operator, int flags, gal_data_t *lo,
+ gal_data_t *ro)
{
/* Read the variable arguments. `lo' and `ro' keep the original data, in
case their type isn't built (based on configure options are configure
@@ -414,7 +414,7 @@ arithmetic_onlyint_binary(int operator, unsigned char flags,
gal_data_t *
-arithmetic_onlyint_bitwise_not(unsigned char flags, gal_data_t *in)
+arithmetic_onlyint_bitwise_not(int flags, gal_data_t *in)
{
gal_data_t *o;
uint8_t *iu8 = in->array, *iu8f = iu8 + in->size, *ou8;
diff --git a/lib/arithmetic.c b/lib/arithmetic.c
index db61e9c..307284e 100644
--- a/lib/arithmetic.c
+++ b/lib/arithmetic.c
@@ -46,7 +46,7 @@ along with Gnuastro. If not, see
<http://www.gnu.org/licenses/>.
/***********************************************************************/
/* Change input data structure type. */
static gal_data_t *
-arithmetic_change_type(gal_data_t *data, int operator, unsigned char flags)
+arithmetic_change_type(gal_data_t *data, int operator, int flags)
{
int type=-1;
gal_data_t *out;
@@ -92,7 +92,7 @@ arithmetic_change_type(gal_data_t *data, int operator,
unsigned char flags)
}
static gal_data_t *
-arithmetic_not(gal_data_t *data, unsigned char flags)
+arithmetic_not(gal_data_t *data, int flags)
{
uint8_t *o;
gal_data_t *out;
@@ -149,7 +149,7 @@ arithmetic_not(gal_data_t *data, unsigned char flags)
do *o++ = FUNC(*a); while(++a<af); \
}
static gal_data_t *
-arithmetic_abs(unsigned char flags, gal_data_t *in)
+arithmetic_abs(int flags, gal_data_t *in)
{
gal_data_t *out;
@@ -317,7 +317,7 @@ arithmetic_check_float_input(gal_data_t *in, int operator,
char *numstr)
static gal_data_t *
-arithmetic_unary_function(int operator, unsigned char flags, gal_data_t *in)
+arithmetic_unary_function(int operator, int flags, gal_data_t *in)
{
gal_data_t *o;
@@ -457,8 +457,8 @@ arithmetic_unary_function(int operator, unsigned char
flags, gal_data_t *in)
static gal_data_t *
-arithmetic_binary_function_flt(int operator, unsigned char flags,
- gal_data_t *l, gal_data_t *r)
+arithmetic_binary_function_flt(int operator, int flags, gal_data_t *l,
+ gal_data_t *r)
{
int final_otype;
gal_data_t *o=NULL;
@@ -606,7 +606,7 @@ arithmetic_binary_function_flt(int operator, unsigned char
flags,
static void
-arithmetic_where(unsigned char flags, gal_data_t *out, gal_data_t *cond,
+arithmetic_where(int flags, gal_data_t *out, gal_data_t *cond,
gal_data_t *iftrue)
{
unsigned char *c=cond->array;
@@ -959,7 +959,7 @@ arithmetic_where(unsigned char flags, gal_data_t *out,
gal_data_t *cond,
number of operators is determined from the fact that the last node in
the linked list must have a NULL pointer as its `next' element.*/
static gal_data_t *
-arithmetic_multioperand(int operator, unsigned char flags, gal_data_t *list)
+arithmetic_multioperand(int operator, int flags, gal_data_t *list)
{
uint8_t *hasblank;
size_t i=0, dnum=1;
@@ -1323,7 +1323,7 @@ gal_arithmetic_operator_string(int operator)
/* Note that for signed types, we won't be considering the unsigned types
of the larger types. */
gal_data_t *
-gal_arithmetic_convert_to_compiled_type(gal_data_t *in, unsigned char flags)
+gal_arithmetic_convert_to_compiled_type(gal_data_t *in, int flags)
{
int ntype;
char *typestring;
@@ -1377,8 +1377,7 @@ gal_arithmetic_convert_to_compiled_type(gal_data_t *in,
unsigned char flags)
/* Call functions in the `gnuastro/statistics' library. */
static gal_data_t *
-arithmetic_from_statistics(int operator, unsigned char flags,
- gal_data_t *input)
+arithmetic_from_statistics(int operator, int flags, gal_data_t *input)
{
gal_data_t *out=NULL;
int ip=(flags & GAL_ARITHMETIC_INPLACE) || (flags & GAL_ARITHMETIC_FREE);
@@ -1408,7 +1407,7 @@ arithmetic_from_statistics(int operator, unsigned char
flags,
gal_data_t *
-gal_arithmetic(int operator, unsigned char flags, ...)
+gal_arithmetic(int operator, int flags, ...)
{
va_list va;
gal_data_t *d1, *d2, *d3, *out=NULL;
diff --git a/lib/gnuastro-internal/arithmetic-binary.h
b/lib/gnuastro-internal/arithmetic-binary.h
index 496cb9f..c441a4a 100644
--- a/lib/gnuastro-internal/arithmetic-binary.h
+++ b/lib/gnuastro-internal/arithmetic-binary.h
@@ -25,8 +25,7 @@ along with Gnuastro. If not, see
<http://www.gnu.org/licenses/>.
gal_data_t *
-arithmetic_binary(int operator, uint8_t flags, gal_data_t *lo,
- gal_data_t *ro);
+arithmetic_binary(int operator, int flags, gal_data_t *lo, gal_data_t *ro);
#endif
diff --git a/lib/gnuastro-internal/arithmetic-internal.h
b/lib/gnuastro-internal/arithmetic-internal.h
index 34578a9..58c9041 100644
--- a/lib/gnuastro-internal/arithmetic-internal.h
+++ b/lib/gnuastro-internal/arithmetic-internal.h
@@ -65,7 +65,7 @@ char *
gal_arithmetic_operator_string(int operator);
gal_data_t *
-gal_arithmetic_convert_to_compiled_type(gal_data_t *in, unsigned char flags);
+gal_arithmetic_convert_to_compiled_type(gal_data_t *in, int flags);
diff --git a/lib/gnuastro-internal/arithmetic-onlyint.h
b/lib/gnuastro-internal/arithmetic-onlyint.h
index 16c36e2..2a8b3bd 100644
--- a/lib/gnuastro-internal/arithmetic-onlyint.h
+++ b/lib/gnuastro-internal/arithmetic-onlyint.h
@@ -25,11 +25,11 @@ along with Gnuastro. If not, see
<http://www.gnu.org/licenses/>.
gal_data_t *
-arithmetic_onlyint_binary(int operator, unsigned char flags, gal_data_t *lo,
+arithmetic_onlyint_binary(int operator, int flags, gal_data_t *lo,
gal_data_t *ro);
gal_data_t *
-arithmetic_onlyint_bitwise_not(unsigned char flags, gal_data_t *in);
+arithmetic_onlyint_bitwise_not(int flags, gal_data_t *in);
#endif
diff --git a/lib/gnuastro/arithmetic.h b/lib/gnuastro/arithmetic.h
index ba20c6a..f5a2b8a 100644
--- a/lib/gnuastro/arithmetic.h
+++ b/lib/gnuastro/arithmetic.h
@@ -139,7 +139,7 @@ enum gal_arithmetic_operators
gal_data_t *
-gal_arithmetic(int operator, unsigned char flags, ...);
+gal_arithmetic(int operator, int flags, ...);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnuastro-commits] master 589ca52: Arithmetic library's flag argument converted to int type,
Mohammad Akhlaghi <=