pike.git / src / bignum.c

version» Context lines:

pike.git/src/bignum.c:1:   /*   || This file is part of Pike. For copyright information see COPYRIGHT.   || Pike is distributed under GPL, LGPL and MPL. See the file COPYING   || for more information.   */      #include "global.h"    - #ifdef AUTO_BIGNUM -  +    #include "interpret.h"   #include "program.h"   #include "object.h"   #include "svalue.h"   #include "pike_error.h"    -  + #include "bignum.h" +    #define sp Pike_sp      PMOD_EXPORT struct svalue auto_bignum_program = SVALUE_INIT_FREE;      PMOD_EXPORT struct program *get_auto_bignum_program(void)   { -  return program_from_function(&auto_bignum_program); +  return program_from_svalue(&auto_bignum_program);   }      PMOD_EXPORT struct program *get_auto_bignum_program_or_zero(void)   {    if (TYPEOF(auto_bignum_program) == PIKE_T_FREE)    return 0; -  return program_from_function(&auto_bignum_program); +  return program_from_svalue(&auto_bignum_program);   }      void exit_auto_bignum(void)   {    free_svalue(&auto_bignum_program);    mark_free_svalue (&auto_bignum_program);   }      PMOD_EXPORT void convert_stack_top_to_bignum(void)   {
pike.git/src/bignum.c:120: Inside #if defined(INT64)
     PMOD_EXPORT void (*push_int64) (INT64) = bootstrap_push_int64;   PMOD_EXPORT int (*int64_from_bignum) (INT64 *, struct object *) = NULL;   PMOD_EXPORT void (*reduce_stack_top_bignum) (void) = NULL;   #endif      PMOD_EXPORT void (*push_ulongest) (unsigned LONGEST) = NULL;   PMOD_EXPORT int (*ulongest_from_bignum) (unsigned LONGEST *,    struct object *) = NULL;    + PMOD_EXPORT int (*mpz_from_svalue)(MP_INT *, struct svalue *) = NULL; + PMOD_EXPORT void (*push_bignum)(MP_INT *) = NULL; +    PMOD_EXPORT void hook_in_gmp_funcs (   #ifdef INT64    void (*push_int64_val)(INT64),    int (*int64_from_bignum_val) (INT64 *, struct object *),    void (*reduce_stack_top_bignum_val) (void),   #endif    void (*push_ulongest_val) (unsigned LONGEST), -  int (*ulongest_from_bignum_val) (unsigned LONGEST *, struct object *)) +  int (*ulongest_from_bignum_val) (unsigned LONGEST *, struct object *), +  int (*mpz_from_svalue_val)(MP_INT *, struct svalue *), +  void (*push_bignum_val)(MP_INT *))   {    /* Assigning the pointers above directly from the Gmp module doesn't    * work in some cases, e.g. NT. */   #ifdef INT64    push_int64 = push_int64_val ? push_int64_val : bootstrap_push_int64;    int64_from_bignum = int64_from_bignum_val;    reduce_stack_top_bignum = reduce_stack_top_bignum_val;   #endif    push_ulongest = push_ulongest_val;    ulongest_from_bignum = ulongest_from_bignum_val; -  +  mpz_from_svalue = mpz_from_svalue_val; +  push_bignum = push_bignum_val;   } -  - #endif /* AUTO_BIGNUM */ +