blob: 24ffa7392f7f52ffacbed5710ad4b7e6c5caeaae [file] [log] [blame]
/**********************************************************************
// @@@ START COPYRIGHT @@@
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
//
// @@@ END COPYRIGHT @@@
**********************************************************************/
#ifndef PLATFORM_H
#define PLATFORM_H
/* -*-C++-*-
*****************************************************************************
*
* File: Platform.h
* Description: Platform, operating system, and compiler-dependent settings
*
* Created: 9/8/95
* Modified: 08/08/2006
* Language: C (works with both C and C++ compilers)
*
*
*****************************************************************************
*/
#ifdef __gnu_linux__
#endif /* __gnu_linux__ */
/* GNU Linux: G++/GCC major version 3 */
#if __GNUC__ >= 3
#define NA_GCC
#endif
#ifdef _MSC_VER
#define NA_MSVC
#endif
/* ----------------------------------------------------------------------- */
/* define one of NA_MIPS, NA_IX86 and a define for the endianness */
/* ----------------------------------------------------------------------- */
#if defined(_M_IX86) || defined(__i386__)
#define NA_IX86
#ifndef NA_LITTLE_ENDIAN
#define NA_LITTLE_ENDIAN
#endif
#endif
/*
// On Linux, either NA_BIG_ENDIAN or NA_LITTLE_ENDIAN may have already
// been set because some other target may have been defined. The following
// should set it correctly on Linux.
*/
#if defined(NA_LINUX) && !defined(USE_EMBEDDED_SQL_DEFINITIONS)
#include <endian.h>
#if __BYTE_ORDER == __LITTLE_ENDIAN
#undef NA_BIG_ENDIAN
#define NA_LITTLE_ENDIAN
#else
#undef NA_LITTLE_ENDIAN
#define NA_BIG_ENDIAN
#endif
#endif /* NA_LINUX */
/* ----------------------------------------------------------------------- */
/* Turn on simulated FS labels feature usage for the catman. */
/* ----------------------------------------------------------------------- */
#define NA_CATMAN_SIM_FS
/* ----------------------------------------------------------------------- */
/* Designate use of static or dynamic queries for Update Statistics. */
/* ----------------------------------------------------------------------- */
#undef NA_USTAT_USE_STATIC
/* ----------------------------------------------------------------------- */
/* Designate using the real ARKFS */
/* ----------------------------------------------------------------------- */
#ifndef NA_ARKFS
#define NA_ARKFS
#endif
/* ----------------------------------------------------------------------- */
/* Designate if real CatMan integration has happened (or still using sqlcat */
/* simulator). */
/* ----------------------------------------------------------------------- */
#define NA_CATMAN_SIM
/* ----------------------------------------------------------------------- */
/* Designate if we're switched over to FLEX/BISON */
/* ----------------------------------------------------------------------- */
/* BBZ -- this flag is used in sqlci */
#define NA_FLEXBUILD
/* ----------------------------------------------------------------------- */
/* Set the flavor of Guardian IPC that is used */
/* ----------------------------------------------------------------------- */
#ifndef NA_NO_GUARDIAN_IPC /* allow override from dev environment*/
#define NA_GUARDIAN_IPC
#endif
#ifndef NA_NO_GUARDIAN_IPC /* allow override from dev environment*/
#define NA_GUARDIAN_IPC
#endif
#if defined( NA_C89 ) || defined( NA_MSVC )
/* ----------------------------------------------------------------------- */
/* C89 and MSVC perform template instantiation at compile time, */
/* so make sure they see the template implementation files */
/* ----------------------------------------------------------------------- */
/* The following defines cause the implementation files for templates to
* be sourced in at compile time, so the compiler actually can perform
* template instantiation at compile time
*/
#ifndef NA_MSVC
/* RogueWave file rw/compiler.h recognizes this automatically for
Microsoft Visual C++, no need to set here */
#ifndef RW_COMPILE_INSTANTIATE
#define RW_COMPILE_INSTANTIATE
#endif
#endif
#ifndef NA_COMPILE_INSTANTIATE
#define NA_COMPILE_INSTANTIATE
#endif
/* The following define should be used in the template instantiation file
* to create an empty object file, if the define is set
*/
#ifndef NO_TEMPLATE_INSTANTIATION_FILE
#define NO_TEMPLATE_INSTANTIATION_FILE
#endif
#endif
#define NA_IEEE_FLOAT
#define NA_EIDPROC
#define _resident
/* Use ANSI standard namespace for .NET and new GCC compilers. */
#if (_MSC_VER >= 1300) || (__GNUC__ >= 3)
#define NA_STD_NAMESPACE
#endif
#ifdef NA_64BIT
/* dg64 - need NA_MAX_PATH */
#define NA_MAX_PATH PATH_MAX
#else
#define NA_MAX_PATH _MAX_PATH
#endif
/* BBZ -- used only in /sqlci/sqlci_lex.ll */
#define NA_EXTERN_C_LINKAGE
#define NA_WIDE_CHARACTER
#if !defined(NDEBUG) && !defined(NA_NO_C_RUNTIME)
#define NA_DEBUG_C_RUNTIME
#endif
/* Linux with the gcc compiler */
typedef int TInt32;
typedef long long int TInt64;
/*
// ANSI C++ casts (e.g. static_cast) are not supported by NSK c89 version2.
// ANSI C++ casts are supported by the VC++ 5.0 and later compiler
// and by NSK c89 version3.
*/
#if !defined(NA_C89_VERSION2) && !defined(_EMBEDDED)
#define NA_HAS_ANSI_CPP_CASTS
#endif
//
// -------------------------------------------------------------------------
// Set to enable conditional compilation of SeaQuest Unicode code for Linux
// -------------------------------------------------------------------------
//
#define NA_SQ_UNI
/*
// -------------------------------------------------------------------------
// Set to enable conditional compilation of SeaQuest Multi-Temperate Data
// (MTD) code using the metadata column ACCESS_PATH_COLS.DIVISION_KEY_SEQ_NUM
// that is available in the SeaQuest SQL software only.
// -------------------------------------------------------------------------
*/
#define NA_SQ_SMD_DIV_COL
/*
//--------------------------------------------------------------------------
// Hybrid Super Cluster (HSC) definitions
//--------------------------------------------------------------------------
*/
#if defined(_HSC) || defined(HSC)
#define NA_HSC
#endif
#if defined(NA_STD_NAMESPACE) && !defined(USE_EMBEDDED_SQL_DEFINITIONS)
/* If using an ANSI C++ compiler, then go ahead and use the std namespace. */
namespace std {}
using namespace std;
#endif
/* For process thread id, it is long on Linux currently */
typedef long ThreadId;
/* For declare thread private variables (have to be POD types) */
#define THREAD_P __thread
/*
// ---------------------------------------------------------------------
// Used where variable size matters
// Moved from NAVersionedObject.h and Int64.h
// ---------------------------------------------------------------------
*/
typedef char Int8;
typedef unsigned char UInt8;
typedef unsigned char UChar;
typedef short Int16;
typedef unsigned short UInt16;
#if !defined(USE_EMBEDDED_SQL_DEFINITIONS)
typedef int Int32;
typedef unsigned int UInt32;
#endif
typedef float Float32;
typedef double Float64;
#if defined( __linux__ ) && defined( NA_64BIT )
typedef long Int64;
typedef unsigned long UInt64;
#elif (defined( NA_WINNT ) || defined(NA_LINUX)) && !defined(USE_EMBEDDED_SQL_DEFINITIONS ) /* NT_PORT SK 08/13/96 */
typedef _int64 Int64;
typedef unsigned __int64 UInt64;
#endif /* NA_C89 */
/*
// format strings, in case not defined (should be seabed/int/types.h)
*/
#ifndef PFSZ
#ifdef NA_64BIT
#define PFLL "%ld"
#define PFLLX "%lx"
#define PF64 "%ld"
#define PF64X "%lx"
#define PFSZ "%lu"
#define PFSZX "%lx"
#else
#define PFLL "%lld"
#define PFLLX "%llx"
#define PF64 "%lld"
#define PF64X "%llx"
#define PFSZ "%u"
#define PFSZX "%x"
#endif // NA_64BIT
#endif // PFSZ
/*
// additional format strings used only in SQL code
// PFV64 and PFLV64 for variable width field and left pad 0s
// PFP64 added for variable precision.
*/
#ifdef NA_64BIT
#define PFV64 "%*ld"
#define PFLV64 "%0*ld"
#define PFP64 "%.*ld"
#else
#define PFV64 "%*lld"
#define PFLV64 "%0*lld"
#define PFP64 "%.*lld"
#endif // NA_64BIT
/* Lng32 to replace "long" or "signed long" */
/* and some will remain Int32 and others would become Int64 when done */
typedef int Lng32;
/* ULng32 to replace "unsigned long" or "unsigned long int" */
/* and some will remain UInt32 and others would become UInt64 when done */
typedef unsigned int ULng32;
/* These types are used for variables that must store integers sometime */
/* and pointers other time. Could have given a better name */
typedef long Long;
typedef unsigned long ULong;
//@ZXrngspec
#endif /* PLATFORM_H */