
#ifndef ORAFCE_BUILTINS
#define ORAFCE_BUILTINS

#ifndef PGDLLEXPORT
#ifdef _MSC_VER
#define PGDLLEXPORT	__declspec(dllexport)

/*
 * PG_MODULE_MAGIC and PG_FUNCTION_INFO_V1 macros are broken for MSVC.
 * So, we redefine them.
 */

#undef PG_MODULE_MAGIC
#define PG_MODULE_MAGIC \
extern PGDLLEXPORT const Pg_magic_struct *PG_MAGIC_FUNCTION_NAME(void); \
const Pg_magic_struct * \
PG_MAGIC_FUNCTION_NAME(void) \
{ \
	static const Pg_magic_struct Pg_magic_data = PG_MODULE_MAGIC_DATA; \
	return &Pg_magic_data; \
} \
extern int no_such_variable

#undef PG_FUNCTION_INFO_V1
#define PG_FUNCTION_INFO_V1(funcname) \
extern PGDLLEXPORT const Pg_finfo_record * CppConcat(pg_finfo_,funcname)(void); \
const Pg_finfo_record * \
CppConcat(pg_finfo_,funcname) (void) \
{ \
	static const Pg_finfo_record my_finfo = { 1 }; \
	return &my_finfo; \
} \
extern int no_such_variable

#else
#define PGDLLEXPORT	PGDLLIMPORT
#endif
#endif

/* from aggregate.c */
extern PGDLLEXPORT Datum orafce_listagg1_transfn(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_wm_concat_transfn(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_listagg2_transfn(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_listagg_finalfn(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_median4_transfn(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_median4_finalfn(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_median8_transfn(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_median8_finalfn(PG_FUNCTION_ARGS);

/* from alert.c */
extern PGDLLEXPORT Datum dbms_alert_register(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_alert_remove(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_alert_removeall(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_alert_set_defaults(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_alert_signal(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_alert_waitany(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_alert_waitone(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_alert_waitany_maxwait(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_alert_waitone_maxwait(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_alert_defered_signal(PG_FUNCTION_ARGS);

/* from assert.c */
extern PGDLLEXPORT Datum dbms_assert_enquote_literal(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_assert_enquote_name(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_assert_noop(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_assert_qualified_sql_name(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_assert_schema_name(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_assert_simple_sql_name(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_assert_object_name(PG_FUNCTION_ARGS);

/* from convert.c */
extern PGDLLEXPORT Datum orafce_to_char_int4(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_to_char_int8(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_to_char_float4(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_to_char_float8(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_to_char_numeric(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_to_char_timestamp(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_to_number(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_to_multi_byte(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_to_single_byte(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_unistr(PG_FUNCTION_ARGS);

/* from datefce.c */
extern PGDLLEXPORT Datum next_day(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum next_day_by_index(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum last_day(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum months_between(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum add_months(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum ora_to_date(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum ora_date_trunc(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum ora_date_round(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum ora_timestamptz_trunc(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum ora_timestamptz_round(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum ora_timestamp_trunc(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum ora_timestamp_round(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_sysdate(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_sessiontimezone(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_dbtimezone(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_sys_extract_utc(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_sys_extract_utc_oracle_date(PG_FUNCTION_ARGS);

/* from file.c */
extern PGDLLEXPORT Datum utl_file_fopen(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum utl_file_is_open(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum utl_file_get_line(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum utl_file_get_nextline(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum utl_file_put(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum utl_file_put_line(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum utl_file_new_line(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum utl_file_putf(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum utl_file_fflush(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum utl_file_fclose(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum utl_file_fclose_all(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum utl_file_fremove(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum utl_file_frename(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum utl_file_fcopy(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum utl_file_fgetattr(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum utl_file_tmpdir(PG_FUNCTION_ARGS);

/* from others.c */
extern PGDLLEXPORT Datum ora_nvl(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum ora_nvl2(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum ora_concat(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum ora_nlssort(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum ora_set_nls_sort(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum ora_lnnvl(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum ora_decode(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_dump(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum ora_get_major_version(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum ora_get_major_version_num(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum ora_get_full_version_num(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum ora_get_platform(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum ora_get_status(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum ora_greatest(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum ora_least(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_sys_guid(PG_FUNCTION_ARGS);

/* from pipe.c */
extern PGDLLEXPORT Datum dbms_pipe_pack_message_text(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_pipe_unpack_message_text(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_pipe_send_message(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_pipe_receive_message(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_pipe_unique_session_name(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_pipe_list_pipes(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_pipe_next_item_type(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_pipe_create_pipe(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_pipe_create_pipe_2(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_pipe_create_pipe_1(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_pipe_reset_buffer(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_pipe_purge(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_pipe_remove_pipe(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_pipe_pack_message_date(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_pipe_unpack_message_date(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_pipe_pack_message_timestamp(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_pipe_unpack_message_timestamp(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_pipe_pack_message_number(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_pipe_unpack_message_number(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_pipe_pack_message_bytea(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_pipe_unpack_message_bytea(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_pipe_pack_message_record(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_pipe_unpack_message_record(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_pipe_pack_message_integer(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_pipe_pack_message_bigint(PG_FUNCTION_ARGS);

/* from plunit.c */
extern PGDLLEXPORT Datum plunit_assert_true(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plunit_assert_true_message(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plunit_assert_false(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plunit_assert_false_message(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plunit_assert_null(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plunit_assert_null_message(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plunit_assert_not_null(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plunit_assert_not_null_message(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plunit_assert_equals(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plunit_assert_equals_message(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plunit_assert_equals_range(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plunit_assert_equals_range_message(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plunit_assert_not_equals(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plunit_assert_not_equals_message(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plunit_assert_not_equals_range(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plunit_assert_not_equals_range_message(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plunit_fail(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plunit_fail_message(PG_FUNCTION_ARGS);

/* from plvdate.c */
extern PGDLLEXPORT Datum plvdate_add_bizdays(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvdate_nearest_bizday(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvdate_next_bizday(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvdate_bizdays_between(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvdate_prev_bizday(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvdate_isbizday(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvdate_set_nonbizday_dow(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvdate_unset_nonbizday_dow(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvdate_set_nonbizday_day(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvdate_unset_nonbizday_day(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvdate_use_easter(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvdate_using_easter(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvdate_use_great_friday(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvdate_using_great_friday(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvdate_include_start(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvdate_including_start(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvdate_default_holidays(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvdate_version(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvdate_days_inmonth(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvdate_isleapyear(PG_FUNCTION_ARGS);

/* from plvlec.c */
extern PGDLLEXPORT Datum plvlex_tokens(PG_FUNCTION_ARGS);

/* from plvstr.c */
extern PGDLLEXPORT Datum plvstr_rvrs(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvstr_normalize(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvstr_is_prefix_text(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvstr_is_prefix_int(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvstr_is_prefix_int64(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvstr_lpart(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvstr_rpart(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvstr_lstrip(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvstr_rstrip(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvstr_left(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvstr_right(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvstr_substr2(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvstr_substr3(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvstr_instr2(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvstr_instr3(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvstr_instr4(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvstr_betwn_i(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvstr_betwn_c(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvstr_swap(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvchr_nth(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvchr_first(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvchr_last(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvchr_is_kind_i(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvchr_is_kind_a(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvchr_char_name(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum oracle_substr2(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum oracle_substr3(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum oracle_substrb2(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum oracle_substrb3(PG_FUNCTION_ARGS);

/* from plvsubst.c */
extern PGDLLEXPORT Datum plvsubst_string_array(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvsubst_string_string(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvsubst_setsubst(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvsubst_setsubst_default(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum plvsubst_subst(PG_FUNCTION_ARGS);

/* from putline.c */
extern PGDLLEXPORT Datum dbms_output_enable(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_output_enable_default(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_output_disable(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_output_serveroutput(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_output_put(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_output_put_line(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_output_new_line(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_output_get_line(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_output_get_lines(PG_FUNCTION_ARGS);

/* from random.c */
extern PGDLLEXPORT Datum dbms_random_initialize(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_random_normal(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_random_random(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_random_seed_int(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_random_seed_varchar(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_random_string(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_random_terminate(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_random_value(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_random_value_range(PG_FUNCTION_ARGS);

/* from utility.c */
extern PGDLLEXPORT Datum dbms_utility_format_call_stack0(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_utility_format_call_stack1(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_utility_get_time(PG_FUNCTION_ARGS);

/* from oraguc.c */
extern void PGDLLEXPORT _PG_init(void);

/* from charpad.c */
extern PGDLLEXPORT Datum orafce_lpad(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_rpad(PG_FUNCTION_ARGS);

/* from charlen.c */
extern PGDLLEXPORT Datum orafce_bpcharlen(PG_FUNCTION_ARGS);

/* from varchar2.c */
extern PGDLLEXPORT Datum varchar2in(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum varchar2out(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum varchar2(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum varchar2recv(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_concat2(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_varchar_transform(PG_FUNCTION_ARGS);

/* from nvarchar2.c */
extern PGDLLEXPORT Datum nvarchar2in(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum nvarchar2out(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum nvarchar2(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum nvarchar2recv(PG_FUNCTION_ARGS);

/* from replace_empty_string.c */
extern PGDLLEXPORT Datum orafce_replace_empty_strings(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_replace_null_strings(PG_FUNCTION_ARGS);

/* from regexp.c */
extern PGDLLEXPORT Datum orafce_regexp_instr(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_regexp_instr_no_start(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_regexp_instr_no_n(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_regexp_instr_no_endoption(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_regexp_instr_no_flags(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_regexp_instr_no_subexpr(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_textregexreplace_noopt(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_textregexreplace(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_textregexreplace_extended(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_textregexreplace_extended_no_n(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_textregexreplace_extended_no_flags(PG_FUNCTION_ARGS);

/* from math.c */
extern PGDLLEXPORT Datum orafce_reminder_smallint(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_reminder_int(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_reminder_bigint(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum orafce_reminder_numeric(PG_FUNCTION_ARGS);

/* from dbms_sql.c */
extern PGDLLEXPORT Datum dbms_sql_is_open(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_sql_open_cursor(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_sql_close_cursor(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_sql_parse(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_sql_bind_variable(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_sql_bind_variable_f(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_sql_bind_array_3(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_sql_bind_array_5(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_sql_define_column(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_sql_define_array(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_sql_execute(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_sql_fetch_rows(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_sql_execute_and_fetch(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_sql_column_value(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_sql_column_value_f(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_sql_last_row_count(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_sql_describe_columns(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_sql_describe_columns_f(PG_FUNCTION_ARGS);
extern PGDLLEXPORT Datum dbms_sql_debug_cursor(PG_FUNCTION_ARGS);

#endif
