/*
 * ex: set ro: -*- buffer-read-only:t -*-
 * DO NOT EDIT THIS FILE
 * Generated by Parrot::Configure::Compiler from config/gen/config_h/config_h.in
 */

/* Copyright (C) 2001-2014, Parrot Foundation.
 */

/* config.h
 *
 * Platform-specific config file
 *
 */

#ifndef PARROT_CONFIG_H_GUARD
#define PARROT_CONFIG_H_GUARD

/*
** ONLY PUT EMBEDDER-ACCESSIBLE SYMBOLS UP HERE!!!
** Other symbols may go below.
*/

#define PARROT_VERSION          "8.1.0"
#define PARROT_CONFIG_DATE      "Sun Nov 12 12:04:21 2017 GMT"
#define PARROT_MAJOR_VERSION    8
#define PARROT_MINOR_VERSION    1
#define PARROT_PATCH_VERSION    0
#define PARROT_ARCHNAME         "amd64-linux"
#define PARROT_SHARE_EXT        ".so"
#define PARROT_LOAD_EXT         ".so"
#define PARROT_OBJ_EXT          ".o"

typedef long                    Parrot_Int;
typedef unsigned long           Parrot_UInt;
typedef double                  Parrot_Float;
typedef long                    Parrot_Opcode;
typedef void *                  Parrot_Pointer;

typedef signed char             Parrot_Int1;
typedef unsigned char           Parrot_UInt1;
typedef short                   Parrot_Int2;
typedef unsigned short          Parrot_UInt2;
typedef int                     Parrot_Int4;
typedef unsigned int            Parrot_UInt4;
#if 1
typedef long                    Parrot_Int8;
typedef unsigned long           Parrot_UInt8;
#endif

typedef float                   Parrot_Float4;
typedef double                  Parrot_Float8;

/* Required for proper compilation of StructView PMC */
#define HAS_LONGLONG            1
#define HAS_INT64               1

#ifndef PARROT_INTVAL_MIN
#  define PARROT_INTVAL_MIN              LONG_MIN
#endif
#ifndef PARROT_INTVAL_MAX
#  define PARROT_INTVAL_MAX              LONG_MAX
#endif

#ifndef PARROT_FLOATVAL_MIN
#  define PARROT_FLOATVAL_MIN            DBL_MIN
#endif
#ifndef PARROT_FLOATVAL_MAX
#  define PARROT_FLOATVAL_MAX            DBL_MAX
#endif

/* Symbol export and import decoration. At the time of writing, note that
 * PARROT_IN_CORE won't always imply !PARROT_IN_EXTENSION. */
#if defined(PARROT_IN_EXTENSION)
#if defined(__cplusplus)
#  define PARROT_EXPORT extern "C" 
#  define PARROT_DATA extern "C" 
#  define PARROT_DYNEXT_EXPORT extern "C" __attribute__ ((visibility("default")))
#else
#  define PARROT_EXPORT 
#  define PARROT_DATA extern 
#  define PARROT_DYNEXT_EXPORT __attribute__ ((visibility("default")))
#endif
#else
#if defined(__cplusplus)
#  define PARROT_EXPORT extern "C" __attribute__ ((visibility("default")))
#  define PARROT_DATA extern "C" __attribute__ ((visibility("default")))
#else
#  define PARROT_EXPORT __attribute__ ((visibility("default")))
#  define PARROT_DATA extern __attribute__ ((visibility("default")))
#endif
#endif

#define PARROT_NOINLINE __attribute__ ((noinline))

/*
 * GC_DEFAULT_TYPE selection
 * MS  -- stop-the-world mark & sweep
 * INF -- infinite memory "collector"
 * MS2 -- new style mark & sweep
 * GMS -- Generational M&S based on MS2
 */
#ifndef PARROT_GC_DEFAULT_TYPE
#  define PARROT_GC_DEFAULT_TYPE GMS
#endif
/* Deprecate the ListChunk objects in src/list.c. Still needed for imageiofreeze */
#define PARROT_BUFFERLIKE_LIST

#if defined(PARROT_IN_CORE)

/* Put any other symbols here. */

#include <stddef.h>

#define PARROT_CPU_ARCH         "amd64"
#define PARROT_CPU_TYPE         "Intel(R) Xeon(R) CPU E3-1275 v5 @ 3.60GHz"
#define PARROT_BYTEORDER        0x12345678
#define PARROT_BIGENDIAN        0

#define PARROT_LITTLEENDIAN	!(PARROT_BIGENDIAN)

typedef Parrot_Int INTVAL;
typedef Parrot_UInt UINTVAL;
typedef Parrot_Float FLOATVAL;

typedef long long HUGEINTVAL;
typedef unsigned long long UHUGEINTVAL;
typedef long double HUGEFLOATVAL;

#define INTVAL_SIZE   8
#define NUMVAL_SIZE   8
#define OPCODE_T_SIZE 8
#define PTR_SIZE      8
#define SHORT_SIZE    2
#define INT_SIZE      4
#define LONG_SIZE     8
#if 1
#  define LONGLONG_SIZE 8
#endif
#define HUGEINTVAL_SIZE 8
#define DOUBLE_SIZE   8

typedef Parrot_Opcode opcode_t;
typedef unsigned long ptrcast_t;

typedef struct _vtable VTABLE;
typedef void DPOINTER;

/* Oplib and dynamic ops related. */
#include "parrot/pbcversion.h"
#define PARROT_CORE_OPLIB_NAME    "core_ops"
#define PARROT_CORE_OPLIB_INIT    Parrot_DynOp_core_ ## PARROT_PBC_MAJOR ## _ ## PARROT_PBC_MINOR

#define  PARROT_GET_CORE_OPLIB(i)  PARROT_CORE_OPLIB_INIT((i), 1)

/* ICU. */
#define PARROT_HAS_ICU 1

/* Int and float formats. */
#define UINTVAL_FMT  "%lu"
#define INTVAL_FMT   "%ld"
#if PTR_SIZE == 4
#  define SIZE_FMT   "%d"
#else
#  define SIZE_FMT   "%ld"
#endif
#define FLOATVAL_FMT "%.15g"

#include "parrot/has_header.h"
#include "parrot/feature.h"

#endif

#endif /* PARROT_CONFIG_H_GUARD */

/*
 * Local variables:
 *   c-file-style: "parrot"
 * End:
 * vim: expandtab shiftwidth=4 cinoptions='\:2=2' :
 */

