mp-h.in revision 1.1.1.1
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, 2004 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 3 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. If not, see http://www.gnu.org/licenses/. */ 21 22#ifndef __MP_H__ 23 24 25/* The following (everything under ifndef __GNU_MP__) must be identical in 26 gmp.h and mp.h to allow both to be included in an application or during 27 the library build. Use the t-gmp-mp-h.pl script to check. */ 28#ifndef __GNU_MP__ 29#define __GNU_MP__ 5 30 31#define __need_size_t /* tell gcc stddef.h we only want size_t */ 32#if defined (__cplusplus) 33#include <cstddef> /* for size_t */ 34#else 35#include <stddef.h> /* for size_t */ 36#endif 37#undef __need_size_t 38 39/* The following instantiated by configure, for internal use only */ 40#if ! defined (__GMP_WITHIN_CONFIGURE) 41@DEFN_LONG_LONG_LIMB@ 42#define __GMP_LIBGMP_DLL @LIBGMP_DLL@ 43#endif 44 45#if defined (__STDC__) \ 46 || defined (__cplusplus) \ 47 || defined (_AIX) \ 48 || defined (__DECC) \ 49 || (defined (__mips) && defined (_SYSTYPE_SVR4)) \ 50 || defined (_MSC_VER) \ 51 || defined (_WIN32) 52#define __GMP_HAVE_CONST 1 53#define __GMP_HAVE_PROTOTYPES 1 54#define __GMP_HAVE_TOKEN_PASTE 1 55#else 56#define __GMP_HAVE_CONST 0 57#define __GMP_HAVE_PROTOTYPES 0 58#define __GMP_HAVE_TOKEN_PASTE 0 59#endif 60 61 62#if __GMP_HAVE_CONST 63#define __gmp_const const 64#define __gmp_signed signed 65#else 66#define __gmp_const 67#define __gmp_signed 68#endif 69 70#if defined (__GNUC__) 71#define __GMP_DECLSPEC_EXPORT __declspec(__dllexport__) 72#define __GMP_DECLSPEC_IMPORT __declspec(__dllimport__) 73#endif 74#if defined (_MSC_VER) || defined (__BORLANDC__) 75#define __GMP_DECLSPEC_EXPORT __declspec(dllexport) 76#define __GMP_DECLSPEC_IMPORT __declspec(dllimport) 77#endif 78#ifdef __WATCOMC__ 79#define __GMP_DECLSPEC_EXPORT __export 80#define __GMP_DECLSPEC_IMPORT __import 81#endif 82#ifdef __IBMC__ 83#define __GMP_DECLSPEC_EXPORT _Export 84#define __GMP_DECLSPEC_IMPORT _Import 85#endif 86 87#if __GMP_LIBGMP_DLL 88#if __GMP_WITHIN_GMP 89#define __GMP_DECLSPEC __GMP_DECLSPEC_EXPORT 90#else 91#define __GMP_DECLSPEC __GMP_DECLSPEC_IMPORT 92#endif 93#else 94#define __GMP_DECLSPEC 95#endif 96 97#ifdef __GMP_SHORT_LIMB 98typedef unsigned int mp_limb_t; 99typedef int mp_limb_signed_t; 100#else 101#ifdef _LONG_LONG_LIMB 102typedef unsigned long long int mp_limb_t; 103typedef long long int mp_limb_signed_t; 104#else 105typedef unsigned long int mp_limb_t; 106typedef long int mp_limb_signed_t; 107#endif 108#endif 109typedef unsigned long int mp_bitcnt_t; 110 111typedef struct 112{ 113 int _mp_alloc; /* Number of *limbs* allocated and pointed 114 to by the _mp_d field. */ 115 int _mp_size; /* abs(_mp_size) is the number of limbs the 116 last field points to. If _mp_size is 117 negative this is a negative number. */ 118 mp_limb_t *_mp_d; /* Pointer to the limbs. */ 119} __mpz_struct; 120 121#endif /* __GNU_MP__ */ 122 123/* User-visible types. */ 124typedef __mpz_struct MINT; 125 126 127#if __GMP_HAVE_PROTOTYPES 128#define __GMP_PROTO(x) x 129#else 130#define __GMP_PROTO(x) () 131#endif 132 133#if defined (__cplusplus) 134extern "C" { 135#endif 136 137#define mp_set_memory_functions __gmp_set_memory_functions 138__GMP_DECLSPEC void mp_set_memory_functions __GMP_PROTO ((void *(*) (size_t), 139 void *(*) (void *, size_t, size_t), 140 void (*) (void *, size_t))); 141__GMP_DECLSPEC MINT *itom __GMP_PROTO ((signed short int)); 142__GMP_DECLSPEC MINT *xtom __GMP_PROTO ((const char *)); 143__GMP_DECLSPEC void move __GMP_PROTO ((const MINT *, MINT *)); 144__GMP_DECLSPEC void madd __GMP_PROTO ((const MINT *, const MINT *, MINT *)); 145__GMP_DECLSPEC void msub __GMP_PROTO ((const MINT *, const MINT *, MINT *)); 146__GMP_DECLSPEC void mult __GMP_PROTO ((const MINT *, const MINT *, MINT *)); 147__GMP_DECLSPEC void mdiv __GMP_PROTO ((const MINT *, const MINT *, MINT *, MINT *)); 148__GMP_DECLSPEC void sdiv __GMP_PROTO ((const MINT *, signed short int, MINT *, signed short int *)); 149__GMP_DECLSPEC void msqrt __GMP_PROTO ((const MINT *, MINT *, MINT *)); 150__GMP_DECLSPEC void pow __GMP_PROTO ((const MINT *, const MINT *, const MINT *, MINT *)); 151__GMP_DECLSPEC void rpow __GMP_PROTO ((const MINT *, signed short int, MINT *)); 152__GMP_DECLSPEC void gcd __GMP_PROTO ((const MINT *, const MINT *, MINT *)); 153__GMP_DECLSPEC int mcmp __GMP_PROTO ((const MINT *, const MINT *)); 154__GMP_DECLSPEC void min __GMP_PROTO ((MINT *)); 155__GMP_DECLSPEC void mout __GMP_PROTO ((const MINT *)); 156__GMP_DECLSPEC char *mtox __GMP_PROTO ((const MINT *)); 157__GMP_DECLSPEC void mfree __GMP_PROTO ((MINT *)); 158 159#if defined (__cplusplus) 160} 161#endif 162 163#define __MP_H__ 164#endif /* __MP_H__ */ 165