dec_number 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/dec_number-0.2.0.gem +0 -0
- data/dec_number.gemspec +1 -1
- data/ext/dec_number/bench.rb +8 -8
- data/ext/dec_number/decNumber/Makefile +680 -0
- data/ext/dec_number/decNumber/config.h +143 -0
- data/ext/dec_number/decNumber/config.log +1019 -0
- data/ext/dec_number/decNumber/config.status +2049 -0
- data/ext/dec_number/decNumber/decContext.lo +12 -0
- data/ext/dec_number/decNumber/decContext.o +0 -0
- data/ext/dec_number/decNumber/decNumber.lo +12 -0
- data/ext/dec_number/decNumber/decNumber.o +0 -0
- data/ext/dec_number/decNumber/libdecContext.la +41 -0
- data/ext/dec_number/decNumber/libdecNumber.a +0 -0
- data/ext/dec_number/decNumber/libdecNumber.la +41 -0
- data/ext/dec_number/decNumber/libtool +9239 -0
- data/ext/dec_number/decNumber/stamp-h1 +1 -0
- data/ext/dec_number/dec_number.c +14 -14
- data/ext/dec_number/extconf.rb +8 -2
- metadata +16 -4
@@ -0,0 +1 @@
|
|
1
|
+
timestamp for config.h
|
data/ext/dec_number/dec_number.c
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
#include "decNumber.h"
|
5
5
|
#include <stdio.h>
|
6
6
|
|
7
|
-
|
7
|
+
/* Backwards compat for old rubies */
|
8
8
|
#if !defined(RSTRING_LEN)
|
9
9
|
# define RSTRING_LEN(x) (RSTRING(x)->len)
|
10
10
|
# define RSTRING_PTR(x) (RSTRING(x)->ptr)
|
@@ -80,7 +80,7 @@ static VALUE con_initialize(int argc, VALUE *argv, VALUE self) {
|
|
80
80
|
|
81
81
|
Data_Get_Struct(self, decContext, self_ptr);
|
82
82
|
decContextDefault(self_ptr, DEC_INIT_BASE);
|
83
|
-
self_ptr->traps = 0;
|
83
|
+
self_ptr->traps = 0; /* no traps TODO: error handling */
|
84
84
|
|
85
85
|
if ( NIL_P(digits) ) {
|
86
86
|
self_ptr->digits = DECNUMDIGITS;
|
@@ -88,7 +88,7 @@ static VALUE con_initialize(int argc, VALUE *argv, VALUE self) {
|
|
88
88
|
con_set_digits(self,digits);
|
89
89
|
}
|
90
90
|
|
91
|
-
|
91
|
+
/* TODO: Handle arguments */
|
92
92
|
|
93
93
|
return self;
|
94
94
|
}
|
@@ -161,7 +161,7 @@ static VALUE con_set_emax(VALUE self, VALUE new_value) {
|
|
161
161
|
self_ptr->emax = FIX2INT(new_value);
|
162
162
|
return INT2FIX(self_ptr->emax);
|
163
163
|
}
|
164
|
-
|
164
|
+
/* /DecContext */
|
165
165
|
|
166
166
|
|
167
167
|
/*****
|
@@ -192,7 +192,7 @@ static VALUE num_initialize(int argc, VALUE *argv, VALUE self) {
|
|
192
192
|
Data_Get_Struct(self, decNumber, self_ptr);
|
193
193
|
|
194
194
|
if ( NIL_P(from) ) {
|
195
|
-
|
195
|
+
/* decNumberFromString(dec_num_ptr, "0", &dec_context); */
|
196
196
|
} else {
|
197
197
|
r_str = rb_funcall(from, rb_intern("to_s"), 0);
|
198
198
|
decNumberFromString(self_ptr, StringValuePtr( r_str ), context_ptr);
|
@@ -200,7 +200,7 @@ static VALUE num_initialize(int argc, VALUE *argv, VALUE self) {
|
|
200
200
|
return self;
|
201
201
|
}
|
202
202
|
|
203
|
-
|
203
|
+
/* TODO: does this work? */
|
204
204
|
static VALUE dec_number_from_struct(decNumber source_dec_num) {
|
205
205
|
VALUE new;
|
206
206
|
decNumber *dec_num_ptr;
|
@@ -220,7 +220,7 @@ static VALUE dec_number_from_string(VALUE obj, VALUE from) {
|
|
220
220
|
|
221
221
|
Data_Get_Struct(new, decNumber, dec_num_ptr);
|
222
222
|
if ( decNumberIsNaN( dec_num_ptr ) ) {
|
223
|
-
|
223
|
+
/* FIXME: Just use the sprintf from C, silly */
|
224
224
|
r_str = rb_funcall( from, rb_intern( "to_s" ), 0 );
|
225
225
|
err = rb_funcall( rb_mKernel, rb_intern( "sprintf" ), 2, rb_str_new2("invalid value for DecNumber: %s"), r_str );
|
226
226
|
rb_raise(rb_eArgError, StringValuePtr( err ) );
|
@@ -231,7 +231,7 @@ static VALUE dec_number_from_string(VALUE obj, VALUE from) {
|
|
231
231
|
return ret;
|
232
232
|
}
|
233
233
|
|
234
|
-
|
234
|
+
/* TODO: Not sure if this should this return as a NaN when not a number, or as a 0 like nil.to_i */
|
235
235
|
static VALUE to_dec_number(VALUE obj) {
|
236
236
|
decNumber *dec_num_ptr;
|
237
237
|
VALUE dec_num;
|
@@ -350,7 +350,7 @@ static VALUE num_negate(VALUE self) {
|
|
350
350
|
return new;
|
351
351
|
}
|
352
352
|
|
353
|
-
|
353
|
+
/* needs to check for things like nil and false, etc, not convert everything. Probably only convert numbers. */
|
354
354
|
static VALUE num_compare(VALUE self, VALUE rval) {
|
355
355
|
VALUE ret, result, tmp_obj;
|
356
356
|
int32_t tmp_n, klass;
|
@@ -477,7 +477,7 @@ static VALUE num_divmod(VALUE self, VALUE rval) {
|
|
477
477
|
result_rem = rb_funcall( cDecNumber, rb_intern("new"), 0 ); \
|
478
478
|
Data_Get_Struct(result_rem, decNumber, result_rem_ptr);
|
479
479
|
|
480
|
-
|
480
|
+
/* There might be a more efficient way to get these */
|
481
481
|
decNumberDivideInteger( result_int_ptr, self_ptr, rval_ptr, context_ptr );
|
482
482
|
decNumberRemainder( result_rem_ptr, self_ptr, result_int_ptr, context_ptr);
|
483
483
|
result_ary = rb_ary_new3( 2, result_int, result_rem );
|
@@ -515,7 +515,7 @@ static VALUE num_round(int argc, VALUE *argv, VALUE self) {
|
|
515
515
|
rb_scan_args( argc, argv, "01", &rval );
|
516
516
|
if ( NIL_P( rval ) ) {
|
517
517
|
rval = INT2FIX( 0 );
|
518
|
-
} else {
|
518
|
+
} else { /* probably not necessary */
|
519
519
|
if ( ! rb_obj_is_kind_of( rval, cDecNumber ) ) {
|
520
520
|
rval = rb_funcall( rval, rb_intern("to_i"), 0 );
|
521
521
|
}
|
@@ -553,7 +553,7 @@ void Init_dec_number() {
|
|
553
553
|
DecContext
|
554
554
|
****/
|
555
555
|
|
556
|
-
|
556
|
+
/* *** constants and enums */
|
557
557
|
enum rounding round;
|
558
558
|
VALUE rounding_names, rounding_numbers, round_default_num;
|
559
559
|
cDecContext = rb_define_class("DecContext", rb_cObject);
|
@@ -577,13 +577,13 @@ void Init_dec_number() {
|
|
577
577
|
"up", "ROUND_UP", DEC_ROUND_UP );
|
578
578
|
con_setup_rounding_constant( rounding_names, rounding_numbers,
|
579
579
|
"up05", "ROUND_05UP", DEC_ROUND_05UP );
|
580
|
-
|
580
|
+
/* DEC_ROUND_DEFAULT is a macro with an extra ; so be careful */
|
581
581
|
round = DEC_ROUND_DEFAULT;
|
582
582
|
round_default_num = INT2FIX(round);
|
583
583
|
rb_hash_aset( rounding_numbers, ID2SYM(rb_intern("default")), round_default_num );
|
584
584
|
rb_define_const( cDecContext, "ROUND_DEFAULT", round_default_num );
|
585
585
|
|
586
|
-
|
586
|
+
/* *** methods */
|
587
587
|
rb_define_alloc_func(cDecContext, con_alloc);
|
588
588
|
rb_define_method(cDecContext, "initialize", con_initialize, -1);
|
589
589
|
rb_define_method(cDecContext, "rounding", con_get_rounding, 0);
|
data/ext/dec_number/extconf.rb
CHANGED
@@ -3,7 +3,7 @@ require 'mkmf'
|
|
3
3
|
|
4
4
|
decNumber_dir = './decNumber/'
|
5
5
|
|
6
|
-
if RUBY_VERSION >= "1.9"
|
6
|
+
if RUBY_VERSION >= "1.9" and RUBY_VERSION <= "2.0"
|
7
7
|
begin
|
8
8
|
require "ruby_core_source"
|
9
9
|
rescue LoadError
|
@@ -31,7 +31,13 @@ $defs += ["-I#{decNumber_dir}"]
|
|
31
31
|
dir_config('dec_number', decNumber_dir, decNumber_dir)
|
32
32
|
have_library('decNumber','decNumberVersion','decNumber.h') or raise 'decNumber library not found :('
|
33
33
|
|
34
|
-
if RUBY_VERSION >= "
|
34
|
+
if RUBY_VERSION >= "2.0"
|
35
|
+
$defs.push("-DRUBY20")
|
36
|
+
unless create_makefile('dec_number')
|
37
|
+
STDERR.puts "\n\ncreate_makefile ate your cat2!"
|
38
|
+
exit(1)
|
39
|
+
end
|
40
|
+
elsif RUBY_VERSION >= "1.9"
|
35
41
|
$defs.push("-DRUBY19")
|
36
42
|
hdrs = Proc.new do
|
37
43
|
have_header("vm_core.h")
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dec_number
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-08-25 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Wrapper for ICU-decNumber library
|
15
15
|
email:
|
@@ -26,44 +26,55 @@ files:
|
|
26
26
|
- ext/dec_number/NOTES
|
27
27
|
- ext/dec_number/extconf.rb
|
28
28
|
- ext/dec_number/bench.rb
|
29
|
+
- ext/dec_number/decNumber/decNumber.o
|
29
30
|
- ext/dec_number/decNumber/decimal64.c
|
31
|
+
- ext/dec_number/decNumber/config.log
|
30
32
|
- ext/dec_number/decNumber/config.h.in
|
31
33
|
- ext/dec_number/decNumber/Makefile.am
|
32
34
|
- ext/dec_number/decNumber/decPacked.h
|
33
35
|
- ext/dec_number/decNumber/config.guess
|
36
|
+
- ext/dec_number/decNumber/stamp-h1
|
34
37
|
- ext/dec_number/decNumber/example6.c
|
35
38
|
- ext/dec_number/decNumber/configure.ac
|
36
39
|
- ext/dec_number/decNumber/decDouble.c
|
37
40
|
- ext/dec_number/decNumber/decQuad.c
|
38
41
|
- ext/dec_number/decNumber/decimal64.h
|
39
42
|
- ext/dec_number/decNumber/decNumberLocal.h
|
43
|
+
- ext/dec_number/decNumber/config.h
|
44
|
+
- ext/dec_number/decNumber/Makefile
|
40
45
|
- ext/dec_number/decNumber/decNumber.c
|
41
46
|
- ext/dec_number/decNumber/libdecNumber.a
|
42
47
|
- ext/dec_number/decNumber/example2.c
|
43
48
|
- ext/dec_number/decNumber/install-sh
|
49
|
+
- ext/dec_number/decNumber/libdecNumber.la
|
44
50
|
- ext/dec_number/decNumber/decimal32.c
|
45
51
|
- ext/dec_number/decNumber/example1.c
|
46
52
|
- ext/dec_number/decNumber/depcomp
|
47
53
|
- ext/dec_number/decNumber/decPacked.c
|
48
54
|
- ext/dec_number/decNumber/decDPD.h
|
49
55
|
- ext/dec_number/decNumber/config.sub
|
56
|
+
- ext/dec_number/decNumber/libdecContext.la
|
50
57
|
- ext/dec_number/decNumber/example3.c
|
51
58
|
- ext/dec_number/decNumber/decimal32.h
|
52
59
|
- ext/dec_number/decNumber/example4.c
|
53
60
|
- ext/dec_number/decNumber/example8.c
|
54
61
|
- ext/dec_number/decNumber/Makefile.in
|
62
|
+
- ext/dec_number/decNumber/libtool
|
55
63
|
- ext/dec_number/decNumber/ltmain.sh
|
56
64
|
- ext/dec_number/decNumber/example7.c
|
57
65
|
- ext/dec_number/decNumber/configure
|
58
66
|
- ext/dec_number/decNumber/readme.txt
|
59
67
|
- ext/dec_number/decNumber/decSingle.c
|
60
68
|
- ext/dec_number/decNumber/aclocal.m4
|
69
|
+
- ext/dec_number/decNumber/config.status
|
61
70
|
- ext/dec_number/decNumber/decQuad.h
|
62
71
|
- ext/dec_number/decNumber/decDouble.h
|
63
72
|
- ext/dec_number/decNumber/decContext.h
|
73
|
+
- ext/dec_number/decNumber/decContext.o
|
64
74
|
- ext/dec_number/decNumber/decBasic.c
|
65
75
|
- ext/dec_number/decNumber/decimal128.h
|
66
76
|
- ext/dec_number/decNumber/decContext.c
|
77
|
+
- ext/dec_number/decNumber/decNumber.lo
|
67
78
|
- ext/dec_number/decNumber/ICU-license.html
|
68
79
|
- ext/dec_number/decNumber/decnumber.pdf
|
69
80
|
- ext/dec_number/decNumber/autom4te.cache/output.1
|
@@ -78,6 +89,7 @@ files:
|
|
78
89
|
- ext/dec_number/decNumber/decNumber.h
|
79
90
|
- ext/dec_number/decNumber/missing
|
80
91
|
- ext/dec_number/decNumber/example5.c
|
92
|
+
- ext/dec_number/decNumber/decContext.lo
|
81
93
|
- ext/dec_number/decNumber/decSingle.h
|
82
94
|
- ext/dec_number/decNumber/decCommon.c
|
83
95
|
- ext/dec_number/decNumber/decimal128.c
|
@@ -87,6 +99,7 @@ files:
|
|
87
99
|
- dec_number.gemspec
|
88
100
|
- Gemfile
|
89
101
|
- README
|
102
|
+
- dec_number-0.2.0.gem
|
90
103
|
- .gemtest
|
91
104
|
homepage: http://github.com/rubypanther/dec_number
|
92
105
|
licenses: []
|
@@ -108,10 +121,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
108
121
|
version: '0'
|
109
122
|
requirements: []
|
110
123
|
rubyforge_project: dec-number
|
111
|
-
rubygems_version: 1.8.
|
124
|
+
rubygems_version: 1.8.24
|
112
125
|
signing_key:
|
113
126
|
specification_version: 3
|
114
127
|
summary: ICU-decNumber wrapper for arbitrary precision math with context objects
|
115
128
|
test_files:
|
116
129
|
- test/test_dec_number.rb
|
117
|
-
has_rdoc:
|