/*
 * DO NOT EDIT THIS FILE
 * Generated by Parrot::Configure::Step from config/gen/config_h/config_h.in
 */

/* Copyright (C) 2001-2006, The Perl Foundation. */
/* $Id: config_h.in 12827 2006-05-30 02:28:15Z coke $ */

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

#if !defined(PARROT_CONFIG_H_GUARD)
#define PARROT_CONFIG_H_GUARD

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

#define PARROT_VERSION          "0.4.5"
#define PARROT_REVISION         0
#define PARROT_CONFIG_DATE      "Sat Dec  1 06:07:05 2007"
#define PARROT_MAJOR_VERSION    0
#define PARROT_MINOR_VERSION    4
#define PARROT_PATCH_VERSION    5
#define PARROT_ARCHNAME         "i386-freebsd"
#define PARROT_JIT_CAPABLE      1
#define PARROT_EXEC_CAPABLE     1
#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;

/* 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)
#define PARROT_API 
#define PARROT_DYNEXT_EXPORT 
#else
#define PARROT_API 
#endif

#if defined(PARROT_IN_CORE)

/* Put any other symbols here. */

#include <stddef.h>

#define PARROT_CPU_ARCH         "i386"
#define PARROT_OS_NAME          "FREEBSD"
#define PARROT_BYTEORDER        0x1234
#define PARROT_BIGENDIAN        0
#define PARROT_PTR_ALIGNMENT    1

#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 4
#define NUMVAL_SIZE 8
#define OPCODE_T_SIZE 4
#define PTR_SIZE 4
#define SHORT_SIZE 2
#define INT_SIZE 4
#define LONG_SIZE 4
#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  "i386"
#define JIT_OSNAME   "FREEBSD"
#define JIT_ARCHNAME "i386-freebsd"
#define JIT_CAPABLE  1
#define EXEC_CAPABLE 1
#define PARROT_EXEC_OS_FREEBSD 1
#define PARROT_I386 1

/* Oplib and dynamic ops related. */
#define PARROT_CORE_OPLIB_NAME "core"
#define PARROT_CORE_OPLIB_INIT Parrot_DynOp_core_0_4_5
#define PARROT_CORE_PREDEREF_OPLIB_INIT Parrot_DynOp_core_prederef_0_4_5
#define PARROT_CORE_SWITCH_OPLIB_INIT Parrot_DynOp_core_switch_0_4_5
#define PARROT_CORE_CG_OPLIB_INIT Parrot_DynOp_core_cg_0_4_5
#define PARROT_CORE_CGP_OPLIB_INIT Parrot_DynOp_core_cgp_0_4_5

/* ICU. */
#define PARROT_HAS_ICU 1

/* Int and float formats. */
#define INTVAL_FMT "%ld"
#define FLOATVAL_FMT "%f"

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

#endif

#endif

/*
 * Local variables:
 * c-indentation-style: bsd
 * c-basic-offset: 4
 * indent-tabs-mode: nil
 * End:
 *
 * vim: expandtab shiftwidth=4:
 */
