gnuastro-commits
[Top][All Lists]
Advanced

[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, ...);
 
 
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]