fix remapping behavior. Remapping is only necessary if we are rendering on the workbe...
[AROS-Contrib.git] / regina / gci / gci_convert.solaris.i86
blobd9b026281002e277f411b99003fe21efbe4e2069
1 /*
2  *  Generic Call Interface for Rexx
3  *  Copyright © 2003-2004, Florian Große-Coosmann
4  *
5  *  This library is free software; you can redistribute it and/or
6  *  modify it under the terms of the GNU Library General Public
7  *  License as published by the Free Software Foundation; either
8  *  version 2 of the License, or (at your option) any later version.
9  *
10  *  This library is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  *  Library General Public License for more details.
14  *
15  *  You should have received a copy of the GNU Library General Public
16  *  License along with this library; if not, write to the Free
17  *  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18  *
19  * ----------------------------------------------------------------------------
20  *
21  * This file configures the number converting system. Have a look at
22  * gci_convert.c for the requirements. This file must include gci.h.
23  */
25 #ifndef _GNU_SOURCE
26 # define _GNU_SOURCE
27 #endif
28 #include <limits.h>
29 #include <float.h>
30 #include "gci.h"
32 #define NEED_STRTOBIGF
33 #define F_SCAN       "%Lf"
35 #define GCI_Ir        strtoll
36 #define GCI_Iw(s,v)   sprintf( s, "%lld", v )
37 #define GCI_I_1       signed char
38 #define GCI_I_1m      SCHAR_MIN
39 #define GCI_I_1M      SCHAR_MAX
40 #define GCI_I_2       signed short
41 #define GCI_I_2m      SHRT_MIN
42 #define GCI_I_2M      SHRT_MAX
43 #define GCI_I_4       signed int
44 #define GCI_I_4m      INT_MIN
45 #define GCI_I_4M      INT_MAX
46 #define GCI_I_8       signed long long
47 #define GCI_I_8m      LLONG_MIN
48 #define GCI_I_8M      LLONG_MAX
50 #define GCI_Ur        strtoull
51 #define GCI_Uw(s,v)   sprintf( s, "%llu", v )
52 #define GCI_U_1       unsigned char
53 #define GCI_U_1M      UCHAR_MAX
54 #define GCI_U_2       unsigned short
55 #define GCI_U_2M      USHRT_MAX
56 #define GCI_U_4       unsigned
57 #define GCI_U_4M      UINT_MAX
58 #define GCI_U_8       unsigned long long
59 #define GCI_U_8M      ULLONG_MAX
61 #define GCI_Fr        strtobigf
62 #define GCI_Fw(s,v)   sprintf( s, "%.*LE", LDBL_MANT_DIG/3, v )
63 #define GCI_F_4       float
64 #define GCI_F_4m      (-FLT_MAX)
65 #define GCI_F_4M      FLT_MAX
66 #define GCI_F_8       double
67 #define GCI_F_8m      (-DBL_MAX)
68 #define GCI_F_8M      DBL_MAX
69 #define GCI_F_16      long double
70 #define GCI_F_16m     (-LDBL_MAX)
71 #define GCI_F_16M     LDBL_MAX
74  ******************************************************************************
75  */
78  * GCI_STACK_ELEMENT sets integral type of a stack element. This is typically
79  * an unsigned or int.
80  */
81 #define GCI_STACK_ELEMENT unsigned
84  * GCI_LITTLE_ENDIAN must be set to 1 or 0 depending on whether little endian
85  * or big endian is the machine's representation.
86  * In doubt, select 1 for Intel compatibles and 0 for others.
87  */
88 #if defined(_BIG_ENDIAN) || defined(BIG_ENDIAN)
89 # define GCI_LITTLE_ENDIAN 0   /* definitiv! Nicht ändern */
90 #elif defined(_LITTLE_ENDIAN) || defined(LITTLE_ENDIAN)
91 # define GCI_LITTLE_ENDIAN 1   /* definitiv! Nicht ändern */
92 #else
93 # define GCI_LITTLE_ENDIAN 1
94 #endif
97  * GCI_ARGS shall be the maximum number of GCI_STACK_ELEMENTs which shall
98  * be passed on the stack. This is usually the base type of maximum width
99  * (e.g. long long or long double) / sizeof(unsigned) * GCI_REXX_ARGS.
100  * But you can't use sizeof(), therefore you have to compute it by hand.
101  * 4 * GCI_REXX_ARGS is an upper maximum for all useful systems I can imagine.
102  */
103 #define GCI_ARGS 64   /* 16 full sized arguments */
106  * GCI_PASSARGS is a macro which enumerates GCI_ARGS args of an array which
107  * is passed to the macro. I don't know a good ANSI macro for this purpose.
108  * Feel free to provide it!
109  */
110 #define GCI_PASSARGS(a) a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],\
111                         a[10],a[11],a[12],a[13],a[14],a[15],a[16],a[17],a[18],\
112                         a[19],a[20],a[21],a[22],a[23],a[24],a[25],a[26],a[27],\
113                         a[28],a[29],a[30],a[31],a[32],a[33],a[34],a[35],a[36],\
114                         a[37],a[38],a[39],a[40],a[41],a[42],a[43],a[44],a[45],\
115                         a[46],a[47],a[48],a[49],a[50],a[51],a[52],a[53],a[54],\
116                         a[55],a[56],a[57],a[58],a[59],a[60],a[61],a[62],a[63]