annotate CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/include/tclTomMathDecls.h @ 69:33d812a61356

planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author jpayne
date Tue, 18 Mar 2025 17:55:14 -0400
parents
children
rev   line source
jpayne@69 1 /*
jpayne@69 2 *----------------------------------------------------------------------
jpayne@69 3 *
jpayne@69 4 * tclTomMathDecls.h --
jpayne@69 5 *
jpayne@69 6 * This file contains the declarations for the 'libtommath'
jpayne@69 7 * functions that are exported by the Tcl library.
jpayne@69 8 *
jpayne@69 9 * Copyright (c) 2005 by Kevin B. Kenny. All rights reserved.
jpayne@69 10 *
jpayne@69 11 * See the file "license.terms" for information on usage and redistribution
jpayne@69 12 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
jpayne@69 13 */
jpayne@69 14
jpayne@69 15 #ifndef _TCLTOMMATHDECLS
jpayne@69 16 #define _TCLTOMMATHDECLS
jpayne@69 17
jpayne@69 18 #include "tcl.h"
jpayne@69 19 #ifndef BN_H_
jpayne@69 20 #include "tclTomMath.h"
jpayne@69 21 #endif
jpayne@69 22
jpayne@69 23 /*
jpayne@69 24 * Define the version of the Stubs table that's exported for tommath
jpayne@69 25 */
jpayne@69 26
jpayne@69 27 #define TCLTOMMATH_EPOCH 0
jpayne@69 28 #define TCLTOMMATH_REVISION 0
jpayne@69 29
jpayne@69 30 #define Tcl_TomMath_InitStubs(interp,version) \
jpayne@69 31 (TclTomMathInitializeStubs((interp),(version),\
jpayne@69 32 TCLTOMMATH_EPOCH,TCLTOMMATH_REVISION))
jpayne@69 33
jpayne@69 34 /* Define custom memory allocation for libtommath */
jpayne@69 35
jpayne@69 36 /* MODULE_SCOPE void* TclBNAlloc( size_t ); */
jpayne@69 37 #define TclBNAlloc(s) ((void*)ckalloc((size_t)(s)))
jpayne@69 38 /* MODULE_SCOPE void* TclBNCalloc( size_t, size_t ); */
jpayne@69 39 #define TclBNCalloc(m,s) memset(ckalloc((size_t)(m)*(size_t)(s)),0,(size_t)(m)*(size_t)(s))
jpayne@69 40 /* MODULE_SCOPE void* TclBNRealloc( void*, size_t ); */
jpayne@69 41 #define TclBNRealloc(x,s) ((void*)ckrealloc((char*)(x),(size_t)(s)))
jpayne@69 42 /* MODULE_SCOPE void TclBNFree( void* ); */
jpayne@69 43 #define TclBNFree(x) (ckfree((char*)(x)))
jpayne@69 44
jpayne@69 45 #define MP_MALLOC(size) TclBNAlloc(size)
jpayne@69 46 #define MP_CALLOC(nmemb, size) TclBNCalloc(nmemb, size)
jpayne@69 47 #define MP_REALLOC(mem, oldsize, newsize) TclBNRealloc(mem, newsize)
jpayne@69 48 #define MP_FREE(mem, size) TclBNFree(mem)
jpayne@69 49
jpayne@69 50
jpayne@69 51 /* Rename the global symbols in libtommath to avoid linkage conflicts */
jpayne@69 52
jpayne@69 53 #define bn_reverse TclBN_reverse
jpayne@69 54 #define mp_add TclBN_mp_add
jpayne@69 55 #define mp_add_d TclBN_mp_add_d
jpayne@69 56 #define mp_and TclBN_mp_and
jpayne@69 57 #define mp_clamp TclBN_mp_clamp
jpayne@69 58 #define mp_clear TclBN_mp_clear
jpayne@69 59 #define mp_clear_multi TclBN_mp_clear_multi
jpayne@69 60 #define mp_cmp TclBN_mp_cmp
jpayne@69 61 #define mp_cmp_d TclBN_mp_cmp_d
jpayne@69 62 #define mp_cmp_mag TclBN_mp_cmp_mag
jpayne@69 63 #define mp_cnt_lsb TclBN_mp_cnt_lsb
jpayne@69 64 #define mp_copy TclBN_mp_copy
jpayne@69 65 #define mp_count_bits TclBN_mp_count_bits
jpayne@69 66 #define mp_div TclBN_mp_div
jpayne@69 67 #define mp_div_2 TclBN_mp_div_2
jpayne@69 68 #define mp_div_2d TclBN_mp_div_2d
jpayne@69 69 #define mp_div_3 TclBN_mp_div_3
jpayne@69 70 #define mp_div_d TclBN_mp_div_d
jpayne@69 71 #define mp_exch TclBN_mp_exch
jpayne@69 72 #define mp_expt_d TclBN_mp_expt_d
jpayne@69 73 #define mp_expt_d_ex TclBN_mp_expt_d_ex
jpayne@69 74 #define mp_expt_u32 TclBN_mp_expt_d
jpayne@69 75 #define mp_get_mag_ull TclBN_mp_get_mag_ull
jpayne@69 76 #define mp_grow TclBN_mp_grow
jpayne@69 77 #define mp_init TclBN_mp_init
jpayne@69 78 #define mp_init_copy TclBN_mp_init_copy
jpayne@69 79 #define mp_init_multi TclBN_mp_init_multi
jpayne@69 80 #define mp_init_set TclBN_mp_init_set
jpayne@69 81 #define mp_init_set_int TclBN_mp_init_set_int
jpayne@69 82 #define mp_init_size TclBN_mp_init_size
jpayne@69 83 #define mp_lshd TclBN_mp_lshd
jpayne@69 84 #define mp_mod TclBN_mp_mod
jpayne@69 85 #define mp_mod_2d TclBN_mp_mod_2d
jpayne@69 86 #define mp_mul TclBN_mp_mul
jpayne@69 87 #define mp_mul_2 TclBN_mp_mul_2
jpayne@69 88 #define mp_mul_2d TclBN_mp_mul_2d
jpayne@69 89 #define mp_mul_d TclBN_mp_mul_d
jpayne@69 90 #define mp_neg TclBN_mp_neg
jpayne@69 91 #define mp_or TclBN_mp_or
jpayne@69 92 #define mp_radix_size TclBN_mp_radix_size
jpayne@69 93 #define mp_read_radix TclBN_mp_read_radix
jpayne@69 94 #define mp_rshd TclBN_mp_rshd
jpayne@69 95 #define mp_set TclBN_mp_set
jpayne@69 96 #define mp_set_int(a,b) (TclBN_mp_set_int(a,(unsigned int)(b)),MP_OKAY)
jpayne@69 97 #define mp_set_ll TclBN_mp_set_ll
jpayne@69 98 #define mp_set_long(a,b) (TclBN_mp_set_int(a,b),MP_OKAY)
jpayne@69 99 #define mp_set_ul(a,b) (void)TclBN_mp_set_int(a,b)
jpayne@69 100 #define mp_set_ull TclBN_mp_set_ull
jpayne@69 101 #define mp_set_u64 TclBN_mp_set_ull
jpayne@69 102 #define mp_shrink TclBN_mp_shrink
jpayne@69 103 #define mp_sqr TclBN_mp_sqr
jpayne@69 104 #define mp_sqrt TclBN_mp_sqrt
jpayne@69 105 #define mp_sub TclBN_mp_sub
jpayne@69 106 #define mp_sub_d TclBN_mp_sub_d
jpayne@69 107 #define mp_signed_rsh TclBN_mp_signed_rsh
jpayne@69 108 #define mp_tc_and TclBN_mp_and
jpayne@69 109 #define mp_tc_div_2d TclBN_mp_signed_rsh
jpayne@69 110 #define mp_tc_or TclBN_mp_or
jpayne@69 111 #define mp_tc_xor TclBN_mp_xor
jpayne@69 112 #define mp_to_unsigned_bin TclBN_mp_to_unsigned_bin
jpayne@69 113 #define mp_to_unsigned_bin_n TclBN_mp_to_unsigned_bin_n
jpayne@69 114 #define mp_toradix_n TclBN_mp_toradix_n
jpayne@69 115 #define mp_to_radix TclBN_mp_to_radix
jpayne@69 116 #define mp_to_ubin TclBN_mp_to_ubin
jpayne@69 117 #define mp_ubin_size TclBN_mp_unsigned_bin_size
jpayne@69 118 #define mp_unsigned_bin_size(a) ((int)TclBN_mp_unsigned_bin_size(a))
jpayne@69 119 #define mp_xor TclBN_mp_xor
jpayne@69 120 #define mp_zero TclBN_mp_zero
jpayne@69 121 #define s_mp_add TclBN_s_mp_add
jpayne@69 122 #define s_mp_balance_mul TclBN_mp_balance_mul
jpayne@69 123 #define s_mp_karatsuba_mul TclBN_mp_karatsuba_mul
jpayne@69 124 #define s_mp_karatsuba_sqr TclBN_mp_karatsuba_sqr
jpayne@69 125 #define s_mp_mul_digs TclBN_s_mp_mul_digs
jpayne@69 126 #define s_mp_mul_digs_fast TclBN_fast_s_mp_mul_digs
jpayne@69 127 #define s_mp_reverse TclBN_s_mp_reverse
jpayne@69 128 #define s_mp_sqr TclBN_s_mp_sqr
jpayne@69 129 #define s_mp_sqr_fast TclBN_fast_s_mp_sqr
jpayne@69 130 #define s_mp_sub TclBN_s_mp_sub
jpayne@69 131 #define s_mp_toom_mul TclBN_mp_toom_mul
jpayne@69 132 #define s_mp_toom_sqr TclBN_mp_toom_sqr
jpayne@69 133
jpayne@69 134 #undef TCL_STORAGE_CLASS
jpayne@69 135 #ifdef BUILD_tcl
jpayne@69 136 # define TCL_STORAGE_CLASS DLLEXPORT
jpayne@69 137 #else
jpayne@69 138 # ifdef USE_TCL_STUBS
jpayne@69 139 # define TCL_STORAGE_CLASS
jpayne@69 140 # else
jpayne@69 141 # define TCL_STORAGE_CLASS DLLIMPORT
jpayne@69 142 # endif
jpayne@69 143 #endif
jpayne@69 144
jpayne@69 145 /*
jpayne@69 146 * WARNING: This file is automatically generated by the tools/genStubs.tcl
jpayne@69 147 * script. Any modifications to the function declarations below should be made
jpayne@69 148 * in the generic/tclInt.decls script.
jpayne@69 149 */
jpayne@69 150
jpayne@69 151 /* !BEGIN!: Do not edit below this line. */
jpayne@69 152
jpayne@69 153 #ifdef __cplusplus
jpayne@69 154 extern "C" {
jpayne@69 155 #endif
jpayne@69 156
jpayne@69 157 /*
jpayne@69 158 * Exported function declarations:
jpayne@69 159 */
jpayne@69 160
jpayne@69 161 /* 0 */
jpayne@69 162 EXTERN int TclBN_epoch(void);
jpayne@69 163 /* 1 */
jpayne@69 164 EXTERN int TclBN_revision(void);
jpayne@69 165 /* 2 */
jpayne@69 166 EXTERN mp_err TclBN_mp_add(const mp_int *a, const mp_int *b,
jpayne@69 167 mp_int *c);
jpayne@69 168 /* 3 */
jpayne@69 169 EXTERN mp_err TclBN_mp_add_d(const mp_int *a, mp_digit b,
jpayne@69 170 mp_int *c);
jpayne@69 171 /* 4 */
jpayne@69 172 EXTERN mp_err TclBN_mp_and(const mp_int *a, const mp_int *b,
jpayne@69 173 mp_int *c);
jpayne@69 174 /* 5 */
jpayne@69 175 EXTERN void TclBN_mp_clamp(mp_int *a);
jpayne@69 176 /* 6 */
jpayne@69 177 EXTERN void TclBN_mp_clear(mp_int *a);
jpayne@69 178 /* 7 */
jpayne@69 179 EXTERN void TclBN_mp_clear_multi(mp_int *a, ...);
jpayne@69 180 /* 8 */
jpayne@69 181 EXTERN mp_ord TclBN_mp_cmp(const mp_int *a, const mp_int *b);
jpayne@69 182 /* 9 */
jpayne@69 183 EXTERN mp_ord TclBN_mp_cmp_d(const mp_int *a, mp_digit b);
jpayne@69 184 /* 10 */
jpayne@69 185 EXTERN mp_ord TclBN_mp_cmp_mag(const mp_int *a, const mp_int *b);
jpayne@69 186 /* 11 */
jpayne@69 187 EXTERN mp_err TclBN_mp_copy(const mp_int *a, mp_int *b);
jpayne@69 188 /* 12 */
jpayne@69 189 EXTERN int TclBN_mp_count_bits(const mp_int *a);
jpayne@69 190 /* 13 */
jpayne@69 191 EXTERN mp_err TclBN_mp_div(const mp_int *a, const mp_int *b,
jpayne@69 192 mp_int *q, mp_int *r);
jpayne@69 193 /* 14 */
jpayne@69 194 EXTERN mp_err TclBN_mp_div_d(const mp_int *a, mp_digit b,
jpayne@69 195 mp_int *q, mp_digit *r);
jpayne@69 196 /* 15 */
jpayne@69 197 EXTERN mp_err TclBN_mp_div_2(const mp_int *a, mp_int *q);
jpayne@69 198 /* 16 */
jpayne@69 199 EXTERN mp_err TclBN_mp_div_2d(const mp_int *a, int b, mp_int *q,
jpayne@69 200 mp_int *r);
jpayne@69 201 /* 17 */
jpayne@69 202 EXTERN mp_err TclBN_mp_div_3(const mp_int *a, mp_int *q,
jpayne@69 203 mp_digit *r);
jpayne@69 204 /* 18 */
jpayne@69 205 EXTERN void TclBN_mp_exch(mp_int *a, mp_int *b);
jpayne@69 206 /* 19 */
jpayne@69 207 EXTERN mp_err TclBN_mp_expt_d(const mp_int *a, unsigned int b,
jpayne@69 208 mp_int *c);
jpayne@69 209 /* 20 */
jpayne@69 210 EXTERN mp_err TclBN_mp_grow(mp_int *a, int size);
jpayne@69 211 /* 21 */
jpayne@69 212 EXTERN mp_err TclBN_mp_init(mp_int *a);
jpayne@69 213 /* 22 */
jpayne@69 214 EXTERN mp_err TclBN_mp_init_copy(mp_int *a, const mp_int *b);
jpayne@69 215 /* 23 */
jpayne@69 216 EXTERN mp_err TclBN_mp_init_multi(mp_int *a, ...);
jpayne@69 217 /* 24 */
jpayne@69 218 EXTERN mp_err TclBN_mp_init_set(mp_int *a, mp_digit b);
jpayne@69 219 /* 25 */
jpayne@69 220 EXTERN mp_err TclBN_mp_init_size(mp_int *a, int size);
jpayne@69 221 /* 26 */
jpayne@69 222 EXTERN mp_err TclBN_mp_lshd(mp_int *a, int shift);
jpayne@69 223 /* 27 */
jpayne@69 224 EXTERN mp_err TclBN_mp_mod(const mp_int *a, const mp_int *b,
jpayne@69 225 mp_int *r);
jpayne@69 226 /* 28 */
jpayne@69 227 EXTERN mp_err TclBN_mp_mod_2d(const mp_int *a, int b, mp_int *r);
jpayne@69 228 /* 29 */
jpayne@69 229 EXTERN mp_err TclBN_mp_mul(const mp_int *a, const mp_int *b,
jpayne@69 230 mp_int *p);
jpayne@69 231 /* 30 */
jpayne@69 232 EXTERN mp_err TclBN_mp_mul_d(const mp_int *a, mp_digit b,
jpayne@69 233 mp_int *p);
jpayne@69 234 /* 31 */
jpayne@69 235 EXTERN mp_err TclBN_mp_mul_2(const mp_int *a, mp_int *p);
jpayne@69 236 /* 32 */
jpayne@69 237 EXTERN mp_err TclBN_mp_mul_2d(const mp_int *a, int d, mp_int *p);
jpayne@69 238 /* 33 */
jpayne@69 239 EXTERN mp_err TclBN_mp_neg(const mp_int *a, mp_int *b);
jpayne@69 240 /* 34 */
jpayne@69 241 EXTERN mp_err TclBN_mp_or(const mp_int *a, const mp_int *b,
jpayne@69 242 mp_int *c);
jpayne@69 243 /* 35 */
jpayne@69 244 EXTERN mp_err TclBN_mp_radix_size(const mp_int *a, int radix,
jpayne@69 245 int *size);
jpayne@69 246 /* 36 */
jpayne@69 247 EXTERN mp_err TclBN_mp_read_radix(mp_int *a, const char *str,
jpayne@69 248 int radix);
jpayne@69 249 /* 37 */
jpayne@69 250 EXTERN void TclBN_mp_rshd(mp_int *a, int shift);
jpayne@69 251 /* 38 */
jpayne@69 252 EXTERN mp_err TclBN_mp_shrink(mp_int *a);
jpayne@69 253 /* 39 */
jpayne@69 254 EXTERN void TclBN_mp_set(mp_int *a, mp_digit b);
jpayne@69 255 /* 40 */
jpayne@69 256 EXTERN mp_err TclBN_mp_sqr(const mp_int *a, mp_int *b);
jpayne@69 257 /* 41 */
jpayne@69 258 EXTERN mp_err TclBN_mp_sqrt(const mp_int *a, mp_int *b);
jpayne@69 259 /* 42 */
jpayne@69 260 EXTERN mp_err TclBN_mp_sub(const mp_int *a, const mp_int *b,
jpayne@69 261 mp_int *c);
jpayne@69 262 /* 43 */
jpayne@69 263 EXTERN mp_err TclBN_mp_sub_d(const mp_int *a, mp_digit b,
jpayne@69 264 mp_int *c);
jpayne@69 265 /* 44 */
jpayne@69 266 EXTERN mp_err TclBN_mp_to_unsigned_bin(const mp_int *a,
jpayne@69 267 unsigned char *b);
jpayne@69 268 /* 45 */
jpayne@69 269 EXTERN mp_err TclBN_mp_to_unsigned_bin_n(const mp_int *a,
jpayne@69 270 unsigned char *b, unsigned long *outlen);
jpayne@69 271 /* 46 */
jpayne@69 272 EXTERN mp_err TclBN_mp_toradix_n(const mp_int *a, char *str,
jpayne@69 273 int radix, int maxlen);
jpayne@69 274 /* 47 */
jpayne@69 275 EXTERN size_t TclBN_mp_unsigned_bin_size(const mp_int *a);
jpayne@69 276 /* 48 */
jpayne@69 277 EXTERN mp_err TclBN_mp_xor(const mp_int *a, const mp_int *b,
jpayne@69 278 mp_int *c);
jpayne@69 279 /* 49 */
jpayne@69 280 EXTERN void TclBN_mp_zero(mp_int *a);
jpayne@69 281 /* 50 */
jpayne@69 282 EXTERN void TclBN_reverse(unsigned char *s, int len);
jpayne@69 283 /* 51 */
jpayne@69 284 EXTERN mp_err TclBN_fast_s_mp_mul_digs(const mp_int *a,
jpayne@69 285 const mp_int *b, mp_int *c, int digs);
jpayne@69 286 /* 52 */
jpayne@69 287 EXTERN mp_err TclBN_fast_s_mp_sqr(const mp_int *a, mp_int *b);
jpayne@69 288 /* 53 */
jpayne@69 289 EXTERN mp_err TclBN_mp_karatsuba_mul(const mp_int *a,
jpayne@69 290 const mp_int *b, mp_int *c);
jpayne@69 291 /* 54 */
jpayne@69 292 EXTERN mp_err TclBN_mp_karatsuba_sqr(const mp_int *a, mp_int *b);
jpayne@69 293 /* 55 */
jpayne@69 294 EXTERN mp_err TclBN_mp_toom_mul(const mp_int *a, const mp_int *b,
jpayne@69 295 mp_int *c);
jpayne@69 296 /* 56 */
jpayne@69 297 EXTERN mp_err TclBN_mp_toom_sqr(const mp_int *a, mp_int *b);
jpayne@69 298 /* 57 */
jpayne@69 299 EXTERN mp_err TclBN_s_mp_add(const mp_int *a, const mp_int *b,
jpayne@69 300 mp_int *c);
jpayne@69 301 /* 58 */
jpayne@69 302 EXTERN mp_err TclBN_s_mp_mul_digs(const mp_int *a, const mp_int *b,
jpayne@69 303 mp_int *c, int digs);
jpayne@69 304 /* 59 */
jpayne@69 305 EXTERN mp_err TclBN_s_mp_sqr(const mp_int *a, mp_int *b);
jpayne@69 306 /* 60 */
jpayne@69 307 EXTERN mp_err TclBN_s_mp_sub(const mp_int *a, const mp_int *b,
jpayne@69 308 mp_int *c);
jpayne@69 309 /* 61 */
jpayne@69 310 EXTERN mp_err TclBN_mp_init_set_int(mp_int *a, unsigned long i);
jpayne@69 311 /* 62 */
jpayne@69 312 EXTERN mp_err TclBN_mp_set_int(mp_int *a, unsigned long i);
jpayne@69 313 /* 63 */
jpayne@69 314 EXTERN int TclBN_mp_cnt_lsb(const mp_int *a);
jpayne@69 315 /* 64 */
jpayne@69 316 EXTERN int TclBNInitBignumFromLong(mp_int *bignum, long initVal);
jpayne@69 317 /* 65 */
jpayne@69 318 EXTERN int TclBNInitBignumFromWideInt(mp_int *bignum,
jpayne@69 319 Tcl_WideInt initVal);
jpayne@69 320 /* 66 */
jpayne@69 321 EXTERN int TclBNInitBignumFromWideUInt(mp_int *bignum,
jpayne@69 322 Tcl_WideUInt initVal);
jpayne@69 323 /* 67 */
jpayne@69 324 EXTERN mp_err TclBN_mp_expt_d_ex(const mp_int *a, mp_digit b,
jpayne@69 325 mp_int *c, int fast);
jpayne@69 326 /* 68 */
jpayne@69 327 EXTERN void TclBN_mp_set_ull(mp_int *a, Tcl_WideUInt i);
jpayne@69 328 /* 69 */
jpayne@69 329 EXTERN Tcl_WideUInt TclBN_mp_get_mag_ull(const mp_int *a);
jpayne@69 330 /* 70 */
jpayne@69 331 EXTERN void TclBN_mp_set_ll(mp_int *a, Tcl_WideInt i);
jpayne@69 332 /* Slot 71 is reserved */
jpayne@69 333 /* Slot 72 is reserved */
jpayne@69 334 /* 73 */
jpayne@69 335 EXTERN mp_err TclBN_mp_tc_and(const mp_int *a, const mp_int *b,
jpayne@69 336 mp_int *c);
jpayne@69 337 /* 74 */
jpayne@69 338 EXTERN mp_err TclBN_mp_tc_or(const mp_int *a, const mp_int *b,
jpayne@69 339 mp_int *c);
jpayne@69 340 /* 75 */
jpayne@69 341 EXTERN mp_err TclBN_mp_tc_xor(const mp_int *a, const mp_int *b,
jpayne@69 342 mp_int *c);
jpayne@69 343 /* 76 */
jpayne@69 344 EXTERN mp_err TclBN_mp_signed_rsh(const mp_int *a, int b,
jpayne@69 345 mp_int *c);
jpayne@69 346 /* Slot 77 is reserved */
jpayne@69 347 /* 78 */
jpayne@69 348 EXTERN int TclBN_mp_to_ubin(const mp_int *a, unsigned char *buf,
jpayne@69 349 size_t maxlen, size_t *written);
jpayne@69 350 /* 79 */
jpayne@69 351 EXTERN mp_err TclBN_mp_div_ld(const mp_int *a, Tcl_WideUInt b,
jpayne@69 352 mp_int *q, Tcl_WideUInt *r);
jpayne@69 353 /* 80 */
jpayne@69 354 EXTERN int TclBN_mp_to_radix(const mp_int *a, char *str,
jpayne@69 355 size_t maxlen, size_t *written, int radix);
jpayne@69 356
jpayne@69 357 typedef struct TclTomMathStubs {
jpayne@69 358 int magic;
jpayne@69 359 void *hooks;
jpayne@69 360
jpayne@69 361 int (*tclBN_epoch) (void); /* 0 */
jpayne@69 362 int (*tclBN_revision) (void); /* 1 */
jpayne@69 363 mp_err (*tclBN_mp_add) (const mp_int *a, const mp_int *b, mp_int *c); /* 2 */
jpayne@69 364 mp_err (*tclBN_mp_add_d) (const mp_int *a, mp_digit b, mp_int *c); /* 3 */
jpayne@69 365 mp_err (*tclBN_mp_and) (const mp_int *a, const mp_int *b, mp_int *c); /* 4 */
jpayne@69 366 void (*tclBN_mp_clamp) (mp_int *a); /* 5 */
jpayne@69 367 void (*tclBN_mp_clear) (mp_int *a); /* 6 */
jpayne@69 368 void (*tclBN_mp_clear_multi) (mp_int *a, ...); /* 7 */
jpayne@69 369 mp_ord (*tclBN_mp_cmp) (const mp_int *a, const mp_int *b); /* 8 */
jpayne@69 370 mp_ord (*tclBN_mp_cmp_d) (const mp_int *a, mp_digit b); /* 9 */
jpayne@69 371 mp_ord (*tclBN_mp_cmp_mag) (const mp_int *a, const mp_int *b); /* 10 */
jpayne@69 372 mp_err (*tclBN_mp_copy) (const mp_int *a, mp_int *b); /* 11 */
jpayne@69 373 int (*tclBN_mp_count_bits) (const mp_int *a); /* 12 */
jpayne@69 374 mp_err (*tclBN_mp_div) (const mp_int *a, const mp_int *b, mp_int *q, mp_int *r); /* 13 */
jpayne@69 375 mp_err (*tclBN_mp_div_d) (const mp_int *a, mp_digit b, mp_int *q, mp_digit *r); /* 14 */
jpayne@69 376 mp_err (*tclBN_mp_div_2) (const mp_int *a, mp_int *q); /* 15 */
jpayne@69 377 mp_err (*tclBN_mp_div_2d) (const mp_int *a, int b, mp_int *q, mp_int *r); /* 16 */
jpayne@69 378 mp_err (*tclBN_mp_div_3) (const mp_int *a, mp_int *q, mp_digit *r); /* 17 */
jpayne@69 379 void (*tclBN_mp_exch) (mp_int *a, mp_int *b); /* 18 */
jpayne@69 380 mp_err (*tclBN_mp_expt_d) (const mp_int *a, unsigned int b, mp_int *c); /* 19 */
jpayne@69 381 mp_err (*tclBN_mp_grow) (mp_int *a, int size); /* 20 */
jpayne@69 382 mp_err (*tclBN_mp_init) (mp_int *a); /* 21 */
jpayne@69 383 mp_err (*tclBN_mp_init_copy) (mp_int *a, const mp_int *b); /* 22 */
jpayne@69 384 mp_err (*tclBN_mp_init_multi) (mp_int *a, ...); /* 23 */
jpayne@69 385 mp_err (*tclBN_mp_init_set) (mp_int *a, mp_digit b); /* 24 */
jpayne@69 386 mp_err (*tclBN_mp_init_size) (mp_int *a, int size); /* 25 */
jpayne@69 387 mp_err (*tclBN_mp_lshd) (mp_int *a, int shift); /* 26 */
jpayne@69 388 mp_err (*tclBN_mp_mod) (const mp_int *a, const mp_int *b, mp_int *r); /* 27 */
jpayne@69 389 mp_err (*tclBN_mp_mod_2d) (const mp_int *a, int b, mp_int *r); /* 28 */
jpayne@69 390 mp_err (*tclBN_mp_mul) (const mp_int *a, const mp_int *b, mp_int *p); /* 29 */
jpayne@69 391 mp_err (*tclBN_mp_mul_d) (const mp_int *a, mp_digit b, mp_int *p); /* 30 */
jpayne@69 392 mp_err (*tclBN_mp_mul_2) (const mp_int *a, mp_int *p); /* 31 */
jpayne@69 393 mp_err (*tclBN_mp_mul_2d) (const mp_int *a, int d, mp_int *p); /* 32 */
jpayne@69 394 mp_err (*tclBN_mp_neg) (const mp_int *a, mp_int *b); /* 33 */
jpayne@69 395 mp_err (*tclBN_mp_or) (const mp_int *a, const mp_int *b, mp_int *c); /* 34 */
jpayne@69 396 mp_err (*tclBN_mp_radix_size) (const mp_int *a, int radix, int *size); /* 35 */
jpayne@69 397 mp_err (*tclBN_mp_read_radix) (mp_int *a, const char *str, int radix); /* 36 */
jpayne@69 398 void (*tclBN_mp_rshd) (mp_int *a, int shift); /* 37 */
jpayne@69 399 mp_err (*tclBN_mp_shrink) (mp_int *a); /* 38 */
jpayne@69 400 void (*tclBN_mp_set) (mp_int *a, mp_digit b); /* 39 */
jpayne@69 401 mp_err (*tclBN_mp_sqr) (const mp_int *a, mp_int *b); /* 40 */
jpayne@69 402 mp_err (*tclBN_mp_sqrt) (const mp_int *a, mp_int *b); /* 41 */
jpayne@69 403 mp_err (*tclBN_mp_sub) (const mp_int *a, const mp_int *b, mp_int *c); /* 42 */
jpayne@69 404 mp_err (*tclBN_mp_sub_d) (const mp_int *a, mp_digit b, mp_int *c); /* 43 */
jpayne@69 405 mp_err (*tclBN_mp_to_unsigned_bin) (const mp_int *a, unsigned char *b); /* 44 */
jpayne@69 406 mp_err (*tclBN_mp_to_unsigned_bin_n) (const mp_int *a, unsigned char *b, unsigned long *outlen); /* 45 */
jpayne@69 407 mp_err (*tclBN_mp_toradix_n) (const mp_int *a, char *str, int radix, int maxlen); /* 46 */
jpayne@69 408 size_t (*tclBN_mp_unsigned_bin_size) (const mp_int *a); /* 47 */
jpayne@69 409 mp_err (*tclBN_mp_xor) (const mp_int *a, const mp_int *b, mp_int *c); /* 48 */
jpayne@69 410 void (*tclBN_mp_zero) (mp_int *a); /* 49 */
jpayne@69 411 void (*tclBN_reverse) (unsigned char *s, int len); /* 50 */
jpayne@69 412 mp_err (*tclBN_fast_s_mp_mul_digs) (const mp_int *a, const mp_int *b, mp_int *c, int digs); /* 51 */
jpayne@69 413 mp_err (*tclBN_fast_s_mp_sqr) (const mp_int *a, mp_int *b); /* 52 */
jpayne@69 414 mp_err (*tclBN_mp_karatsuba_mul) (const mp_int *a, const mp_int *b, mp_int *c); /* 53 */
jpayne@69 415 mp_err (*tclBN_mp_karatsuba_sqr) (const mp_int *a, mp_int *b); /* 54 */
jpayne@69 416 mp_err (*tclBN_mp_toom_mul) (const mp_int *a, const mp_int *b, mp_int *c); /* 55 */
jpayne@69 417 mp_err (*tclBN_mp_toom_sqr) (const mp_int *a, mp_int *b); /* 56 */
jpayne@69 418 mp_err (*tclBN_s_mp_add) (const mp_int *a, const mp_int *b, mp_int *c); /* 57 */
jpayne@69 419 mp_err (*tclBN_s_mp_mul_digs) (const mp_int *a, const mp_int *b, mp_int *c, int digs); /* 58 */
jpayne@69 420 mp_err (*tclBN_s_mp_sqr) (const mp_int *a, mp_int *b); /* 59 */
jpayne@69 421 mp_err (*tclBN_s_mp_sub) (const mp_int *a, const mp_int *b, mp_int *c); /* 60 */
jpayne@69 422 mp_err (*tclBN_mp_init_set_int) (mp_int *a, unsigned long i); /* 61 */
jpayne@69 423 mp_err (*tclBN_mp_set_int) (mp_int *a, unsigned long i); /* 62 */
jpayne@69 424 int (*tclBN_mp_cnt_lsb) (const mp_int *a); /* 63 */
jpayne@69 425 int (*tclBNInitBignumFromLong) (mp_int *bignum, long initVal); /* 64 */
jpayne@69 426 int (*tclBNInitBignumFromWideInt) (mp_int *bignum, Tcl_WideInt initVal); /* 65 */
jpayne@69 427 int (*tclBNInitBignumFromWideUInt) (mp_int *bignum, Tcl_WideUInt initVal); /* 66 */
jpayne@69 428 mp_err (*tclBN_mp_expt_d_ex) (const mp_int *a, mp_digit b, mp_int *c, int fast); /* 67 */
jpayne@69 429 void (*tclBN_mp_set_ull) (mp_int *a, Tcl_WideUInt i); /* 68 */
jpayne@69 430 Tcl_WideUInt (*tclBN_mp_get_mag_ull) (const mp_int *a); /* 69 */
jpayne@69 431 void (*tclBN_mp_set_ll) (mp_int *a, Tcl_WideInt i); /* 70 */
jpayne@69 432 void (*reserved71)(void);
jpayne@69 433 void (*reserved72)(void);
jpayne@69 434 mp_err (*tclBN_mp_tc_and) (const mp_int *a, const mp_int *b, mp_int *c); /* 73 */
jpayne@69 435 mp_err (*tclBN_mp_tc_or) (const mp_int *a, const mp_int *b, mp_int *c); /* 74 */
jpayne@69 436 mp_err (*tclBN_mp_tc_xor) (const mp_int *a, const mp_int *b, mp_int *c); /* 75 */
jpayne@69 437 mp_err (*tclBN_mp_signed_rsh) (const mp_int *a, int b, mp_int *c); /* 76 */
jpayne@69 438 void (*reserved77)(void);
jpayne@69 439 int (*tclBN_mp_to_ubin) (const mp_int *a, unsigned char *buf, size_t maxlen, size_t *written); /* 78 */
jpayne@69 440 mp_err (*tclBN_mp_div_ld) (const mp_int *a, Tcl_WideUInt b, mp_int *q, Tcl_WideUInt *r); /* 79 */
jpayne@69 441 int (*tclBN_mp_to_radix) (const mp_int *a, char *str, size_t maxlen, size_t *written, int radix); /* 80 */
jpayne@69 442 } TclTomMathStubs;
jpayne@69 443
jpayne@69 444 extern const TclTomMathStubs *tclTomMathStubsPtr;
jpayne@69 445
jpayne@69 446 #ifdef __cplusplus
jpayne@69 447 }
jpayne@69 448 #endif
jpayne@69 449
jpayne@69 450 #if defined(USE_TCL_STUBS)
jpayne@69 451
jpayne@69 452 /*
jpayne@69 453 * Inline function declarations:
jpayne@69 454 */
jpayne@69 455
jpayne@69 456 #define TclBN_epoch \
jpayne@69 457 (tclTomMathStubsPtr->tclBN_epoch) /* 0 */
jpayne@69 458 #define TclBN_revision \
jpayne@69 459 (tclTomMathStubsPtr->tclBN_revision) /* 1 */
jpayne@69 460 #define TclBN_mp_add \
jpayne@69 461 (tclTomMathStubsPtr->tclBN_mp_add) /* 2 */
jpayne@69 462 #define TclBN_mp_add_d \
jpayne@69 463 (tclTomMathStubsPtr->tclBN_mp_add_d) /* 3 */
jpayne@69 464 #define TclBN_mp_and \
jpayne@69 465 (tclTomMathStubsPtr->tclBN_mp_and) /* 4 */
jpayne@69 466 #define TclBN_mp_clamp \
jpayne@69 467 (tclTomMathStubsPtr->tclBN_mp_clamp) /* 5 */
jpayne@69 468 #define TclBN_mp_clear \
jpayne@69 469 (tclTomMathStubsPtr->tclBN_mp_clear) /* 6 */
jpayne@69 470 #define TclBN_mp_clear_multi \
jpayne@69 471 (tclTomMathStubsPtr->tclBN_mp_clear_multi) /* 7 */
jpayne@69 472 #define TclBN_mp_cmp \
jpayne@69 473 (tclTomMathStubsPtr->tclBN_mp_cmp) /* 8 */
jpayne@69 474 #define TclBN_mp_cmp_d \
jpayne@69 475 (tclTomMathStubsPtr->tclBN_mp_cmp_d) /* 9 */
jpayne@69 476 #define TclBN_mp_cmp_mag \
jpayne@69 477 (tclTomMathStubsPtr->tclBN_mp_cmp_mag) /* 10 */
jpayne@69 478 #define TclBN_mp_copy \
jpayne@69 479 (tclTomMathStubsPtr->tclBN_mp_copy) /* 11 */
jpayne@69 480 #define TclBN_mp_count_bits \
jpayne@69 481 (tclTomMathStubsPtr->tclBN_mp_count_bits) /* 12 */
jpayne@69 482 #define TclBN_mp_div \
jpayne@69 483 (tclTomMathStubsPtr->tclBN_mp_div) /* 13 */
jpayne@69 484 #define TclBN_mp_div_d \
jpayne@69 485 (tclTomMathStubsPtr->tclBN_mp_div_d) /* 14 */
jpayne@69 486 #define TclBN_mp_div_2 \
jpayne@69 487 (tclTomMathStubsPtr->tclBN_mp_div_2) /* 15 */
jpayne@69 488 #define TclBN_mp_div_2d \
jpayne@69 489 (tclTomMathStubsPtr->tclBN_mp_div_2d) /* 16 */
jpayne@69 490 #define TclBN_mp_div_3 \
jpayne@69 491 (tclTomMathStubsPtr->tclBN_mp_div_3) /* 17 */
jpayne@69 492 #define TclBN_mp_exch \
jpayne@69 493 (tclTomMathStubsPtr->tclBN_mp_exch) /* 18 */
jpayne@69 494 #define TclBN_mp_expt_d \
jpayne@69 495 (tclTomMathStubsPtr->tclBN_mp_expt_d) /* 19 */
jpayne@69 496 #define TclBN_mp_grow \
jpayne@69 497 (tclTomMathStubsPtr->tclBN_mp_grow) /* 20 */
jpayne@69 498 #define TclBN_mp_init \
jpayne@69 499 (tclTomMathStubsPtr->tclBN_mp_init) /* 21 */
jpayne@69 500 #define TclBN_mp_init_copy \
jpayne@69 501 (tclTomMathStubsPtr->tclBN_mp_init_copy) /* 22 */
jpayne@69 502 #define TclBN_mp_init_multi \
jpayne@69 503 (tclTomMathStubsPtr->tclBN_mp_init_multi) /* 23 */
jpayne@69 504 #define TclBN_mp_init_set \
jpayne@69 505 (tclTomMathStubsPtr->tclBN_mp_init_set) /* 24 */
jpayne@69 506 #define TclBN_mp_init_size \
jpayne@69 507 (tclTomMathStubsPtr->tclBN_mp_init_size) /* 25 */
jpayne@69 508 #define TclBN_mp_lshd \
jpayne@69 509 (tclTomMathStubsPtr->tclBN_mp_lshd) /* 26 */
jpayne@69 510 #define TclBN_mp_mod \
jpayne@69 511 (tclTomMathStubsPtr->tclBN_mp_mod) /* 27 */
jpayne@69 512 #define TclBN_mp_mod_2d \
jpayne@69 513 (tclTomMathStubsPtr->tclBN_mp_mod_2d) /* 28 */
jpayne@69 514 #define TclBN_mp_mul \
jpayne@69 515 (tclTomMathStubsPtr->tclBN_mp_mul) /* 29 */
jpayne@69 516 #define TclBN_mp_mul_d \
jpayne@69 517 (tclTomMathStubsPtr->tclBN_mp_mul_d) /* 30 */
jpayne@69 518 #define TclBN_mp_mul_2 \
jpayne@69 519 (tclTomMathStubsPtr->tclBN_mp_mul_2) /* 31 */
jpayne@69 520 #define TclBN_mp_mul_2d \
jpayne@69 521 (tclTomMathStubsPtr->tclBN_mp_mul_2d) /* 32 */
jpayne@69 522 #define TclBN_mp_neg \
jpayne@69 523 (tclTomMathStubsPtr->tclBN_mp_neg) /* 33 */
jpayne@69 524 #define TclBN_mp_or \
jpayne@69 525 (tclTomMathStubsPtr->tclBN_mp_or) /* 34 */
jpayne@69 526 #define TclBN_mp_radix_size \
jpayne@69 527 (tclTomMathStubsPtr->tclBN_mp_radix_size) /* 35 */
jpayne@69 528 #define TclBN_mp_read_radix \
jpayne@69 529 (tclTomMathStubsPtr->tclBN_mp_read_radix) /* 36 */
jpayne@69 530 #define TclBN_mp_rshd \
jpayne@69 531 (tclTomMathStubsPtr->tclBN_mp_rshd) /* 37 */
jpayne@69 532 #define TclBN_mp_shrink \
jpayne@69 533 (tclTomMathStubsPtr->tclBN_mp_shrink) /* 38 */
jpayne@69 534 #define TclBN_mp_set \
jpayne@69 535 (tclTomMathStubsPtr->tclBN_mp_set) /* 39 */
jpayne@69 536 #define TclBN_mp_sqr \
jpayne@69 537 (tclTomMathStubsPtr->tclBN_mp_sqr) /* 40 */
jpayne@69 538 #define TclBN_mp_sqrt \
jpayne@69 539 (tclTomMathStubsPtr->tclBN_mp_sqrt) /* 41 */
jpayne@69 540 #define TclBN_mp_sub \
jpayne@69 541 (tclTomMathStubsPtr->tclBN_mp_sub) /* 42 */
jpayne@69 542 #define TclBN_mp_sub_d \
jpayne@69 543 (tclTomMathStubsPtr->tclBN_mp_sub_d) /* 43 */
jpayne@69 544 #define TclBN_mp_to_unsigned_bin \
jpayne@69 545 (tclTomMathStubsPtr->tclBN_mp_to_unsigned_bin) /* 44 */
jpayne@69 546 #define TclBN_mp_to_unsigned_bin_n \
jpayne@69 547 (tclTomMathStubsPtr->tclBN_mp_to_unsigned_bin_n) /* 45 */
jpayne@69 548 #define TclBN_mp_toradix_n \
jpayne@69 549 (tclTomMathStubsPtr->tclBN_mp_toradix_n) /* 46 */
jpayne@69 550 #define TclBN_mp_unsigned_bin_size \
jpayne@69 551 (tclTomMathStubsPtr->tclBN_mp_unsigned_bin_size) /* 47 */
jpayne@69 552 #define TclBN_mp_xor \
jpayne@69 553 (tclTomMathStubsPtr->tclBN_mp_xor) /* 48 */
jpayne@69 554 #define TclBN_mp_zero \
jpayne@69 555 (tclTomMathStubsPtr->tclBN_mp_zero) /* 49 */
jpayne@69 556 #define TclBN_reverse \
jpayne@69 557 (tclTomMathStubsPtr->tclBN_reverse) /* 50 */
jpayne@69 558 #define TclBN_fast_s_mp_mul_digs \
jpayne@69 559 (tclTomMathStubsPtr->tclBN_fast_s_mp_mul_digs) /* 51 */
jpayne@69 560 #define TclBN_fast_s_mp_sqr \
jpayne@69 561 (tclTomMathStubsPtr->tclBN_fast_s_mp_sqr) /* 52 */
jpayne@69 562 #define TclBN_mp_karatsuba_mul \
jpayne@69 563 (tclTomMathStubsPtr->tclBN_mp_karatsuba_mul) /* 53 */
jpayne@69 564 #define TclBN_mp_karatsuba_sqr \
jpayne@69 565 (tclTomMathStubsPtr->tclBN_mp_karatsuba_sqr) /* 54 */
jpayne@69 566 #define TclBN_mp_toom_mul \
jpayne@69 567 (tclTomMathStubsPtr->tclBN_mp_toom_mul) /* 55 */
jpayne@69 568 #define TclBN_mp_toom_sqr \
jpayne@69 569 (tclTomMathStubsPtr->tclBN_mp_toom_sqr) /* 56 */
jpayne@69 570 #define TclBN_s_mp_add \
jpayne@69 571 (tclTomMathStubsPtr->tclBN_s_mp_add) /* 57 */
jpayne@69 572 #define TclBN_s_mp_mul_digs \
jpayne@69 573 (tclTomMathStubsPtr->tclBN_s_mp_mul_digs) /* 58 */
jpayne@69 574 #define TclBN_s_mp_sqr \
jpayne@69 575 (tclTomMathStubsPtr->tclBN_s_mp_sqr) /* 59 */
jpayne@69 576 #define TclBN_s_mp_sub \
jpayne@69 577 (tclTomMathStubsPtr->tclBN_s_mp_sub) /* 60 */
jpayne@69 578 #define TclBN_mp_init_set_int \
jpayne@69 579 (tclTomMathStubsPtr->tclBN_mp_init_set_int) /* 61 */
jpayne@69 580 #define TclBN_mp_set_int \
jpayne@69 581 (tclTomMathStubsPtr->tclBN_mp_set_int) /* 62 */
jpayne@69 582 #define TclBN_mp_cnt_lsb \
jpayne@69 583 (tclTomMathStubsPtr->tclBN_mp_cnt_lsb) /* 63 */
jpayne@69 584 #define TclBNInitBignumFromLong \
jpayne@69 585 (tclTomMathStubsPtr->tclBNInitBignumFromLong) /* 64 */
jpayne@69 586 #define TclBNInitBignumFromWideInt \
jpayne@69 587 (tclTomMathStubsPtr->tclBNInitBignumFromWideInt) /* 65 */
jpayne@69 588 #define TclBNInitBignumFromWideUInt \
jpayne@69 589 (tclTomMathStubsPtr->tclBNInitBignumFromWideUInt) /* 66 */
jpayne@69 590 #define TclBN_mp_expt_d_ex \
jpayne@69 591 (tclTomMathStubsPtr->tclBN_mp_expt_d_ex) /* 67 */
jpayne@69 592 #define TclBN_mp_set_ull \
jpayne@69 593 (tclTomMathStubsPtr->tclBN_mp_set_ull) /* 68 */
jpayne@69 594 #define TclBN_mp_get_mag_ull \
jpayne@69 595 (tclTomMathStubsPtr->tclBN_mp_get_mag_ull) /* 69 */
jpayne@69 596 #define TclBN_mp_set_ll \
jpayne@69 597 (tclTomMathStubsPtr->tclBN_mp_set_ll) /* 70 */
jpayne@69 598 /* Slot 71 is reserved */
jpayne@69 599 /* Slot 72 is reserved */
jpayne@69 600 #define TclBN_mp_tc_and \
jpayne@69 601 (tclTomMathStubsPtr->tclBN_mp_tc_and) /* 73 */
jpayne@69 602 #define TclBN_mp_tc_or \
jpayne@69 603 (tclTomMathStubsPtr->tclBN_mp_tc_or) /* 74 */
jpayne@69 604 #define TclBN_mp_tc_xor \
jpayne@69 605 (tclTomMathStubsPtr->tclBN_mp_tc_xor) /* 75 */
jpayne@69 606 #define TclBN_mp_signed_rsh \
jpayne@69 607 (tclTomMathStubsPtr->tclBN_mp_signed_rsh) /* 76 */
jpayne@69 608 /* Slot 77 is reserved */
jpayne@69 609 #define TclBN_mp_to_ubin \
jpayne@69 610 (tclTomMathStubsPtr->tclBN_mp_to_ubin) /* 78 */
jpayne@69 611 #define TclBN_mp_div_ld \
jpayne@69 612 (tclTomMathStubsPtr->tclBN_mp_div_ld) /* 79 */
jpayne@69 613 #define TclBN_mp_to_radix \
jpayne@69 614 (tclTomMathStubsPtr->tclBN_mp_to_radix) /* 80 */
jpayne@69 615
jpayne@69 616 #endif /* defined(USE_TCL_STUBS) */
jpayne@69 617
jpayne@69 618 /* !END!: Do not edit above this line. */
jpayne@69 619
jpayne@69 620 #undef TCL_STORAGE_CLASS
jpayne@69 621 #define TCL_STORAGE_CLASS DLLIMPORT
jpayne@69 622
jpayne@69 623 #ifdef USE_TCL_STUBS
jpayne@69 624 #undef TclBNInitBignumFromLong
jpayne@69 625 #define TclBNInitBignumFromLong(a,b) \
jpayne@69 626 do { \
jpayne@69 627 (a)->dp = NULL; \
jpayne@69 628 (void)tclTomMathStubsPtr->tclBNInitBignumFromLong((a),(b)); \
jpayne@69 629 if ((a)->dp == NULL) { \
jpayne@69 630 Tcl_Panic("initialization failure in TclBNInitBignumFromLong"); \
jpayne@69 631 } \
jpayne@69 632 } while (0)
jpayne@69 633 #undef TclBNInitBignumFromWideInt
jpayne@69 634 #define TclBNInitBignumFromWideInt(a,b) \
jpayne@69 635 do { \
jpayne@69 636 (a)->dp = NULL; \
jpayne@69 637 (void)tclTomMathStubsPtr->tclBNInitBignumFromWideInt((a),(b)); \
jpayne@69 638 if ((a)->dp == NULL) { \
jpayne@69 639 Tcl_Panic("initialization failure in TclBNInitBignumFromWideInt"); \
jpayne@69 640 } \
jpayne@69 641 } while (0)
jpayne@69 642 #undef TclBNInitBignumFromWideUInt
jpayne@69 643 #define TclBNInitBignumFromWideUInt(a,b) \
jpayne@69 644 do { \
jpayne@69 645 (a)->dp = NULL; \
jpayne@69 646 (void)tclTomMathStubsPtr->tclBNInitBignumFromWideUInt((a),(b)); \
jpayne@69 647 if ((a)->dp == NULL) { \
jpayne@69 648 Tcl_Panic("initialization failure in TclBNInitBignumFromWideUInt"); \
jpayne@69 649 } \
jpayne@69 650 } while (0)
jpayne@69 651 #define mp_init_i32(a,b) (((a)->dp=NULL,tclTomMathStubsPtr->tclBNInitBignumFromLong((a),(int32_t)(b)),(a)->dp)?MP_OKAY:MP_ERR)
jpayne@69 652 #define mp_init_l(a,b) (((a)->dp=NULL,tclTomMathStubsPtr->tclBNInitBignumFromLong((a),(b)),(a)->dp)?MP_OKAY:MP_ERR)
jpayne@69 653 #define mp_init_ll(a,b) (((a)->dp=NULL,tclTomMathStubsPtr->tclBNInitBignumFromWideInt((a),(b)),(a)->dp)?MP_OKAY:MP_ERR)
jpayne@69 654 #define mp_init_i64(a,b) (((a)->dp=NULL,tclTomMathStubsPtr->tclBNInitBignumFromWideInt((a),(b)),(a)->dp)?MP_OKAY:MP_ERR)
jpayne@69 655 #define mp_init_u32(a,b) (((a)->dp=NULL,tclTomMathStubsPtr->tclBNInitBignumFromWideUInt((a),(uint32_t)(b)),(a)->dp)?MP_OKAY:MP_ERR)
jpayne@69 656 #define mp_init_ul(a,b) (((a)->dp=NULL,tclTomMathStubsPtr->tclBNInitBignumFromWideUInt((a),(unsigned long)(b)),(a)->dp)?MP_OKAY:MP_ERR)
jpayne@69 657 #define mp_init_ull(a,b) (((a)->dp=NULL,tclTomMathStubsPtr->tclBNInitBignumFromWideUInt((a),(b)),(a)->dp)?MP_OKAY:MP_ERR)
jpayne@69 658 #define mp_init_u64(a,b) (((a)->dp=NULL,tclTomMathStubsPtr->tclBNInitBignumFromWideUInt((a),(b)),(a)->dp)?MP_OKAY:MP_ERR)
jpayne@69 659 #else
jpayne@69 660 #define mp_init_i32(a,b) (((a)->dp=NULL,(TclBNInitBignumFromLong)((a),(int32_t)(b)),(a)->dp)?MP_OKAY:MP_ERR)
jpayne@69 661 #define mp_init_l(a,b) (((a)->dp=NULL,(TclBNInitBignumFromLong)((a),(b)),(a)->dp)?MP_OKAY:MP_ERR)
jpayne@69 662 #define mp_init_ll(a,b) (((a)->dp=NULL,(TclBNInitBignumFromWideInt)((a),(b)),(a)->dp)?MP_OKAY:MP_ERR)
jpayne@69 663 #define mp_init_i64(a,b) (((a)->dp=NULL,(TclBNInitBignumFromWideInt)((a),(b)),(a)->dp)?MP_OKAY:MP_ERR)
jpayne@69 664 #define mp_init_u32(a,b) (((a)->dp=NULL,(TclBNInitBignumFromWideUInt)((a),(uint32_t)(b)),(a)->dp)?MP_OKAY:MP_ERR)
jpayne@69 665 #define mp_init_ul(a,b) (((a)->dp=NULL,(TclBNInitBignumFromWideUInt)((a),(unsigned long)(b)),(a)->dp)?MP_OKAY:MP_ERR)
jpayne@69 666 #define mp_init_ull(a,b) (((a)->dp=NULL,(TclBNInitBignumFromWideUInt)((a),(b)),(a)->dp)?MP_OKAY:MP_ERR)
jpayne@69 667 #define mp_init_u64(a,b) (((a)->dp=NULL,(TclBNInitBignumFromWideUInt)((a),(b)),(a)->dp)?MP_OKAY:MP_ERR)
jpayne@69 668 #endif /* USE_TCL_STUBS */
jpayne@69 669 #endif /* _TCLINTDECLS */