mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Merge branch 'bigint-gem' of https://github.com/dearblue/mruby into dearblue-bigint-gem
This commit is contained in:
@@ -3,7 +3,3 @@
|
||||
This extension uses fgmp, which is a public domain implementation of a subset of the GNU gmp library by Mark Henderson <markh@wimsey.bc.ca>
|
||||
But it's heavily modified to fit with mruby. You can get the original source code from <https://github.com/deischi/fgmp.git>
|
||||
You can read the original README for fgmp in <README-fgmp.md>
|
||||
|
||||
## Implementation
|
||||
|
||||
This mrbgem is only to turn on `MRB_USE_BIGINT` flag. The implementation resides in `include/mruby/bigint.h` and `src/bigint.c`.
|
||||
|
||||
@@ -3,16 +3,15 @@
|
||||
**
|
||||
** See Copyright Notice in mruby.h
|
||||
*/
|
||||
#ifdef MRB_USE_BIGINT
|
||||
|
||||
#include <mruby.h>
|
||||
#include <mruby/object.h>
|
||||
#include <mruby/numeric.h>
|
||||
#include <mruby/bigint.h>
|
||||
#include <mruby/array.h>
|
||||
#include <mruby/string.h>
|
||||
#include <mruby/internal.h>
|
||||
#include <string.h>
|
||||
#include "bigint.h"
|
||||
|
||||
static void
|
||||
mpz_init(mrb_state *mrb, mpz_t *s)
|
||||
@@ -1458,4 +1457,3 @@ mrb_bint_rshift(mrb_state *mrb, mrb_value x, mrb_int width)
|
||||
}
|
||||
return bint_norm(mrb, b2);
|
||||
}
|
||||
#endif /* MRB_USE_BIGINT */
|
||||
@@ -3,7 +3,6 @@
|
||||
**
|
||||
** See Copyright Notice in mruby.h
|
||||
*/
|
||||
#ifdef MRB_USE_BIGINT
|
||||
|
||||
#ifndef MRUBY_BIGINT_H
|
||||
#define MRUBY_BIGINT_H
|
||||
@@ -85,33 +84,4 @@ struct RBigint {
|
||||
|
||||
#define RBIGINT(v) ((struct RBigint*)mrb_ptr(v))
|
||||
|
||||
mrb_value mrb_bint_new_int(mrb_state *mrb, mrb_int x);
|
||||
mrb_value mrb_bint_add(mrb_state *mrb, mrb_value x, mrb_value y);
|
||||
mrb_value mrb_bint_sub(mrb_state *mrb, mrb_value x, mrb_value y);
|
||||
mrb_value mrb_bint_mul(mrb_state *mrb, mrb_value x, mrb_value y);
|
||||
mrb_value mrb_bint_div(mrb_state *mrb, mrb_value x, mrb_value y);
|
||||
mrb_value mrb_bint_divmod(mrb_state *mrb, mrb_value x, mrb_value y);
|
||||
mrb_value mrb_bint_add_ii(mrb_state *mrb, mrb_int x, mrb_int y);
|
||||
mrb_value mrb_bint_sub_ii(mrb_state *mrb, mrb_int x, mrb_int y);
|
||||
mrb_value mrb_bint_mul_ii(mrb_state *mrb, mrb_int x, mrb_int y);
|
||||
mrb_value mrb_bint_div_ii(mrb_state *mrb, mrb_int x, mrb_int y);
|
||||
mrb_value mrb_bint_mod(mrb_state *mrb, mrb_value x, mrb_value y);
|
||||
mrb_value mrb_bint_rem(mrb_state *mrb, mrb_value x, mrb_value y);
|
||||
mrb_value mrb_bint_pow(mrb_state *mrb, mrb_value x, mrb_value y);
|
||||
mrb_value mrb_bint_powm(mrb_state *mrb, mrb_value x, mrb_int y, mrb_value z);
|
||||
mrb_value mrb_bint_and(mrb_state *mrb, mrb_value x, mrb_value y);
|
||||
mrb_value mrb_bint_or(mrb_state *mrb, mrb_value x, mrb_value y);
|
||||
mrb_value mrb_bint_xor(mrb_state *mrb, mrb_value x, mrb_value y);
|
||||
mrb_value mrb_bint_rev(mrb_state *mrb, mrb_value x);
|
||||
mrb_value mrb_bint_lshift(mrb_state *mrb, mrb_value x, mrb_int width);
|
||||
mrb_value mrb_bint_rshift(mrb_state *mrb, mrb_value x, mrb_int width);
|
||||
mrb_value mrb_bint_to_s(mrb_state *mrb, mrb_value x, mrb_int base);
|
||||
#ifndef MRB_NO_FLOAT
|
||||
mrb_float mrb_bint_as_float(mrb_state *mrb, mrb_value x);
|
||||
#endif
|
||||
mrb_int mrb_bint_as_int(mrb_state *mrb, mrb_value x);
|
||||
mrb_int mrb_bint_cmp(mrb_state *mrb, mrb_value x, mrb_value y);
|
||||
void mrb_gc_free_bint(mrb_state *mrb, struct RBasic *x);
|
||||
#endif
|
||||
|
||||
#endif /* MRB_USE_BIGINT */
|
||||
#endif /* MRUBY_BIGINT_H */
|
||||
@@ -3,4 +3,8 @@ MRuby::Gem::Specification.new('mruby-bigint') do |spec|
|
||||
spec.author = 'mruby developers'
|
||||
spec.summary = 'Integer class extension to multiple-precision'
|
||||
spec.build.defines << "MRB_USE_BIGINT"
|
||||
|
||||
spec.build.libmruby_core_objs << Dir.glob(File.join(__dir__, "core/**/*.c")).map { |fn|
|
||||
objfile(fn.relative_path_from(__dir__).pathmap("#{spec.build_dir}/%X"))
|
||||
}
|
||||
end
|
||||
|
||||
@@ -4,8 +4,6 @@
|
||||
#include <mruby/presym.h>
|
||||
|
||||
#ifdef MRB_USE_BIGINT
|
||||
#include <mruby/bigint.h>
|
||||
|
||||
static mrb_value
|
||||
bint_allbits(mrb_state *mrb, mrb_value x, mrb_value y)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user