added some bigint code for division
This commit is contained in:
parent
f618154aaf
commit
d8da07cb59
@ -47,6 +47,18 @@
|
|||||||
self primitiveFailed.
|
self primitiveFailed.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#method quo: aNumber
|
||||||
|
{
|
||||||
|
<primitive: #_integer_quo>
|
||||||
|
self primitiveFailed.
|
||||||
|
}
|
||||||
|
|
||||||
|
#method rem: aNumber
|
||||||
|
{
|
||||||
|
<primitive: #_integer_rem>
|
||||||
|
self primitiveFailed.
|
||||||
|
}
|
||||||
|
|
||||||
#method = aNumber
|
#method = aNumber
|
||||||
{
|
{
|
||||||
<primitive: #_integer_eq>
|
<primitive: #_integer_eq>
|
||||||
|
@ -270,6 +270,9 @@ PROCESS TESTING
|
|||||||
|
|
||||||
(2r111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 * 128971234897128931) dump.
|
(2r111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 * 128971234897128931) dump.
|
||||||
|
|
||||||
|
(-10000 rem: -3) dump.
|
||||||
|
(-10000 quo: -3) dump.
|
||||||
|
|
||||||
"
|
"
|
||||||
FFI isNil dump.
|
FFI isNil dump.
|
||||||
FFI notNil dump.
|
FFI notNil dump.
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#if defined(STIX_USE_FULL_WORD)
|
#if defined(STIX_USE_FULL_WORD)
|
||||||
/* nothign special */
|
/* nothing special */
|
||||||
#else
|
#else
|
||||||
# define MAKE_WORD(hw1,hw2) ((stix_oow_t)(hw1) | (stix_oow_t)(hw2) << STIX_LIW_BITS)
|
# define MAKE_WORD(hw1,hw2) ((stix_oow_t)(hw1) | (stix_oow_t)(hw2) << STIX_LIW_BITS)
|
||||||
#endif
|
#endif
|
||||||
@ -1054,62 +1054,53 @@ stix_oop_t stix_divints (stix_t* stix, stix_oop_t x, stix_oop_t y, stix_oop_t* r
|
|||||||
q = xv / yv;
|
q = xv / yv;
|
||||||
STIX_ASSERT (STIX_IN_SMOOI_RANGE(q));
|
STIX_ASSERT (STIX_IN_SMOOI_RANGE(q));
|
||||||
|
|
||||||
#if 1
|
if (rem)
|
||||||
/* TODO : verify this... */
|
|
||||||
r = xv - yv * q;
|
|
||||||
STIX_ASSERT (STIX_IN_SMOOI_RANGE(r));
|
|
||||||
|
|
||||||
/* handle sign difference */
|
|
||||||
if (r && ((yv ^ r) < 0))
|
|
||||||
{
|
{
|
||||||
/* if the sign bit is different betwen yv and r,
|
r = xv - yv * q; /* r = xv % yv; */
|
||||||
* the sign bit of (yv ^ r) must be set */
|
|
||||||
r += yv;
|
|
||||||
--q;
|
|
||||||
|
|
||||||
STIX_ASSERT (STIX_IN_SMOOI_RANGE(r));
|
STIX_ASSERT (STIX_IN_SMOOI_RANGE(r));
|
||||||
}
|
|
||||||
#else
|
|
||||||
r = xv % yv;
|
|
||||||
STIX_ASSERT (STIX_IN_SMOOI_RANGE(r));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
*rem = STIX_SMOOI_TO_OOP(r);
|
*rem = STIX_SMOOI_TO_OOP(r);
|
||||||
|
}
|
||||||
|
|
||||||
return STIX_SMOOI_TO_OOP((stix_ooi_t)q);
|
return STIX_SMOOI_TO_OOP((stix_ooi_t)q);
|
||||||
}
|
}
|
||||||
else if (STIX_OOP_IS_SMOOI(x))
|
else if (STIX_OOP_IS_SMOOI(x))
|
||||||
{
|
{
|
||||||
if (STIX_OOP_TO_SMOOI(x) == 0)
|
if (STIX_OOP_TO_SMOOI(x) == 0)
|
||||||
|
{
|
||||||
|
if (rem)
|
||||||
{
|
{
|
||||||
t = clone_bigint (stix, y, STIX_OBJ_GET_SIZE(y));
|
t = clone_bigint (stix, y, STIX_OBJ_GET_SIZE(y));
|
||||||
if (!t) return STIX_NULL;
|
if (!t) return STIX_NULL;
|
||||||
|
|
||||||
*rem = t;
|
*rem = t;
|
||||||
|
}
|
||||||
return STIX_SMOOI_TO_OOP(0);
|
return STIX_SMOOI_TO_OOP(0);
|
||||||
}
|
}
|
||||||
|
/* TODO: convert x to bigint */
|
||||||
}
|
}
|
||||||
else if (STIX_OOP_IS_SMOOI(y))
|
else if (STIX_OOP_IS_SMOOI(y))
|
||||||
{
|
{
|
||||||
stix_ooi_t yv;
|
switch (STIX_OOP_TO_SMOOI(y))
|
||||||
|
|
||||||
if (yv == 0)
|
|
||||||
{
|
{
|
||||||
|
case 0:
|
||||||
stix->errnum = STIX_EDIVBY0;
|
stix->errnum = STIX_EDIVBY0;
|
||||||
return STIX_NULL;
|
return STIX_NULL;
|
||||||
}
|
|
||||||
else if (yv == 1)
|
case 1:
|
||||||
{
|
|
||||||
t = clone_bigint (stix, x, STIX_OBJ_GET_SIZE(x));
|
t = clone_bigint (stix, x, STIX_OBJ_GET_SIZE(x));
|
||||||
if (!t) return STIX_NULL;
|
if (!t) return STIX_NULL;
|
||||||
|
if (rem) *rem = STIX_SMOOI_TO_OOP(0);
|
||||||
|
return t;
|
||||||
|
|
||||||
*rem = STIX_SMOOI_TO_OOP(0);
|
case -1:
|
||||||
|
t = clone_bigint_negated (stix, x, STIX_OBJ_GET_SIZE(x));
|
||||||
|
if (!t) return STIX_NULL;
|
||||||
|
if (rem) *rem = STIX_SMOOI_TO_OOP(0);
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
}
|
/* TODO: convert y to bigint */
|
||||||
else
|
|
||||||
{
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* TODO: do bigint division. */
|
||||||
return STIX_NULL;
|
return STIX_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1018,31 +1018,12 @@ static int prim_integer_add (stix_t* stix, stix_ooi_t nargs)
|
|||||||
rcv = ACTIVE_STACK_GET(stix, stix->sp - 1);
|
rcv = ACTIVE_STACK_GET(stix, stix->sp - 1);
|
||||||
arg = ACTIVE_STACK_GET(stix, stix->sp);
|
arg = ACTIVE_STACK_GET(stix, stix->sp);
|
||||||
|
|
||||||
#if 0
|
|
||||||
if (STIX_OOP_IS_SMOOI(rcv) && STIX_OOP_IS_SMOOI(arg))
|
|
||||||
{
|
|
||||||
stix_ooi_t tmp;
|
|
||||||
|
|
||||||
tmp = STIX_OOP_TO_SMOOI(rcv) + STIX_OOP_TO_SMOOI(arg);
|
|
||||||
/* TODO: check overflow. if so convert it to LargeInteger */
|
|
||||||
|
|
||||||
ACTIVE_STACK_POP (stix);
|
|
||||||
ACTIVE_STACK_SETTOP (stix, STIX_SMOOI_TO_OOP(tmp));
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TODO: handle LargeInteger */
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
#else
|
|
||||||
res = stix_addints (stix, rcv, arg);
|
res = stix_addints (stix, rcv, arg);
|
||||||
if (!res) return (stix->errnum == STIX_EINVAL)? 0: -1; /* soft or hard failure */
|
if (!res) return (stix->errnum == STIX_EINVAL? 0: -1); /* soft or hard failure */
|
||||||
|
|
||||||
ACTIVE_STACK_POP (stix);
|
ACTIVE_STACK_POP (stix);
|
||||||
ACTIVE_STACK_SETTOP (stix, res);
|
ACTIVE_STACK_SETTOP (stix, res);
|
||||||
return 1;
|
return 1;
|
||||||
#endif
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int prim_integer_sub (stix_t* stix, stix_ooi_t nargs)
|
static int prim_integer_sub (stix_t* stix, stix_ooi_t nargs)
|
||||||
@ -1054,28 +1035,12 @@ static int prim_integer_sub (stix_t* stix, stix_ooi_t nargs)
|
|||||||
rcv = ACTIVE_STACK_GET(stix, stix->sp - 1);
|
rcv = ACTIVE_STACK_GET(stix, stix->sp - 1);
|
||||||
arg = ACTIVE_STACK_GET(stix, stix->sp);
|
arg = ACTIVE_STACK_GET(stix, stix->sp);
|
||||||
|
|
||||||
#if 0
|
|
||||||
if (STIX_OOP_IS_SMOOI(rcv) && STIX_OOP_IS_SMOOI(arg))
|
|
||||||
{
|
|
||||||
stix_ooi_t tmp;
|
|
||||||
tmp = STIX_OOP_TO_SMOOI(rcv) - STIX_OOP_TO_SMOOI(arg);
|
|
||||||
/* TODO: check overflow. if so convert it to LargeInteger */
|
|
||||||
|
|
||||||
ACTIVE_STACK_POP (stix);
|
|
||||||
ACTIVE_STACK_SETTOP (stix, STIX_SMOOI_TO_OOP(tmp));
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TODO: handle LargeInteger */
|
|
||||||
return 0;
|
|
||||||
#else
|
|
||||||
res = stix_subints (stix, rcv, arg);
|
res = stix_subints (stix, rcv, arg);
|
||||||
if (!res) return (stix->errnum == STIX_EINVAL)? 0: -1; /* soft or hard failure */
|
if (!res) return (stix->errnum == STIX_EINVAL? 0: -1); /* soft or hard failure */
|
||||||
|
|
||||||
ACTIVE_STACK_POP (stix);
|
ACTIVE_STACK_POP (stix);
|
||||||
ACTIVE_STACK_SETTOP (stix, res);
|
ACTIVE_STACK_SETTOP (stix, res);
|
||||||
return 1;
|
return 1;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int prim_integer_mul (stix_t* stix, stix_ooi_t nargs)
|
static int prim_integer_mul (stix_t* stix, stix_ooi_t nargs)
|
||||||
@ -1087,29 +1052,46 @@ static int prim_integer_mul (stix_t* stix, stix_ooi_t nargs)
|
|||||||
rcv = ACTIVE_STACK_GET(stix, stix->sp - 1);
|
rcv = ACTIVE_STACK_GET(stix, stix->sp - 1);
|
||||||
arg = ACTIVE_STACK_GET(stix, stix->sp);
|
arg = ACTIVE_STACK_GET(stix, stix->sp);
|
||||||
|
|
||||||
#if 0
|
|
||||||
if (STIX_OOP_IS_SMOOI(rcv) && STIX_OOP_IS_SMOOI(arg))
|
|
||||||
{
|
|
||||||
stix_ooi_t tmp;
|
|
||||||
|
|
||||||
tmp = STIX_OOP_TO_SMOOI(rcv) * STIX_OOP_TO_SMOOI(arg);
|
|
||||||
/* TODO: check overflow. if so convert it to LargeInteger */
|
|
||||||
|
|
||||||
ACTIVE_STACK_POP (stix);
|
|
||||||
ACTIVE_STACK_SETTOP (stix, STIX_SMOOI_TO_OOP(tmp));
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TODO: handle LargeInteger */
|
|
||||||
return 0;
|
|
||||||
#else
|
|
||||||
res = stix_mulints (stix, rcv, arg);
|
res = stix_mulints (stix, rcv, arg);
|
||||||
if (!res) return (stix->errnum == STIX_EINVAL)? 0: -1; /* soft or hard failure */
|
if (!res) return (stix->errnum == STIX_EINVAL? 0: -1); /* soft or hard failure */
|
||||||
|
|
||||||
ACTIVE_STACK_POP (stix);
|
ACTIVE_STACK_POP (stix);
|
||||||
ACTIVE_STACK_SETTOP (stix, res);
|
ACTIVE_STACK_SETTOP (stix, res);
|
||||||
return 1;
|
return 1;
|
||||||
#endif
|
}
|
||||||
|
|
||||||
|
static int prim_integer_quo (stix_t* stix, stix_ooi_t nargs)
|
||||||
|
{
|
||||||
|
stix_oop_t rcv, arg, quo;
|
||||||
|
|
||||||
|
STIX_ASSERT (nargs == 1);
|
||||||
|
|
||||||
|
rcv = ACTIVE_STACK_GET(stix, stix->sp - 1);
|
||||||
|
arg = ACTIVE_STACK_GET(stix, stix->sp);
|
||||||
|
|
||||||
|
quo = stix_divints (stix, rcv, arg, STIX_NULL);
|
||||||
|
if (!quo) return (stix->errnum == STIX_EINVAL? 0: -1); /* soft or hard failure */
|
||||||
|
|
||||||
|
ACTIVE_STACK_POP (stix);
|
||||||
|
ACTIVE_STACK_SETTOP (stix, quo);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int prim_integer_rem (stix_t* stix, stix_ooi_t nargs)
|
||||||
|
{
|
||||||
|
stix_oop_t rcv, arg, quo, rem;
|
||||||
|
|
||||||
|
STIX_ASSERT (nargs == 1);
|
||||||
|
|
||||||
|
rcv = ACTIVE_STACK_GET(stix, stix->sp - 1);
|
||||||
|
arg = ACTIVE_STACK_GET(stix, stix->sp);
|
||||||
|
|
||||||
|
quo = stix_divints (stix, rcv, arg, &rem);
|
||||||
|
if (!quo) return (stix->errnum == STIX_EINVAL? 0: -1); /* soft or hard failure */
|
||||||
|
|
||||||
|
ACTIVE_STACK_POP (stix);
|
||||||
|
ACTIVE_STACK_SETTOP (stix, rem);
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int prim_integer_eq (stix_t* stix, stix_ooi_t nargs)
|
static int prim_integer_eq (stix_t* stix, stix_ooi_t nargs)
|
||||||
@ -1617,6 +1599,8 @@ static prim_t primitives[] =
|
|||||||
{ 1, prim_integer_add, "_integer_add" },
|
{ 1, prim_integer_add, "_integer_add" },
|
||||||
{ 1, prim_integer_sub, "_integer_sub" },
|
{ 1, prim_integer_sub, "_integer_sub" },
|
||||||
{ 1, prim_integer_mul, "_integer_mul" },
|
{ 1, prim_integer_mul, "_integer_mul" },
|
||||||
|
{ 1, prim_integer_quo, "_integer_quo" },
|
||||||
|
{ 1, prim_integer_rem, "_integer_rem" },
|
||||||
{ 1, prim_integer_eq, "_integer_eq" },
|
{ 1, prim_integer_eq, "_integer_eq" },
|
||||||
{ 1, prim_integer_ne, "_integer_ne" },
|
{ 1, prim_integer_ne, "_integer_ne" },
|
||||||
{ 1, prim_integer_lt, "_integer_lt" },
|
{ 1, prim_integer_lt, "_integer_lt" },
|
||||||
|
@ -51,7 +51,6 @@
|
|||||||
# include <ltdl.h>
|
# include <ltdl.h>
|
||||||
# define USE_LTDL
|
# define USE_LTDL
|
||||||
#endif
|
#endif
|
||||||
#include <dlfcn.h>
|
|
||||||
|
|
||||||
#if !defined(STIX_DEFAULT_MODPREFIX)
|
#if !defined(STIX_DEFAULT_MODPREFIX)
|
||||||
# if defined(_WIN32)
|
# if defined(_WIN32)
|
||||||
@ -464,6 +463,7 @@ int main (int argc, char* argv[])
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
{
|
{
|
||||||
|
|
||||||
/*const stix_bch_t* xxx = "9999999999999999999999999999999999999999999999999999999999999999999999999999999999";*/
|
/*const stix_bch_t* xxx = "9999999999999999999999999999999999999999999999999999999999999999999999999999999999";*/
|
||||||
@ -488,6 +488,7 @@ buflen = STIX_COUNTOF(buf);
|
|||||||
stix_utf8toucs (yyy, &xxxlen, buf, &buflen);
|
stix_utf8toucs (yyy, &xxxlen, buf, &buflen);
|
||||||
dump_object (stix, stix_strtoint (stix, buf, buflen, 3), "STRINT");
|
dump_object (stix, stix_strtoint (stix, buf, buflen, 3), "STRINT");
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
stix_ooch_t x[] = { 'X', 't', 'r', 'i', 'n', 'g', '\0' };
|
stix_ooch_t x[] = { 'X', 't', 'r', 'i', 'n', 'g', '\0' };
|
||||||
stix_ooch_t y[] = { 'S', 'y', 'm', 'b', 'o', 'l', '\0' };
|
stix_ooch_t y[] = { 'S', 'y', 'm', 'b', 'o', 'l', '\0' };
|
||||||
@ -517,6 +518,7 @@ printf ("%p\n", a);
|
|||||||
|
|
||||||
dump_dictionary (stix, stix->sysdic, "System dictionary");
|
dump_dictionary (stix, stix->sysdic, "System dictionary");
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
xtn = stix_getxtn (stix);
|
xtn = stix_getxtn (stix);
|
||||||
|
|
||||||
@ -597,11 +599,15 @@ printf ("%p\n", a);
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
dump_dictionary (stix, stix->sysdic, "System dictionary");
|
/* dump_dictionary (stix, stix->sysdic, "System dictionary");*/
|
||||||
stix_close (stix);
|
stix_close (stix);
|
||||||
|
|
||||||
#if defined(USE_LTDL)
|
#if defined(USE_LTDL)
|
||||||
lt_dlexit ();
|
lt_dlexit ();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_WIN32) && defined(_DEBUG)
|
||||||
|
getchar();
|
||||||
#endif
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,8 @@
|
|||||||
|
|
||||||
#if defined(STIX_HAVE_CFG_H)
|
#if defined(STIX_HAVE_CFG_H)
|
||||||
# include "stix-cfg.h"
|
# include "stix-cfg.h"
|
||||||
|
#elif defined(_WIN32)
|
||||||
|
# include "stix-msw.h"
|
||||||
#else
|
#else
|
||||||
# error UNSUPPORTED SYSTEM
|
# error UNSUPPORTED SYSTEM
|
||||||
#endif
|
#endif
|
||||||
@ -49,8 +51,6 @@
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* =========================================================================
|
/* =========================================================================
|
||||||
* PRIMITIVE TYPE DEFINTIONS
|
* PRIMITIVE TYPE DEFINTIONS
|
||||||
* ========================================================================= */
|
* ========================================================================= */
|
||||||
|
193
stix/lib/stix-msw.h
Normal file
193
stix/lib/stix-msw.h
Normal file
@ -0,0 +1,193 @@
|
|||||||
|
/*
|
||||||
|
* $Id$
|
||||||
|
*
|
||||||
|
Copyright (c) 2014-2015 Chung, Hyung-Hwan. All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions
|
||||||
|
are met:
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
|
||||||
|
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||||
|
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||||
|
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
|
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
Macro Meaning
|
||||||
|
_WIN64 A 64-bit platform.
|
||||||
|
_WIN32 A 32-bit platform. This value is also defined by the 64-bit
|
||||||
|
compiler for backward compatibility.
|
||||||
|
_WIN16 A 16-bit platform
|
||||||
|
|
||||||
|
The following macros are specific to the architecture.
|
||||||
|
|
||||||
|
Macro Meaning
|
||||||
|
_M_IA64 Intel Itanium Processor Family
|
||||||
|
_M_IX86 x86 platform
|
||||||
|
_M_X64 x64 platform
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* windows for most of non-x86 platforms dropped.
|
||||||
|
* make it selective to support old non-x86 windows platforms. */
|
||||||
|
#define STIX_ENDIAN_LITTLE
|
||||||
|
|
||||||
|
#if defined(__WATCOMC__)
|
||||||
|
# define STIX_SIZEOF_CHAR 1
|
||||||
|
# define STIX_SIZEOF_SHORT 2
|
||||||
|
# define STIX_SIZEOF_INT 4
|
||||||
|
# define STIX_SIZEOF_LONG 4
|
||||||
|
# if (__WATCOMC__ < 1200)
|
||||||
|
# define STIX_SIZEOF_LONG_LONG 0
|
||||||
|
# else
|
||||||
|
# define STIX_SIZEOF_LONG_LONG 8
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if defined(_WIN64)
|
||||||
|
# define STIX_SIZEOF_VOID_P 8
|
||||||
|
# else
|
||||||
|
# define STIX_SIZEOF_VOID_P 4
|
||||||
|
# endif
|
||||||
|
# define STIX_SIZEOF_FLOAT 4
|
||||||
|
# define STIX_SIZEOF_DOUBLE 8
|
||||||
|
# define STIX_SIZEOF_LONG_DOUBLE 8
|
||||||
|
# define STIX_SIZEOF_WCHAR_T 2
|
||||||
|
|
||||||
|
# define STIX_SIZEOF___INT8 1
|
||||||
|
# define STIX_SIZEOF___INT16 2
|
||||||
|
# define STIX_SIZEOF___INT32 4
|
||||||
|
# define STIX_SIZEOF___INT64 8
|
||||||
|
# define STIX_SIZEOF___INT128 0
|
||||||
|
|
||||||
|
# define STIX_SIZEOF_OFF64_T 0
|
||||||
|
# define STIX_SIZEOF_OFF_T 8
|
||||||
|
|
||||||
|
# define STIX_SIZEOF_MBSTATE_T STIX_SIZEOF_LONG
|
||||||
|
# define STIX_MBLEN_MAX 16
|
||||||
|
|
||||||
|
/* these two have only to be large enough */
|
||||||
|
# define STIX_SIZEOF_STRUCT_SOCKADDR_IN 32
|
||||||
|
# define STIX_SIZEOF_STRUCT_SOCKADDR_IN6 64
|
||||||
|
# define STIX_SIZEOF_SOCKLEN_T 4
|
||||||
|
|
||||||
|
#elif defined(__GNUC__) || defined(__DMC__) || defined(__POCC__)
|
||||||
|
# define STIX_SIZEOF_CHAR 1
|
||||||
|
# define STIX_SIZEOF_SHORT 2
|
||||||
|
# define STIX_SIZEOF_INT 4
|
||||||
|
# define STIX_SIZEOF_LONG 4
|
||||||
|
# define STIX_SIZEOF_LONG_LONG 8
|
||||||
|
|
||||||
|
# if defined(_WIN64)
|
||||||
|
# define STIX_SIZEOF_VOID_P 8
|
||||||
|
# else
|
||||||
|
# define STIX_SIZEOF_VOID_P 4
|
||||||
|
# endif
|
||||||
|
# define STIX_SIZEOF_FLOAT 4
|
||||||
|
# define STIX_SIZEOF_DOUBLE 8
|
||||||
|
# define STIX_SIZEOF_LONG_DOUBLE 16
|
||||||
|
# define STIX_SIZEOF_WCHAR_T 2
|
||||||
|
|
||||||
|
# define STIX_SIZEOF___INT8 0
|
||||||
|
# define STIX_SIZEOF___INT16 0
|
||||||
|
# define STIX_SIZEOF___INT32 0
|
||||||
|
# define STIX_SIZEOF___INT64 0
|
||||||
|
# define STIX_SIZEOF___INT128 0
|
||||||
|
|
||||||
|
# define STIX_SIZEOF_OFF64_T 0
|
||||||
|
# define STIX_SIZEOF_OFF_T 8
|
||||||
|
|
||||||
|
# define STIX_SIZEOF_MBSTATE_T STIX_SIZEOF_LONG
|
||||||
|
# define STIX_MBLEN_MAX 16
|
||||||
|
|
||||||
|
/* these two have only to be large enough */
|
||||||
|
# define STIX_SIZEOF_STRUCT_SOCKADDR_IN 32
|
||||||
|
# define STIX_SIZEOF_STRUCT_SOCKADDR_IN6 64
|
||||||
|
|
||||||
|
#elif defined(_MSC_VER)
|
||||||
|
# define STIX_SIZEOF_CHAR 1
|
||||||
|
# define STIX_SIZEOF_SHORT 2
|
||||||
|
# define STIX_SIZEOF_INT 4
|
||||||
|
# define STIX_SIZEOF_LONG 4
|
||||||
|
# if (_MSC_VER>=1310)
|
||||||
|
# define STIX_SIZEOF_LONG_LONG 8
|
||||||
|
# else
|
||||||
|
# define STIX_SIZEOF_LONG_LONG 0
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if defined(_WIN64)
|
||||||
|
# define STIX_SIZEOF_VOID_P 8
|
||||||
|
# else
|
||||||
|
# define STIX_SIZEOF_VOID_P 4
|
||||||
|
# endif
|
||||||
|
# define STIX_SIZEOF_FLOAT 4
|
||||||
|
# define STIX_SIZEOF_DOUBLE 8
|
||||||
|
# define STIX_SIZEOF_LONG_DOUBLE 8
|
||||||
|
# define STIX_SIZEOF_WCHAR_T 2
|
||||||
|
|
||||||
|
# define STIX_SIZEOF___INT8 1
|
||||||
|
# define STIX_SIZEOF___INT16 2
|
||||||
|
# define STIX_SIZEOF___INT32 4
|
||||||
|
# define STIX_SIZEOF___INT64 8
|
||||||
|
# define STIX_SIZEOF___INT128 0
|
||||||
|
|
||||||
|
# define STIX_SIZEOF_OFF64_T 0
|
||||||
|
# define STIX_SIZEOF_OFF_T 8
|
||||||
|
|
||||||
|
# define STIX_SIZEOF_MBSTATE_T STIX_SIZEOF_LONG
|
||||||
|
# define STIX_MBLEN_MAX 8
|
||||||
|
|
||||||
|
/* these two have only to be large enough */
|
||||||
|
# define STIX_SIZEOF_STRUCT_SOCKADDR_IN 32
|
||||||
|
# define STIX_SIZEOF_STRUCT_SOCKADDR_IN6 64
|
||||||
|
# define STIX_SIZEOF_SOCKLEN_T 4
|
||||||
|
|
||||||
|
#elif defined(__BORLANDC__)
|
||||||
|
|
||||||
|
# define STIX_SIZEOF_CHAR 1
|
||||||
|
# define STIX_SIZEOF_SHORT 2
|
||||||
|
# define STIX_SIZEOF_INT 4
|
||||||
|
# define STIX_SIZEOF_LONG 4
|
||||||
|
# define STIX_SIZEOF_LONG_LONG 0
|
||||||
|
|
||||||
|
# if defined(_WIN64)
|
||||||
|
# define STIX_SIZEOF_VOID_P 8
|
||||||
|
# else
|
||||||
|
# define STIX_SIZEOF_VOID_P 4
|
||||||
|
# endif
|
||||||
|
# define STIX_SIZEOF_FLOAT 4
|
||||||
|
# define STIX_SIZEOF_DOUBLE 8
|
||||||
|
# define STIX_SIZEOF_LONG_DOUBLE 8
|
||||||
|
# define STIX_SIZEOF_WCHAR_T 2
|
||||||
|
|
||||||
|
# define STIX_SIZEOF___INT8 1
|
||||||
|
# define STIX_SIZEOF___INT16 2
|
||||||
|
# define STIX_SIZEOF___INT32 4
|
||||||
|
# define STIX_SIZEOF___INT64 8
|
||||||
|
# define STIX_SIZEOF___INT128 0
|
||||||
|
|
||||||
|
# define STIX_SIZEOF_OFF64_T 0
|
||||||
|
# define STIX_SIZEOF_OFF_T 8
|
||||||
|
|
||||||
|
# define STIX_SIZEOF_MBSTATE_T STIX_SIZEOF_LONG
|
||||||
|
# define STIX_MBLEN_MAX 8
|
||||||
|
|
||||||
|
/* these two have only to be large enough */
|
||||||
|
# define STIX_SIZEOF_STRUCT_SOCKADDR_IN 32
|
||||||
|
# define STIX_SIZEOF_STRUCT_SOCKADDR_IN6 64
|
||||||
|
# define STIX_SIZEOF_SOCKLEN_T 4
|
||||||
|
|
||||||
|
#else
|
||||||
|
# error Define the size of various data types.
|
||||||
|
#endif
|
||||||
|
|
@ -1105,12 +1105,12 @@ stix_oop_t stix_strtoint (
|
|||||||
/* ========================================================================= */
|
/* ========================================================================= */
|
||||||
/* comp.c */
|
/* comp.c */
|
||||||
/* ========================================================================= */
|
/* ========================================================================= */
|
||||||
int stix_compile (
|
STIX_EXPORT int stix_compile (
|
||||||
stix_t* stix,
|
stix_t* stix,
|
||||||
stix_io_impl_t io
|
stix_io_impl_t io
|
||||||
);
|
);
|
||||||
|
|
||||||
void stix_getsynerr (
|
STIX_EXPORT void stix_getsynerr (
|
||||||
stix_t* stix,
|
stix_t* stix,
|
||||||
stix_synerr_t* synerr
|
stix_synerr_t* synerr
|
||||||
);
|
);
|
||||||
|
Loading…
Reference in New Issue
Block a user