1
0
mirror of https://github.com/postgres/postgres.git synced 2026-01-27 21:43:08 +03:00
Files
postgres/src/include/utils/cash.h
Peter Eisentraut c8b2ef05f4 Convert *GetDatum() and DatumGet*() macros to inline functions
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
2022-09-27 20:50:21 +02:00

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 */