mirror of
https://github.com/postgres/postgres.git
synced 2026-01-27 21:43:08 +03:00
The previous macro implementations just cast the argument to a target type but did not check whether the input type was appropriate. The function implementation can do better type checking of the input type. For the *GetDatumFast() macros, converting to an inline function doesn't work in the !USE_FLOAT8_BYVAL case, but we can use AssertVariableIsOfTypeMacro() to get a similar level of type checking. Reviewed-by: Aleksander Alekseev <aleksander@timescale.com> Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://www.postgresql.org/message-id/flat/8528fb7e-0aa2-6b54-85fb-0c0886dbd6ed%40enterprisedb.com
36 lines
595 B
C
36 lines
595 B
C
/*
|
|
* src/include/utils/cash.h
|
|
*
|
|
*
|
|
* cash.h
|
|
* Written by D'Arcy J.M. Cain
|
|
*
|
|
* Functions to allow input and output of money normally but store
|
|
* and handle it as 64 bit integer.
|
|
*/
|
|
|
|
#ifndef CASH_H
|
|
#define CASH_H
|
|
|
|
#include "fmgr.h"
|
|
|
|
typedef int64 Cash;
|
|
|
|
/* Cash is pass-by-reference if and only if int64 is */
|
|
static inline Cash
|
|
DatumGetCash(Datum X)
|
|
{
|
|
return DatumGetInt64(X);
|
|
}
|
|
|
|
static inline Datum
|
|
CashGetDatum(Cash X)
|
|
{
|
|
return Int64GetDatum(X);
|
|
}
|
|
|
|
#define PG_GETARG_CASH(n) DatumGetCash(PG_GETARG_DATUM(n))
|
|
#define PG_RETURN_CASH(x) return CashGetDatum(x)
|
|
|
|
#endif /* CASH_H */
|