source: trunk/third/gmp/mp-h.in @ 18191

Revision 18191, 5.5 KB checked in by ghudson, 22 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r18190, which included commits to RCS files with non-trunk default branches.
Line 
1/* mp-h.in -- Definitions for the GNU multiple precision library  -*-mode:c-*-
2   BSD mp compatible functions.
3
4Copyright 1991, 1993, 1994, 1995, 1996, 2000, 2001, 2002 Free Software
5Foundation, Inc.
6
7This file is part of the GNU MP Library.
8
9The GNU MP Library is free software; you can redistribute it and/or modify
10it under the terms of the GNU Lesser General Public License as published by
11the Free Software Foundation; either version 2.1 of the License, or (at your
12option) any later version.
13
14The GNU MP Library is distributed in the hope that it will be useful, but
15WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
17License for more details.
18
19You should have received a copy of the GNU Lesser General Public License
20along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
21the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
22MA 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
96typedef unsigned int            mp_limb_t;
97typedef int                     mp_limb_signed_t;
98#else
99#ifdef _LONG_LONG_LIMB
100typedef unsigned long long int  mp_limb_t;
101typedef long long int           mp_limb_signed_t;
102#else
103typedef unsigned long int       mp_limb_t;
104typedef long int                mp_limb_signed_t;
105#endif
106#endif
107
108typedef mp_limb_t *             mp_ptr;
109typedef __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
113typedef int                     mp_size_t;
114typedef int                     mp_exp_t;
115#else
116#define __GMP_MP_SIZE_T_INT     0
117typedef long int                mp_size_t;
118typedef long int                mp_exp_t;
119#endif
120
121typedef 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.  */
134typedef __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)
144extern "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__ */
Note: See TracBrowser for help on using the repository browser.