diff options
Diffstat (limited to 'contrib/int8/int8.c')
-rw-r--r-- | contrib/int8/int8.c | 378 |
1 files changed, 204 insertions, 174 deletions
diff --git a/contrib/int8/int8.c b/contrib/int8/int8.c index 93822cb480f..a73986beebd 100644 --- a/contrib/int8/int8.c +++ b/contrib/int8/int8.c @@ -1,12 +1,12 @@ /*------------------------------------------------------------------------- * * int8.c-- - * Internal 64-bit integer operations + * Internal 64-bit integer operations * *------------------------------------------------------------------------- */ -#include <stdio.h> /* for sprintf proto, etc. */ -#include <stdlib.h> /* for strtod, etc. */ +#include <stdio.h> /* for sprintf proto, etc. */ +#include <stdlib.h> /* for strtod, etc. */ #include <string.h> #include <ctype.h> #include <time.h> @@ -17,7 +17,7 @@ #include "postgres.h" #include "utils/palloc.h" -#define MAXINT8LEN 25 +#define MAXINT8LEN 25 #define USE_LOCAL_CODE 1 @@ -26,53 +26,58 @@ #endif #ifndef HAVE_64BIT_INTS -typedef char[8] int64; +typedef char [8] int64; #elif defined(__alpha) typedef long int int64; + #define INT64_FORMAT "%ld" #elif defined(__GNUC__) typedef long long int int64; + #define INT64_FORMAT "%Ld" #else typedef long int int64; + #define INT64_FORMAT "%ld" #endif -int64 *int8in(char *str); -char *int8out(int64 *val); - -bool int8eq(int64 *val1, int64 *val2); -bool int8ne(int64 *val1, int64 *val2); -bool int8lt(int64 *val1, int64 *val2); -bool int8gt(int64 *val1, int64 *val2); -bool int8le(int64 *val1, int64 *val2); -bool int8ge(int64 *val1, int64 *val2); - -bool int84eq(int64 *val1, int32 val2); -bool int84ne(int64 *val1, int32 val2); -bool int84lt(int64 *val1, int32 val2); -bool int84gt(int64 *val1, int32 val2); -bool int84le(int64 *val1, int32 val2); -bool int84ge(int64 *val1, int32 val2); - -int64 *int8um(int64 *val); -int64 *int8pl(int64 *val1, int64 *val2); -int64 *int8mi(int64 *val1, int64 *val2); -int64 *int8mul(int64 *val1, int64 *val2); -int64 *int8div(int64 *val1, int64 *val2); - -int64 *int48(int32 val); -int32 int84(int64 *val); +int64 *int8in(char *str); +char *int8out(int64 * val); + +bool int8eq(int64 * val1, int64 * val2); +bool int8ne(int64 * val1, int64 * val2); +bool int8lt(int64 * val1, int64 * val2); +bool int8gt(int64 * val1, int64 * val2); +bool int8le(int64 * val1, int64 * val2); +bool int8ge(int64 * val1, int64 * val2); + +bool int84eq(int64 * val1, int32 val2); +bool int84ne(int64 * val1, int32 val2); +bool int84lt(int64 * val1, int32 val2); +bool int84gt(int64 * val1, int32 val2); +bool int84le(int64 * val1, int32 val2); +bool int84ge(int64 * val1, int32 val2); + +int64 *int8um(int64 * val); +int64 *int8pl(int64 * val1, int64 * val2); +int64 *int8mi(int64 * val1, int64 * val2); +int64 *int8mul(int64 * val1, int64 * val2); +int64 *int8div(int64 * val1, int64 * val2); + +int64 *int48(int32 val); +int32 int84(int64 * val); + #if FALSE -int64 *int28(int16 val); -int16 int82(int64 *val); +int64 *int28(int16 val); +int16 int82(int64 * val); + #endif -float64 i8tod(int64 *val); -int64 *dtoi8(float64 val); +float64 i8tod(int64 * val); +int64 *dtoi8(float64 val); #if USE_LOCAL_CODE @@ -88,7 +93,7 @@ int64 *dtoi8(float64 val); /*********************************************************************** ** - ** Routines for 64-bit integers. + ** Routines for 64-bit integers. ** ***********************************************************************/ @@ -98,264 +103,289 @@ int64 *dtoi8(float64 val); /* int8in() */ -int64 *int8in(char *str) +int64 * +int8in(char *str) { - int64 *result = PALLOCTYPE(int64); + int64 *result = PALLOCTYPE(int64); #if HAVE_64BIT_INTS - if (!PointerIsValid(str)) - elog (WARN,"Bad (null) int8 external representation",NULL); + if (!PointerIsValid(str)) + elog(WARN, "Bad (null) int8 external representation", NULL); - if (sscanf(str, INT64_FORMAT, result) != 1) - elog(WARN,"Bad int8 external representation '%s'",str); + if (sscanf(str, INT64_FORMAT, result) != 1) + elog(WARN, "Bad int8 external representation '%s'", str); #else - elog(WARN,"64-bit integers are not supported",NULL); - result = NULL; + elog(WARN, "64-bit integers are not supported", NULL); + result = NULL; #endif - return(result); -} /* int8in() */ + return (result); +} /* int8in() */ /* int8out() */ -char *int8out(int64 *val) +char * +int8out(int64 * val) { - char *result; + char *result; - int len; - char buf[MAXINT8LEN+1]; + int len; + char buf[MAXINT8LEN + 1]; #if HAVE_64BIT_INTS - if (!PointerIsValid(val)) - return(NULL); + if (!PointerIsValid(val)) + return (NULL); - if ((len = snprintf( buf, MAXINT8LEN, INT64_FORMAT, *val)) < 0) - elog (WARN,"Unable to format int8",NULL); + if ((len = snprintf(buf, MAXINT8LEN, INT64_FORMAT, *val)) < 0) + elog(WARN, "Unable to format int8", NULL); - result = PALLOC(len+1); + result = PALLOC(len + 1); - strcpy(result, buf); + strcpy(result, buf); #else - elog(WARN,"64-bit integers are not supported",NULL); - result = NULL; + elog(WARN, "64-bit integers are not supported", NULL); + result = NULL; #endif - return( result); -} /* int8out() */ + return (result); +} /* int8out() */ /*---------------------------------------------------------- - * Relational operators for int8s. + * Relational operators for int8s. *---------------------------------------------------------*/ /* int8relop() * Is val1 relop val2? */ -bool int8eq(int64 *val1, int64 *val2) +bool +int8eq(int64 * val1, int64 * val2) { - return(*val1 == *val2); -} /* int8eq() */ + return (*val1 == *val2); +} /* int8eq() */ -bool int8ne(int64 *val1, int64 *val2) +bool +int8ne(int64 * val1, int64 * val2) { - return(*val1 != *val2); -} /* int8ne() */ + return (*val1 != *val2); +} /* int8ne() */ -bool int8lt(int64 *val1, int64 *val2) +bool +int8lt(int64 * val1, int64 * val2) { - return(*val1 < *val2); -} /* int8lt() */ + return (*val1 < *val2); +} /* int8lt() */ -bool int8gt(int64 *val1, int64 *val2) +bool +int8gt(int64 * val1, int64 * val2) { - return(*val1 > *val2); -} /* int8gt() */ + return (*val1 > *val2); +} /* int8gt() */ -bool int8le(int64 *val1, int64 *val2) +bool +int8le(int64 * val1, int64 * val2) { - return(*val1 <= *val2); -} /* int8le() */ + return (*val1 <= *val2); +} /* int8le() */ -bool int8ge(int64 *val1, int64 *val2) +bool +int8ge(int64 * val1, int64 * val2) { - return(*val1 >= *val2); -} /* int8ge() */ + return (*val1 >= *val2); +} /* int8ge() */ /* int84relop() * Is 64-bit val1 relop 32-bit val2? */ -bool int84eq(int64 *val1, int32 val2) +bool +int84eq(int64 * val1, int32 val2) { - return(*val1 == val2); -} /* int84eq() */ + return (*val1 == val2); +} /* int84eq() */ -bool int84ne(int64 *val1, int32 val2) +bool +int84ne(int64 * val1, int32 val2) { - return(*val1 != val2); -} /* int84ne() */ + return (*val1 != val2); +} /* int84ne() */ -bool int84lt(int64 *val1, int32 val2) +bool +int84lt(int64 * val1, int32 val2) { - return(*val1 < val2); -} /* int84lt() */ + return (*val1 < val2); +} /* int84lt() */ -bool int84gt(int64 *val1, int32 val2) +bool +int84gt(int64 * val1, int32 val2) { - return(*val1 > val2); -} /* int84gt() */ + return (*val1 > val2); +} /* int84gt() */ -bool int84le(int64 *val1, int32 val2) +bool +int84le(int64 * val1, int32 val2) { - return(*val1 <= val2); -} /* int84le() */ + return (*val1 <= val2); +} /* int84le() */ -bool int84ge(int64 *val1, int32 val2) +bool +int84ge(int64 * val1, int32 val2) { - return(*val1 >= val2); -} /* int84ge() */ + return (*val1 >= val2); +} /* int84ge() */ /*---------------------------------------------------------- - * Arithmetic operators on 64-bit integers. + * Arithmetic operators on 64-bit integers. *---------------------------------------------------------*/ -int64 *int8um(int64 *val) +int64 * +int8um(int64 * val) { - int64 *result = PALLOCTYPE(int64); + int64 *result = PALLOCTYPE(int64); - if (!PointerIsValid(val)) - return NULL; + if (!PointerIsValid(val)) + return NULL; - *result = (- *val); + *result = (-*val); - return(result); -} /* int8um() */ + return (result); +} /* int8um() */ -int64 *int8pl(int64 *val1, int64 *val2) +int64 * +int8pl(int64 * val1, int64 * val2) { - int64 *result = PALLOCTYPE(int64); + int64 *result = PALLOCTYPE(int64); - if ((!PointerIsValid(val1)) || (!PointerIsValid(val2))) - return NULL; + if ((!PointerIsValid(val1)) || (!PointerIsValid(val2))) + return NULL; - *result = *val1 + *val2; + *result = *val1 + *val2; - return(result); -} /* int8pl() */ + return (result); +} /* int8pl() */ -int64 *int8mi(int64 *val1, int64 *val2) +int64 * +int8mi(int64 * val1, int64 * val2) { - int64 *result = PALLOCTYPE(int64); + int64 *result = PALLOCTYPE(int64); - if ((!PointerIsValid(val1)) || (!PointerIsValid(val2))) - return NULL; + if ((!PointerIsValid(val1)) || (!PointerIsValid(val2))) + return NULL; - *result = *val1 - *val2; + *result = *val1 - *val2; - return(result); -} /* int8mi() */ + return (result); +} /* int8mi() */ -int64 *int8mul(int64 *val1, int64 *val2) +int64 * +int8mul(int64 * val1, int64 * val2) { - int64 *result = PALLOCTYPE(int64); + int64 *result = PALLOCTYPE(int64); - if ((!PointerIsValid(val1)) || (!PointerIsValid(val2))) - return NULL; + if ((!PointerIsValid(val1)) || (!PointerIsValid(val2))) + return NULL; - *result = *val1 * *val2; + *result = *val1 * *val2; - return(result); -} /* int8mul() */ + return (result); +} /* int8mul() */ -int64 *int8div(int64 *val1, int64 *val2) +int64 * +int8div(int64 * val1, int64 * val2) { - int64 *result = PALLOCTYPE(int64); + int64 *result = PALLOCTYPE(int64); - if ((!PointerIsValid(val1)) || (!PointerIsValid(val2))) - return NULL; + if ((!PointerIsValid(val1)) || (!PointerIsValid(val2))) + return NULL; - *result = *val1 / *val2; + *result = *val1 / *val2; - return(result); -} /* int8div() */ + return (result); +} /* int8div() */ /*---------------------------------------------------------- - * Conversion operators. + * Conversion operators. *---------------------------------------------------------*/ -int64 *int48(int32 val) +int64 * +int48(int32 val) { - int64 *result = PALLOCTYPE(int64); + int64 *result = PALLOCTYPE(int64); - *result = val; + *result = val; - return(result); -} /* int48() */ + return (result); +} /* int48() */ -int32 int84(int64 *val) +int32 +int84(int64 * val) { - int32 result; + int32 result; - if (!PointerIsValid(val)) - elog(WARN,"Invalid (null) int64, can't convert int8 to int4",NULL); + if (!PointerIsValid(val)) + elog(WARN, "Invalid (null) int64, can't convert int8 to int4", NULL); - if ((*val < INT_MIN) || (*val > INT_MAX)) - elog(WARN,"int8 conversion to int4 is out of range",NULL); + if ((*val < INT_MIN) || (*val > INT_MAX)) + elog(WARN, "int8 conversion to int4 is out of range", NULL); - result = *val; + result = *val; - return(result); -} /* int84() */ + return (result); +} /* int84() */ #if FALSE -int64 *int28(int16 val) +int64 * +int28(int16 val) { - int64 *result; + int64 *result; - if (!PointerIsValid(result = PALLOCTYPE(int64))) - elog(WARN,"Memory allocation failed, can't convert int8 to int2",NULL); + if (!PointerIsValid(result = PALLOCTYPE(int64))) + elog(WARN, "Memory allocation failed, can't convert int8 to int2", NULL); - *result = val; + *result = val; - return(result); -} /* int28() */ + return (result); +} /* int28() */ -int16 int82(int64 *val) +int16 +int82(int64 * val) { - int16 result; + int16 result; - if (!PointerIsValid(val)) - elog(WARN,"Invalid (null) int8, can't convert to int2",NULL); + if (!PointerIsValid(val)) + elog(WARN, "Invalid (null) int8, can't convert to int2", NULL); - result = *val; + result = *val; + + return (result); +} /* int82() */ - return(result); -} /* int82() */ #endif -float64 i8tod(int64 *val) +float64 +i8tod(int64 * val) { - float64 result = PALLOCTYPE(float64data); + float64 result = PALLOCTYPE(float64data); - *result = *val; + *result = *val; - return(result); -} /* i8tod() */ + return (result); +} /* i8tod() */ -int64 *dtoi8(float64 val) +int64 * +dtoi8(float64 val) { - int64 *result = PALLOCTYPE(int64); - - if ((*val < (-pow(2,64)+1)) || (*val > (pow(2,64)-1))) - elog(WARN,"Floating point conversion to int64 is out of range",NULL); + int64 *result = PALLOCTYPE(int64); - *result = *val; + if ((*val < (-pow(2, 64) + 1)) || (*val > (pow(2, 64) - 1))) + elog(WARN, "Floating point conversion to int64 is out of range", NULL); - return(result); -} /* dtoi8() */ + *result = *val; + return (result); +} /* dtoi8() */ |