1/*
2 * This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
5 *
6 * Copyright 1997 - July 2008 CWI, August 2008 - 2019 MonetDB B.V.
7 */
8
9/* In your own module, replace "UDF" & "udf" by your module's name */
10
11#ifndef _SQL_UDF_H_
12#define _SQL_UDF_H_
13#include "sql.h"
14#include <string.h>
15
16/* This is required as-is (except from renaming "UDF" & "udf" as suggested
17 * above) for all modules for correctly exporting function on Unix-like and
18 * Windows systems. */
19
20#ifdef WIN32
21#ifndef LIBUDF
22#define udf_export extern __declspec(dllimport)
23#else
24#define udf_export extern __declspec(dllexport)
25#endif
26#else
27#define udf_export extern
28#endif
29
30/* export MAL wrapper functions */
31
32udf_export char * UDFreverse(char **ret, const char **arg);
33udf_export char * UDFBATreverse(bat *ret, const bat *arg);
34
35/* using C macro for convenient type-expansion */
36#define UDFfuse_scalar_decl(in,out) \
37 udf_export char * UDFfuse_##in##_##out(out *ret, const in *one, const in *two)
38UDFfuse_scalar_decl(bte, sht);
39UDFfuse_scalar_decl(sht, int);
40UDFfuse_scalar_decl(int, lng);
41#ifdef HAVE_HGE
42UDFfuse_scalar_decl(lng, hge);
43#endif
44
45udf_export char * UDFBATfuse(bat *ret, const bat *one, const bat *two);
46
47#endif /* _SQL_UDF_H_ */
48