Add support for Tcl 9
[pgsql.git] / src / include / utils / builtins.h
blob359c570f23e20e36cfcc461f2fa88b26f21b656d
1 /*-------------------------------------------------------------------------
3 * builtins.h
4 * Declarations for operations on built-in types.
7 * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
8 * Portions Copyright (c) 1994, Regents of the University of California
10 * src/include/utils/builtins.h
12 *-------------------------------------------------------------------------
14 #ifndef BUILTINS_H
15 #define BUILTINS_H
17 #include "fmgr.h"
18 #include "nodes/nodes.h"
19 #include "utils/fmgrprotos.h"
21 /* Sign + the most decimal digits an 8-byte number could have */
22 #define MAXINT8LEN 20
24 /* bool.c */
25 extern bool parse_bool(const char *value, bool *result);
26 extern bool parse_bool_with_len(const char *value, size_t len, bool *result);
28 /* domains.c */
29 extern void domain_check(Datum value, bool isnull, Oid domainType,
30 void **extra, MemoryContext mcxt);
31 extern bool domain_check_safe(Datum value, bool isnull, Oid domainType,
32 void **extra, MemoryContext mcxt,
33 Node *escontext);
34 extern int errdatatype(Oid datatypeOid);
35 extern int errdomainconstraint(Oid datatypeOid, const char *conname);
37 /* encode.c */
38 extern uint64 hex_encode(const char *src, size_t len, char *dst);
39 extern uint64 hex_decode(const char *src, size_t len, char *dst);
40 extern uint64 hex_decode_safe(const char *src, size_t len, char *dst,
41 Node *escontext);
43 /* int.c */
44 extern int2vector *buildint2vector(const int16 *int2s, int n);
46 /* name.c */
47 extern void namestrcpy(Name name, const char *str);
48 extern int namestrcmp(Name name, const char *str);
50 /* numutils.c */
51 extern int16 pg_strtoint16(const char *s);
52 extern int16 pg_strtoint16_safe(const char *s, Node *escontext);
53 extern int32 pg_strtoint32(const char *s);
54 extern int32 pg_strtoint32_safe(const char *s, Node *escontext);
55 extern int64 pg_strtoint64(const char *s);
56 extern int64 pg_strtoint64_safe(const char *s, Node *escontext);
57 extern uint32 uint32in_subr(const char *s, char **endloc,
58 const char *typname, Node *escontext);
59 extern uint64 uint64in_subr(const char *s, char **endloc,
60 const char *typname, Node *escontext);
61 extern int pg_itoa(int16 i, char *a);
62 extern int pg_ultoa_n(uint32 value, char *a);
63 extern int pg_ulltoa_n(uint64 value, char *a);
64 extern int pg_ltoa(int32 value, char *a);
65 extern int pg_lltoa(int64 value, char *a);
66 extern char *pg_ultostr_zeropad(char *str, uint32 value, int32 minwidth);
67 extern char *pg_ultostr(char *str, uint32 value);
69 /* oid.c */
70 extern oidvector *buildoidvector(const Oid *oids, int n);
71 extern Oid oidparse(Node *node);
72 extern int oid_cmp(const void *p1, const void *p2);
74 /* regexp.c */
75 extern char *regexp_fixed_prefix(text *text_re, bool case_insensitive,
76 Oid collation, bool *exact);
78 /* ruleutils.c */
79 extern PGDLLIMPORT bool quote_all_identifiers;
80 extern const char *quote_identifier(const char *ident);
81 extern char *quote_qualified_identifier(const char *qualifier,
82 const char *ident);
83 extern void generate_operator_clause(fmStringInfo buf,
84 const char *leftop, Oid leftoptype,
85 Oid opoid,
86 const char *rightop, Oid rightoptype);
88 /* varchar.c */
89 extern int bpchartruelen(char *s, int len);
91 /* popular functions from varlena.c */
92 extern text *cstring_to_text(const char *s);
93 extern text *cstring_to_text_with_len(const char *s, int len);
94 extern char *text_to_cstring(const text *t);
95 extern void text_to_cstring_buffer(const text *src, char *dst, size_t dst_len);
97 #define CStringGetTextDatum(s) PointerGetDatum(cstring_to_text(s))
98 #define TextDatumGetCString(d) text_to_cstring((text *) DatumGetPointer(d))
100 /* xid.c */
101 extern int xidComparator(const void *arg1, const void *arg2);
102 extern int xidLogicalComparator(const void *arg1, const void *arg2);
104 /* inet_cidr_ntop.c */
105 extern char *pg_inet_cidr_ntop(int af, const void *src, int bits,
106 char *dst, size_t size);
108 /* inet_net_pton.c */
109 extern int pg_inet_net_pton(int af, const char *src,
110 void *dst, size_t size);
112 /* network.c */
113 extern double convert_network_to_scalar(Datum value, Oid typid, bool *failure);
114 extern Datum network_scan_first(Datum in);
115 extern Datum network_scan_last(Datum in);
116 extern void clean_ipv6_addr(int addr_family, char *addr);
118 /* numeric.c */
119 extern Datum numeric_float8_no_overflow(PG_FUNCTION_ARGS);
121 /* format_type.c */
123 /* Control flags for format_type_extended */
124 #define FORMAT_TYPE_TYPEMOD_GIVEN 0x01 /* typemod defined by caller */
125 #define FORMAT_TYPE_ALLOW_INVALID 0x02 /* allow invalid types */
126 #define FORMAT_TYPE_FORCE_QUALIFY 0x04 /* force qualification of type */
127 #define FORMAT_TYPE_INVALID_AS_NULL 0x08 /* NULL if undefined */
128 extern char *format_type_extended(Oid type_oid, int32 typemod, bits16 flags);
130 extern char *format_type_be(Oid type_oid);
131 extern char *format_type_be_qualified(Oid type_oid);
132 extern char *format_type_with_typemod(Oid type_oid, int32 typemod);
134 extern int32 type_maximum_size(Oid type_oid, int32 typemod);
136 /* quote.c */
137 extern char *quote_literal_cstr(const char *rawstr);
139 #endif /* BUILTINS_H */