Annotation of OpenXM_contrib/gmp/mp-h.in, Revision 1.1.1.1
1.1 ohara 1: /* mp-h.in -- Definitions for the GNU multiple precision library -*-mode:c-*-
2: BSD mp compatible functions.
3:
4: Copyright 1991, 1993, 1994, 1995, 1996, 2000, 2001, 2002 Free Software
5: Foundation, Inc.
6:
7: This file is part of the GNU MP Library.
8:
9: The GNU MP Library is free software; you can redistribute it and/or modify
10: it under the terms of the GNU Lesser General Public License as published by
11: the Free Software Foundation; either version 2.1 of the License, or (at your
12: option) any later version.
13:
14: The GNU MP Library is distributed in the hope that it will be useful, but
15: WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16: or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
17: License for more details.
18:
19: You should have received a copy of the GNU Lesser General Public License
20: along with the GNU MP Library; see the file COPYING.LIB. If not, write to
21: the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
22: MA 02111-1307, USA. */
23:
24: #ifndef __MP_H__
25:
26:
27: /* The following (everything under ifndef __GNU_MP__) must be identical in
28: gmp.h and mp.h to allow both to be included in an application or during
29: the library build. Use the t-gmp-mp-h.pl script to check. */
30: #ifndef __GNU_MP__
31: #define __GNU_MP__ 4
32:
33: #define __need_size_t /* tell gcc stddef.h we only want size_t */
34: #if defined (__cplusplus)
35: #include <cstddef> /* for size_t */
36: #else
37: #include <stddef.h> /* for size_t */
38: #endif
39: #undef __need_size_t
40:
41: /* The following instantiated by configure, for internal use only */
42: #if ! __GMP_WITHIN_CONFIGURE
43: @DEFN_LONG_LONG_LIMB@
44: #define __GMP_LIBGMP_DLL @LIBGMP_DLL@
45: #endif
46:
47: #if defined (__STDC__) \
48: || defined (__cplusplus) \
49: || defined (_AIX) \
50: || defined (__DECC) \
51: || (defined (__mips) && defined (_SYSTYPE_SVR4)) \
52: || defined (_MSC_VER) \
53: || defined (_WIN32)
54: #define __GMP_HAVE_CONST 1
55: #define __GMP_HAVE_PROTOTYPES 1
56: #define __GMP_HAVE_TOKEN_PASTE 1
57: #else
58: #define __GMP_HAVE_CONST 0
59: #define __GMP_HAVE_PROTOTYPES 0
60: #define __GMP_HAVE_TOKEN_PASTE 0
61: #endif
62:
63:
64: #if __GMP_HAVE_CONST
65: #define __gmp_const const
66: #define __gmp_signed signed
67: #else
68: #define __gmp_const
69: #define __gmp_signed
70: #endif
71:
72: #if defined (__GNUC__) || defined (_MSC_VER) || defined (__BORLANDC__)
73: #define __GMP_DECLSPEC_EXPORT __declspec(dllexport)
74: #define __GMP_DECLSPEC_IMPORT __declspec(dllimport)
75: #endif
76: #ifdef __WATCOMC__
77: #define __GMP_DECLSPEC_EXPORT __export
78: #define __GMP_DECLSPEC_IMPORT __import
79: #endif
80: #ifdef __IBMC__
81: #define __GMP_DECLSPEC_EXPORT _Export
82: #define __GMP_DECLSPEC_IMPORT _Import
83: #endif
84:
85: #if __GMP_LIBGMP_DLL
86: #if __GMP_WITHIN_GMP
87: #define __GMP_DECLSPEC __GMP_DECLSPEC_EXPORT
88: #else
89: #define __GMP_DECLSPEC __GMP_DECLSPEC_IMPORT
90: #endif
91: #else
92: #define __GMP_DECLSPEC
93: #endif
94:
95: #ifdef _SHORT_LIMB
96: typedef unsigned int mp_limb_t;
97: typedef int mp_limb_signed_t;
98: #else
99: #ifdef _LONG_LONG_LIMB
100: typedef unsigned long long int mp_limb_t;
101: typedef long long int mp_limb_signed_t;
102: #else
103: typedef unsigned long int mp_limb_t;
104: typedef long int mp_limb_signed_t;
105: #endif
106: #endif
107:
108: typedef mp_limb_t * mp_ptr;
109: typedef __gmp_const mp_limb_t * mp_srcptr;
110: #if defined (_CRAY) && ! defined (_CRAYMPP)
111: /* plain `int' is much faster (48 bits) */
112: #define __GMP_MP_SIZE_T_INT 1
113: typedef int mp_size_t;
114: typedef int mp_exp_t;
115: #else
116: #define __GMP_MP_SIZE_T_INT 0
117: typedef long int mp_size_t;
118: typedef long int mp_exp_t;
119: #endif
120:
121: typedef struct
122: {
123: int _mp_alloc; /* Number of *limbs* allocated and pointed
124: to by the _mp_d field. */
125: int _mp_size; /* abs(_mp_size) is the number of limbs the
126: last field points to. If _mp_size is
127: negative this is a negative number. */
128: mp_limb_t *_mp_d; /* Pointer to the limbs. */
129: } __mpz_struct;
130:
131: #endif /* __GNU_MP__ */
132:
133: /* User-visible types. */
134: typedef __mpz_struct MINT;
135:
136:
137: #if __GMP_HAVE_PROTOTYPES
138: #define __GMP_PROTO(x) x
139: #else
140: #define __GMP_PROTO(x) ()
141: #endif
142:
143: #if defined (__cplusplus)
144: extern "C" {
145: #endif
146:
147: #define mp_set_memory_functions __gmp_set_memory_functions
148: __GMP_DECLSPEC void mp_set_memory_functions __GMP_PROTO ((void *(*) (size_t),
149: void *(*) (void *, size_t, size_t),
150: void (*) (void *, size_t)));
151: __GMP_DECLSPEC MINT *itom __GMP_PROTO ((signed short int));
152: __GMP_DECLSPEC MINT *xtom __GMP_PROTO ((const char *));
153: __GMP_DECLSPEC void move __GMP_PROTO ((const MINT *, MINT *));
154: __GMP_DECLSPEC void madd __GMP_PROTO ((const MINT *, const MINT *, MINT *));
155: __GMP_DECLSPEC void msub __GMP_PROTO ((const MINT *, const MINT *, MINT *));
156: __GMP_DECLSPEC void mult __GMP_PROTO ((const MINT *, const MINT *, MINT *));
157: __GMP_DECLSPEC void mdiv __GMP_PROTO ((const MINT *, const MINT *, MINT *, MINT *));
158: __GMP_DECLSPEC void sdiv __GMP_PROTO ((const MINT *, signed short int, MINT *, signed short int *));
159: __GMP_DECLSPEC void msqrt __GMP_PROTO ((const MINT *, MINT *, MINT *));
160: __GMP_DECLSPEC void pow __GMP_PROTO ((const MINT *, const MINT *, const MINT *, MINT *));
161: __GMP_DECLSPEC void rpow __GMP_PROTO ((const MINT *, signed short int, MINT *));
162: __GMP_DECLSPEC void gcd __GMP_PROTO ((const MINT *, const MINT *, MINT *));
163: __GMP_DECLSPEC int mcmp __GMP_PROTO ((const MINT *, const MINT *));
164: __GMP_DECLSPEC void min __GMP_PROTO ((MINT *));
165: __GMP_DECLSPEC void mout __GMP_PROTO ((const MINT *));
166: __GMP_DECLSPEC char *mtox __GMP_PROTO ((const MINT *));
167: __GMP_DECLSPEC void mfree __GMP_PROTO ((MINT *));
168:
169: #if defined (__cplusplus)
170: }
171: #endif
172:
173: #define __MP_H__
174: #endif /* __MP_H__ */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>