fis-gtm/sr_port/xfer_table.c

82 lines
2.1 KiB
C

/****************************************************************
* *
* Copyright 2001, 2009 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
* under a license. If you do not know the terms of *
* the license, please stop and do not read further. *
* *
****************************************************************/
#include "mdef.h"
#include "xfer_enum.h"
/* Declare all prototypes with same signature as xfer_entry_t */
#define XFER(a,b) b()
int
#include "xfer.h"
;
#undef XFER
#ifndef UNICODE_SUPPORTED
/* Call "z" counterparts for non-unicode flavor of these functions on unsupported platforms */
#define op_fnascii op_fnzascii
#define op_fnchar op_fnzchar
#define op_fnzechar op_fnzchar
#define op_fnextract op_fnzextract
#define op_setextract op_setzextract
#define op_fnfind op_fnzfind
#define op_fnj2 op_fnzj2
#define op_fnlength op_fnzlength
#define op_fnpopulation op_fnzpopulation
#define op_fnpiece op_fnzpiece
#define op_fnp1 op_fnzp1
#define op_setpiece op_setzpiece
#define op_setp1 op_setzp1
#define op_fntranslate op_fnztranslate
#endif
/* Initialize the table with the runtime routine functions */
#define XFER(a,b) b
GBLDEF xfer_entry_t xfer_table[] =
{
#include "xfer.h"
};
#undef XFER
#if defined(__ia64)
#ifdef XFER
# undef XFER
#endif /* XFER */
#define XFER(a,b) #b
/* On IA64, we want to use CODE_ADDRESS() macro, to dereference all the function pointers, before storing them in
global array. Now doing a dereference operation, as part of initialization, is not allowed by linux/gcc (HP'a aCC
was more tolerant towards this). So to make sure that the xfer_table is initialized correctly, before anyone
uses it, this function is called right at the beginning of gtm_startup
*/
int init_xfer_table()
{
int i;
for (i = 0; i < (SIZEOF(xfer_table) / SIZEOF(xfer_entry_t)); i++)
{
xfer_table[i] = (int (*)())CODE_ADDRESS(xfer_table[i]);
}
return 0;
}
#endif /* __ia64 */