/* @(#)ex_ltscntrl.h	128.1 1/20/93 19:42:30 */
/************************************************************************\
   Copyright (C) 1990 Lotus Development Corporation.  All rights reserved.
   Name:    ltscntrl.h (External Version)
   Date:    07 Feb 1989
   Description: Lotus control file for setting up hardware,
                operating system, and compiler independent standard
                definitions used for machine independent C coding.
\************************************************************************/
#if !defined(LTSCNTRL_H)
#define LTSCNTRL_H
/********************************************************************/
/*
**       Standard Lotus Defines
*/

#define ANY_OS_UNIX                    1
#define C_PROGRAMMABILITY              1

/*********************************************************************/
/*
**       Platform information
*/

#ifdef hp9000s300
#define ANY_OS_UNIX_HP 		1
#define ANY_HDW_HP300 		1
typedef struct {unsigned char real[8];} lpidouble;
#else
#ifdef hp9000s800
#define ANY_OS_UNIX_HP 		1
#define ANY_HDW_HP700 		1
typedef union {double d; unsigned char real[8];} lpidouble;
#else
#ifdef mips
#define ANY_OS_UNIX_ULTRIX 	1
typedef struct {unsigned char real[8];} lpidouble;
#else
#ifdef i386
#define ANY_HDW_386UNIX 	1
typedef struct {unsigned char real[8];} lpidouble;
#else
#ifdef sparc
#define ANY_OS_UNIX_SUN		1
#define ANY_HDW_SUN4		1
#else
#ifdef _AIX
#define ANY_OS_UNIX_AIX         1
#define ANY_HDW_RS6000          1
typedef union {double d; unsigned char real[8];} lpidouble;
#else
#ifdef m88k
#define ANY_OS_UNIX_M88K	1
#define ANY_HDW_M88K		1
typedef double lpidouble;
#else
-- ltscntrl.h: arch is not HP, DEC , ibm or i386 alter this file: addin/ex_ltscn
trl.c
#endif
#endif
#endif
#endif
#endif
#endif
#endif

/*********************************************************************/
/*
**       Compiler information
   The following switch states whether or not the compiler in
   use is an ANSI C compiler.
*/
#define L_ANSI_C                       0
/*
         ANSI standard calls for the form of a compiler's
         extended keywords to be prefaced with '_'
*/
#define  L_ANSI_FORM_EXTD_KEYWDS       0
/*********************************************************************/
/*
**       PC compiler keywords
   The following switches control the use of terms which
   mean something to compilers on PCs and nothing to
   compilers on the other systems.  Therefore on some
   systems they are defined to be nothing to get those compilers
   to ignore them.
*/
#define L_USING_PC_C_TERMS             0
#define L_USING_PASCAL_CALLS           0
#define L_USING_LOADDS_KEYWORD         0
/********************************************************************/
/*
**       Atomic data types
   These switches control the usage of certain basic C
   data type qualifiers that are ignored on some platforms.
*/
#if L_ANSI_C
#define L_USING_EXPLICIT_SIGNED_DATA   1
#else
#define L_USING_EXPLICIT_SIGNED_DATA   0
#endif
/*
     These switches control the use of the IEEE ten byte floating point.
*/

#define L_USING_SIMPLE_10BYTE_REALS    0

/********************************************************************/
/*
**             use of keyword 'pascal'
   The following switch determines the order of the keyword
   'pascal' in the declaration of external functions.  There is
   also a switch to tell if the keyword 'pascal' can be inside
   the parentheses when declaring a function pointer.
*/
#define L_USING_PASCAL_IN_FRONT        0
#define L_PUT_PASCAL_IN_FPTR_PARENS    1
/********************************************************************/
/*
**       define llocal functions based on the model and parm type
   The following switches are set to define the definition of llocalf
   and llocalp.
*/
#define L_USING_LARGE_MODEL            1
#define L_USING_PASCAL_PARMS           1
/********************************************************************/
/*
   The following switch is set to control the sharing of global data
   amongst multiple users of a shared application.  Some platforms
   need to explicitly state that the global data is not to be shared.
*/
#define  L_USING_DATA_NOSHARE          0
/********************************************************************/
/*
   The following switch is set to control the storage packing of a
   structure.  Some compilers on platforms which align data according
   to data type use a keyword to override the hardware alignment.
*/
#define  L_USING_PACKED_KEYWORD        0
/********************************************************************/
/*
**             Argument handling macros
   The following switch specifies products that must run in
   a mapped memory environment.
*/
#define L_USING_SIMPLE_MAPPED_MEMORY   0
/********************************************************************/
/*
**             Constant data
   The following defines allow us to control whether a symbol is
   declared as having a constant value.  Some systems cannot declare
   data of this type, yet on other systems, doing so can make a
   tremendous difference in performance.
*/
#if L_ANSI_C
#define L_USING_CONSTANT_DATA          1
#else
#define L_USING_CONSTANT_DATA          0
#endif
/********************************************************************/
/*
**             Register usage
   The following defines allow us to control whether a data variable
   is allocated in a register.  It is dependent on whether the system
   in question can put a variable of a given size in a register
   efficiently.
*/
#define L_USING_REGISTER_SHORTS        1
#define L_USING_REGISTER_LONGS         0
#define L_USING_REGISTER_NEAR_PTRS     1
/********************************************************************/
/*
**             Main Function Exit Codes
   The various machines assume that a 'good' exit code from a C
   MAIN function is a particular value and that a 'bad' exit code
   is NOT that value.  Unfortunately, the 'good' and 'bad' values
   are not the same on all machines.
*/
#define L_USING_GOOD_EXITCODE_IS_0     1
/********************************************************************/
/*
**             Function Return Data Types
   With the new ANSI C standards came the ability to prototype
   function return values to say that the function returns nothing.
   Not all compilers can handle a function return type of 'void'.
*/
#define L_USING_VOID_FUNCTIONS         1
/********************************************************************/
/*
**             Short unique names
   The following define sets a switch that controls the use of
   short unique names for those platforms (IBM mainframe) that
   need to use it.  This switch is not used in LTSDEFS.H, but by
   other header files that may generate the unique names.
*/
#define L_USING_UNIQUE_IN_6            0
/********************************************************************/
/*
**             END OF FILE
*/
#endif   /* if !defined(LTSCNTRL_H) */
