#ifndef GCIUA_HF
#define GCIUA_HF TRUE
/*=========================================================================
 * Copyright (C) VMware, Inc. 1986-2011.  All Rights Reserved.
 *
 * Name - gciua.hf
 *
 * Description - Functional interface to the GemStone C interface (GCI).
 *               This header file must be included in modules that define
 *               GCI user actions.
 *  Note that gci.hf, gcirtl.hf, and gciua.hf are mutually exclusive.
 *
 * $Id: gciua.hf,v 1.8 2008-01-09 22:51:04 stever Exp $
 *
 *========================================================================
 */

#include "flag.ht"
#if defined(FLG_MSWIN32) || defined(FLG_AIX_UNIX) || defined(FLG_LINUX_UNIX) || defined(FLG_APPLE_UNIX)
#define GCIUA_USES_RTL 1
/* On these platforms the linker may not allow unresolved references
 * when building a shared library, so we use gcirtlm.hf
 */
#else /* not Windows NT */
#define GCIUA_USES_RTL 0
/* On these platforms shared libraries allow unresolved references at
 * build time and will resolve to symbols in the program that loads them
 * so we use gci.hf .
 */
#endif

#if !GCIUA_USES_RTL

#undef GCIUA_HF
#include "gci.hf"
#define GCIUA_HF TRUE

#else /* uses rtl */ 

#if defined(GCI_HF) || defined(GCIDLL_HF)
#error Include gciua.hf or gci.hf not both.
#endif

#ifdef GCIRTL_HF
#error Include gcirtl.hf or gciua.hf, not both.
#endif

#include "gcirtlm.hf"

/********************** Private Interface **********************/

/* uaPrivGciRtlFuncs is the function jump table. It is used to make
 * calls to a dynamically loaded GCI library.
 * It should only be accessed through the public interface.
 */
extern const GciRtlJumpSType* uaPrivGciRtlFuncs;
#define GCI_FUNC_TABLE_PTR uaPrivGciRtlFuncs

#endif  /* uses rtl */

#include "gciuser.hf"

#endif /* GCIRTL_HF */
