rice 1.5.3 → 1.6.0.pre

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1fade81ed5022f898e556d016667ce935181a446
4
+ data.tar.gz: f95a76367b0d6062b0521073bdcecc44e40be2c9
5
+ SHA512:
6
+ metadata.gz: 3baabdf3094320d857599b3ed2b09015e3ac0ab1b9851f6f1a2c1a5b9f81d65d0c307661db97a8b67a14c40e5f6037140fa08ca648f65175e68d1a978af83570
7
+ data.tar.gz: 6496d5a96365b6cdbac504001c01f9093ade6d6023595eb52c22f5739980720748e14dd5595d28ea2593d3f4ab46a616a90c971b3b0ad2c3685786bdf71c0e5c
data/Doxyfile CHANGED
@@ -38,7 +38,7 @@ PROJECT_NAME = "Rice"
38
38
  # could be handy for archiving the generated documentation or if some version
39
39
  # control system is used.
40
40
 
41
- PROJECT_NUMBER = 1.5.3
41
+ PROJECT_NUMBER = 1.6.0
42
42
 
43
43
  # Using the PROJECT_BRIEF tag one can provide an optional one line description
44
44
  # for a project that appears at the top of each page and should give viewer a
data/Makefile.in CHANGED
@@ -1,4 +1,4 @@
1
- # Makefile.in generated by automake 1.14 from Makefile.am.
1
+ # Makefile.in generated by automake 1.14.1 from Makefile.am.
2
2
  # @configure_input@
3
3
 
4
4
  # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -672,9 +672,10 @@ distcheck: dist
672
672
  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
673
673
  && am__cwd=`pwd` \
674
674
  && $(am__cd) "$(distdir)"/_build \
675
- && ../configure --srcdir=.. --prefix="$$dc_install_base" \
675
+ && ../configure \
676
676
  $(AM_DISTCHECK_CONFIGURE_FLAGS) \
677
677
  $(DISTCHECK_CONFIGURE_FLAGS) \
678
+ --srcdir=.. --prefix="$$dc_install_base" \
678
679
  && $(MAKE) $(AM_MAKEFLAGS) \
679
680
  && $(MAKE) $(AM_MAKEFLAGS) dvi \
680
681
  && $(MAKE) $(AM_MAKEFLAGS) check \
data/aclocal.m4 CHANGED
@@ -1,4 +1,4 @@
1
- # generated automatically by aclocal 1.14 -*- Autoconf -*-
1
+ # generated automatically by aclocal 1.14.1 -*- Autoconf -*-
2
2
 
3
3
  # Copyright (C) 1996-2013 Free Software Foundation, Inc.
4
4
 
@@ -35,7 +35,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
35
35
  [am__api_version='1.14'
36
36
  dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
37
37
  dnl require some minimum version. Point them to the right macro.
38
- m4_if([$1], [1.14], [],
38
+ m4_if([$1], [1.14.1], [],
39
39
  [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
40
40
  ])
41
41
 
@@ -51,7 +51,7 @@ m4_define([_AM_AUTOCONF_VERSION], [])
51
51
  # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
52
52
  # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
53
53
  AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
54
- [AM_AUTOMAKE_VERSION([1.14])dnl
54
+ [AM_AUTOMAKE_VERSION([1.14.1])dnl
55
55
  m4_ifndef([AC_AUTOCONF_VERSION],
56
56
  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
57
57
  _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
data/rice/Exception.cpp CHANGED
@@ -54,6 +54,6 @@ char const * Rice::Exception::
54
54
  what() const throw()
55
55
  {
56
56
  message_ = message();
57
- return from_ruby<char const *>(message_);
57
+ return from_ruby<std::string>(message_).c_str();
58
58
  }
59
59
 
data/rice/Makefile.in CHANGED
@@ -1,4 +1,4 @@
1
- # Makefile.in generated by automake 1.14 from Makefile.am.
1
+ # Makefile.in generated by automake 1.14.1 from Makefile.am.
2
2
  # @configure_input@
3
3
 
4
4
  # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -8,67 +8,49 @@
8
8
  #undef PACKAGE_VERSION
9
9
  #include "../config.hpp"
10
10
 
11
- #ifndef RUBY_VM
12
- /* pre-YARV */
13
- #include <node.h>
14
- #include "env.hpp"
15
- #endif
16
-
17
11
  /* 1.8.6 compatibility */
18
12
  #ifndef RCLASS_M_TBL
19
13
  #define RCLASS_M_TBL(x) (RCLASS(x)->m_tbl)
20
14
  #endif
21
15
 
22
- namespace
23
- {
24
16
 
25
- VALUE DATA_MAGIC = rb_fix_new(0xDA7A);
17
+ #ifndef RUBY_VM
18
+ /* pre-YARV */
19
+ #include <node.h>
20
+ #include "env.hpp"
26
21
 
27
- } // namespace
22
+ namespace {
23
+ int rb_frame_method_id_and_class(ID *idp, VALUE *klassp) {
24
+ *klassp = ruby_frame->last_class;
25
+ *idp = ruby_frame->last_func;
26
+ return 1;
27
+ }
28
+ }
29
+ #endif
28
30
 
29
- #ifdef RUBY_VM
31
+ #define RICE_ID rb_intern("__rice__")
30
32
 
31
33
  VALUE
32
34
  Rice::detail::
33
35
  method_data()
34
36
  {
35
37
  ID id;
36
- VALUE origin;
37
- if (!rb_frame_method_id_and_class(&id, &origin))
38
+ VALUE klass;
39
+ if (!rb_frame_method_id_and_class(&id, &klass))
38
40
  {
39
41
  rb_raise(
40
42
  rb_eRuntimeError,
41
43
  "Cannot get method id and class for function");
42
44
  }
43
45
 
44
- VALUE memo = rb_ivar_get(origin, 0);
45
-
46
- if(rb_type(memo) != T_ARRAY && RARRAY_PTR(memo)[0] != DATA_MAGIC)
47
- {
48
- /* This can happen for module functions that are created after
49
- * the stub function */
50
- rb_raise(
51
- rb_eRuntimeError,
52
- "Cannot find method data for module function");
46
+ if (rb_type(klass) == T_ICLASS) {
47
+ klass = rb_class_of(klass);
53
48
  }
54
49
 
55
- return RARRAY_PTR(memo)[1];
50
+ VALUE store = rb_ivar_get(klass, RICE_ID);
51
+ return (store == Qnil) ? Qnil : rb_ivar_get(store, id);
56
52
  }
57
53
 
58
- #else
59
-
60
- /* pre-YARV */
61
-
62
- VALUE
63
- Rice::detail::
64
- method_data()
65
- {
66
- VALUE origin = ruby_frame->last_class;
67
- VALUE memo = rb_ivar_get(origin, 0);
68
- return RARRAY_PTR(memo)[1];
69
- }
70
-
71
- #endif
72
54
 
73
55
  // Define a method and attach data to it.
74
56
  // The method looks to ruby like a normal aliased CFUNC, with a modified
@@ -85,75 +67,40 @@ method_data()
85
67
  // version to ruby version, but the concept is the same across all of
86
68
  // them.
87
69
  //
88
- // In Rice, we make use of this by defining a method on a dummy class,
89
- // then attaching that method to our real class. The method is a real
90
- // method in our class, but its origin class is our dummy class.
70
+ // In Rice, we make use of this by attach the data to a dummy object
71
+ // (store) in the class variables table.
91
72
  //
92
- // When Ruby makes a method call, it stores the origin class in the
93
- // current stack frame. When Ruby calls into Rice, we grab the origin
94
- // class from the stack frame, then pull the data out of the origin
95
- // class. The data item is then used to determine how to convert
73
+ // When Ruby makes a method call, it stores the class Object and method
74
+ // ID in the current stack frame. When Ruby calls into Rice, we grab
75
+ // the class and method ID from the stack frame, then pull the data out
76
+ // of the class. The data item is then used to determine how to convert
96
77
  // arguments and return type, how to handle exceptions, etc.
97
78
  //
98
- // It used to be the case that Rice would "fix" the call frame so that
99
- // the modified origin class was not visible to the called function (it
100
- // would appear to the callee that the origin class was the same as the
101
- // class it was defined on). However, this required modifying the call
102
- // frame directly, and the layout of that frame varies from version to
103
- // version. To keep things simple (and as a side effect improve
104
- // performance), Rice no longer hides the modified origin class this way.
105
- //
106
- // Functions that make use of "last_class" (1.8) or
107
- // "rb_frame_method_id_and_class" (1.9) will therefore not get the
108
- // results they expect.
109
79
  VALUE
110
80
  Rice::detail::
111
81
  define_method_with_data(
112
82
  VALUE klass, ID id, VALUE (*cfunc)(ANYARGS), int arity, VALUE data)
113
83
  {
114
- VALUE origin = rb_class_boot(klass);
115
-
116
- // Create the memo object with a magic number so we can detect if
117
- // we're getting the origin class we expect (this can happen if the
118
- // module_function method is called on a Rice function on ruby 1.9).
119
- VALUE memo = rb_assoc_new(DATA_MAGIC, data);
120
-
121
- // Set the class name of our modified origin class to something
122
- // obvious in case someone tries to inspect it.
123
- VALUE real_class_name = rb_class_name(klass);
124
- VALUE origin_class_name = rb_str_plus(
125
- real_class_name,
126
- rb_str_new2("<data wrapper>"));
127
-
128
- // Create the modified origin class
129
- FL_SET(origin, FL_SINGLETON);
130
- rb_singleton_class_attached(origin, klass);
131
- rb_name_class(origin, SYM2ID(rb_str_intern(origin_class_name)));
84
+ VALUE store = rb_attr_get(klass, RICE_ID);
85
+
86
+ if (store == Qnil) {
87
+ store = rb_obj_alloc(rb_cObject);
88
+ // store is stored in the instance variables table with
89
+ // name "__rice__".
90
+ // since "__rice__" does not have the @ prefix,
91
+ // so it can never be read at the Ruby level.
92
+ rb_ivar_set(klass, RICE_ID, store);
93
+ }
132
94
 
133
- // Attach our "memo" to the origin class
134
- rb_ivar_set(origin, 0, memo);
95
+ rb_ivar_set(store, id, data);
135
96
 
136
97
  // Create the aliased method on the origin class
137
98
  rb_define_method(
138
- origin,
99
+ klass,
139
100
  rb_id2name(id),
140
101
  cfunc,
141
102
  arity);
142
103
 
143
- // Alias the method in the origin class so we can copy it to another
144
- // class with the origin class intact as part of the method entry
145
- rb_alias(
146
- origin,
147
- rb_intern("dummy"),
148
- id);
149
-
150
- // Copy the method entry to the real class
151
- st_data_t dummy_entry;
152
- st_lookup(RCLASS_M_TBL(origin), rb_intern("dummy"), &dummy_entry);
153
- st_insert(RCLASS_M_TBL(klass), id, dummy_entry);
154
-
155
- // Clear the table so we don't try to double-free the method entry
156
- RCLASS_M_TBL(origin) = st_init_numtable();
157
-
158
104
  return Qnil;
159
105
  }
106
+
@@ -1,6 +1,6 @@
1
1
  #ifndef Rice__detail__ruby_version_code__hpp
2
2
  #define Rice__detail__ruby_version_code__hpp
3
3
 
4
- #define RICE__RUBY_VERSION_CODE 200
4
+ #define RICE__RUBY_VERSION_CODE 193
5
5
 
6
6
  #endif // Rice__detail__ruby_version_code__hpp
@@ -39,7 +39,7 @@ template<>
39
39
  inline
40
40
  int from_ruby<int>(Rice::Object x)
41
41
  {
42
- return Rice::protect(Rice::detail::num2int, x);
42
+ return Rice::detail::num2int(x);
43
43
  }
44
44
 
45
45
  template<>
@@ -101,7 +101,7 @@ template<>
101
101
  inline
102
102
  unsigned int from_ruby<unsigned int>(Rice::Object x)
103
103
  {
104
- return Rice::protect(Rice::detail::num2uint, x);
104
+ return Rice::detail::num2uint(x);
105
105
  }
106
106
 
107
107
  template<>
data/ruby/Makefile.in CHANGED
@@ -1,4 +1,4 @@
1
- # Makefile.in generated by automake 1.14 from Makefile.am.
1
+ # Makefile.in generated by automake 1.14.1 from Makefile.am.
2
2
  # @configure_input@
3
3
 
4
4
  # Copyright (C) 1994-2013 Free Software Foundation, Inc.
data/ruby/lib/Makefile.in CHANGED
@@ -1,4 +1,4 @@
1
- # Makefile.in generated by automake 1.14 from Makefile.am.
1
+ # Makefile.in generated by automake 1.14.1 from Makefile.am.
2
2
  # @configure_input@
3
3
 
4
4
  # Copyright (C) 1994-2013 Free Software Foundation, Inc.
data/ruby/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Rice
2
- VERSION = "1.5.3"
2
+ VERSION = "1.6.0.pre"
3
3
  end
data/sample/Makefile.in CHANGED
@@ -1,4 +1,4 @@
1
- # Makefile.in generated by automake 1.14 from Makefile.am.
1
+ # Makefile.in generated by automake 1.14.1 from Makefile.am.
2
2
  # @configure_input@
3
3
 
4
4
  # Copyright (C) 1994-2013 Free Software Foundation, Inc.
data/test/Makefile.in CHANGED
@@ -1,4 +1,4 @@
1
- # Makefile.in generated by automake 1.14 from Makefile.am.
1
+ # Makefile.in generated by automake 1.14.1 from Makefile.am.
2
2
  # @configure_input@
3
3
 
4
4
  # Copyright (C) 1994-2013 Free Software Foundation, Inc.
data/test/ext/Makefile.in CHANGED
@@ -1,4 +1,4 @@
1
- # Makefile.in generated by automake 1.14 from Makefile.am.
1
+ # Makefile.in generated by automake 1.14.1 from Makefile.am.
2
2
  # @configure_input@
3
3
 
4
4
  # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -46,7 +46,7 @@ namespace {
46
46
 
47
47
  int process() {
48
48
  std::vector<Listener*>::iterator i = mListeners.begin();
49
- int accum = 0;
49
+ int accum = 0;
50
50
  for(; i != mListeners.end(); i++) {
51
51
  accum += (*i)->getValue();
52
52
  }
@@ -54,7 +54,7 @@ namespace {
54
54
  return accum;
55
55
  }
56
56
 
57
- int listenerCount() { return mListeners.size(); }
57
+ size_t listenerCount() { return mListeners.size(); }
58
58
 
59
59
  private:
60
60
  std::vector<Listener*> mListeners;
@@ -100,7 +100,7 @@ TESTCASE(can_send_ruby_instance_back_into_rice)
100
100
  * The following test SEGFAULTs right now
101
101
  */
102
102
  /*
103
- TESTCASE(no_super_in_constructor_still_works)
103
+ TESTCASE(no_super_in_constructor_still_works)
104
104
  {
105
105
  Module m = define_module("TestingModule");
106
106
  Object handler = m.instance_eval("@handler = ListenerHandler.new");
@@ -127,14 +127,14 @@ TESTCASE(no_super_in_constructor_still_works)
127
127
  * Two ways of defining if types are implicitly castable
128
128
  *
129
129
  * 1) operator
130
- * 2) constructor
130
+ * 2) constructor
131
131
  */
132
132
 
133
133
  /**
134
134
  * Examples here taken from Ogre's Math library.
135
135
  * This uses the constructor method of casting types.
136
136
  */
137
- namespace
137
+ namespace
138
138
  {
139
139
  const int degree2Radians = (3.14 / 180.0);
140
140
  const int radian2Degrees = (180.0 / 3.14);
@@ -157,7 +157,7 @@ namespace
157
157
  class Radian
158
158
  {
159
159
  public:
160
- explicit Radian(float r) : val_(r) {}
160
+ explicit Radian(float r) : val_(r) {}
161
161
  Radian(const Degree& d) : val_(d.valueRadians()) {}
162
162
 
163
163
  float valueRadians() const { return val_; }
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rice
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.3
5
- prerelease:
4
+ version: 1.6.0.pre
6
5
  platform: ruby
7
6
  authors:
8
7
  - Paul Brannan
@@ -10,20 +9,14 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2013-10-14 00:00:00.000000000 Z
12
+ date: 2014-01-31 00:00:00.000000000 Z
14
13
  dependencies: []
15
- description: ! 'Rice is a C++ interface to Ruby''s C API. It provides a type-safe
16
- and
17
-
14
+ description: |
15
+ Rice is a C++ interface to Ruby's C API. It provides a type-safe and
18
16
  exception-safe interface in order to make embedding Ruby and writing
19
-
20
17
  Ruby extensions with C++ easier. It is similar to Boost.Python in many
21
-
22
18
  ways, but also attempts to provide an object-oriented interface to all
23
-
24
19
  of the Ruby C API.
25
-
26
- '
27
20
  email:
28
21
  - curlypaul924@gmail.com
29
22
  - jasonroelofs@gmail.com
@@ -235,27 +228,26 @@ files:
235
228
  - test/test_rice.rb
236
229
  homepage: http://rice.rubyforge.org/
237
230
  licenses: []
231
+ metadata: {}
238
232
  post_install_message:
239
233
  rdoc_options: []
240
234
  require_paths:
241
235
  - ruby/lib
242
236
  required_ruby_version: !ruby/object:Gem::Requirement
243
- none: false
244
237
  requirements:
245
- - - ! '>='
238
+ - - '>='
246
239
  - !ruby/object:Gem::Version
247
240
  version: '0'
248
241
  required_rubygems_version: !ruby/object:Gem::Requirement
249
- none: false
250
242
  requirements:
251
- - - ! '>='
243
+ - - '>'
252
244
  - !ruby/object:Gem::Version
253
- version: '0'
245
+ version: 1.3.1
254
246
  requirements: []
255
247
  rubyforge_project: rice
256
- rubygems_version: 1.8.25
248
+ rubygems_version: 2.0.14
257
249
  signing_key:
258
- specification_version: 3
250
+ specification_version: 4
259
251
  summary: Ruby Interface for C++ Extensions
260
252
  test_files:
261
253
  - test/test_rice.rb