1 #ifndef __ORAFCE__
2 #define __ORAFCE__
3 
4 #include "postgres.h"
5 #include "catalog/catversion.h"
6 #include "nodes/pg_list.h"
7 #include <sys/time.h>
8 #include "utils/datetime.h"
9 #include "utils/datum.h"
10 
11 #define TextPCopy(t) \
12 	DatumGetTextP(datumCopy(PointerGetDatum(t), false, -1))
13 
14 #define PG_GETARG_IF_EXISTS(n, type, defval) \
15 	((PG_NARGS() > (n) && !PG_ARGISNULL(n)) ? PG_GETARG_##type(n) : (defval))
16 
17 /* alignment of this struct must fit for all types */
18 typedef union vardata
19 {
20 	char	c;
21 	short	s;
22 	int		i;
23 	long	l;
24 	float	f;
25 	double	d;
26 	void   *p;
27 } vardata;
28 
29 extern int ora_instr(text *txt, text *pattern, int start, int nth);
30 extern int ora_mb_strlen(text *str, char **sizes, int **positions);
31 extern int ora_mb_strlen1(text *str);
32 
33 extern char *nls_date_format;
34 extern char *orafce_timezone;
35 
36 extern char *nls_date_format;
37 extern char *orafce_timezone;
38 
39 extern bool orafce_varchar2_null_safe_concat;
40 
41 /*
42  * Version compatibility
43  */
44 
45 extern Oid	equality_oper_funcid(Oid argtype);
46 
47 /*
48  * Date utils
49  */
50 #define STRING_PTR_FIELD_TYPE const char *const
51 
52 extern STRING_PTR_FIELD_TYPE ora_days[];
53 
54 extern int ora_seq_search(const char *name, STRING_PTR_FIELD_TYPE array[], size_t max);
55 
56 #ifdef _MSC_VER
57 
58 #define int2size(v)			(size_t)(v)
59 #define size2int(v)			(int)(v)
60 
61 #else
62 
63 #define int2size(v)			v
64 #define size2int(v)			v
65 
66 #endif
67 
68 #endif
69