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

/* Copyright (C) 2001-2009, Parrot Foundation.
 * $Id: config_h.in 43490 2010-01-20 03:38:39Z jkeenan $
 */

/* 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          "2.1.1"
#define PARROT_CONFIG_DATE      "Thu Feb 25 23:57:30 2010 GMT"
#define PARROT_MAJOR_VERSION    2
#define PARROT_MINOR_VERSION    1
#define PARROT_PATCH_VERSION    1
#define PARROT_ARCHNAME         "amd64-freebsd"
#define PARROT_JIT_CAPABLE      0
#define PARROT_EXEC_CAPABLE     0
#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 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;

typedef float              Parrot_Float4;
typedef double              Parrot_Float8;

#include "parrot/platform_limits.h"
#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

/* Temporary until we find a way to make it work in the right place. */
struct PackFile;      typedef struct PackFile * Parrot_PackFile;

/* 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

#if defined(PARROT_IN_CORE)

/* Put any other symbols here. */

#include <stddef.h>

#define PARROT_CPU_ARCH         "amd64"
#define PARROT_OS_NAME          "freebsd"
#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 HUGEINTVAL;
typedef unsigned 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
#define HUGEINTVAL_SIZE 8
#define DOUBLE_SIZE 8

/* We don't have a portable config for 64-bit
 * registers yet. */
#if 0
#  if INTVAL_SIZE >= 8
typedef Parrot_Int   INTVAL64;
typedef Parrot_Int   Parrot_Int64;
#  else
#    if HUGEINTVAL_SIZE >= 8
typedef HUGEINTVAL   INTVAL64;
typedef HUGEINTVAL   Parrot_Int64;
#    else
/* No 64-bit type available? */
typedef union { unsigned char b[8]; } INTVAL64;
typedef INTVAL64   Parrot_Int64;
#    endif
#  endif
#endif


typedef Parrot_Opcode opcode_t;
typedef size_t ptrcast_t;

typedef struct _vtable VTABLE;
typedef void DPOINTER;

/* JIT and exec cores. */
#define JIT_CPUARCH  "amd64"
#define JIT_OSNAME   "freebsd"
#define JIT_ARCHNAME "nojit"
#define JIT_CAPABLE  0
#define EXEC_CAPABLE 0
#define PARROT_EXEC_OS_freebsd 1
#define PARROT_amd64 1

/* Oplib and dynamic ops related. */
#define PARROT_CORE_OPLIB_NAME "core"
#define PARROT_CORE_OPLIB_INIT Parrot_DynOp_core_2_1_1
#define PARROT_CORE_PREDEREF_OPLIB_INIT Parrot_DynOp_core_prederef_2_1_1
#define PARROT_CORE_SWITCH_OPLIB_INIT Parrot_DynOp_core_switch_2_1_1
#define PARROT_CORE_CG_OPLIB_INIT Parrot_DynOp_core_cg_2_1_1
#define PARROT_CORE_CGP_OPLIB_INIT Parrot_DynOp_core_cgp_2_1_1

/* ICU. */
#define PARROT_HAS_ICU 1

/* Int and float formats. */
#define INTVAL_FMT "%ld"
#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:
 */

