rice 3.0.0 → 4.0.0

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.
Files changed (237) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +121 -0
  3. data/CONTRIBUTORS.md +19 -0
  4. data/Gemfile +3 -0
  5. data/README.md +44 -1025
  6. data/Rakefile +95 -12
  7. data/include/rice/rice.hpp +7766 -0
  8. data/lib/mkmf-rice.rb +127 -0
  9. data/lib/version.rb +3 -0
  10. data/rice/Address_Registration_Guard.ipp +75 -32
  11. data/rice/Address_Registration_Guard_defn.hpp +60 -56
  12. data/rice/Arg.hpp +80 -4
  13. data/rice/Arg.ipp +51 -0
  14. data/rice/Constructor.hpp +12 -14
  15. data/rice/Data_Object.ipp +234 -107
  16. data/rice/Data_Object_defn.hpp +77 -117
  17. data/rice/Data_Type.hpp +1 -2
  18. data/rice/Data_Type.ipp +251 -295
  19. data/rice/Data_Type_defn.hpp +175 -243
  20. data/rice/Director.hpp +11 -6
  21. data/rice/Enum.hpp +54 -104
  22. data/rice/Enum.ipp +104 -230
  23. data/rice/Exception.hpp +2 -8
  24. data/rice/Exception.ipp +65 -0
  25. data/rice/Exception_defn.hpp +46 -47
  26. data/rice/Identifier.hpp +28 -28
  27. data/rice/Identifier.ipp +23 -27
  28. data/rice/Return.hpp +39 -0
  29. data/rice/Return.ipp +33 -0
  30. data/rice/detail/Exception_Handler.ipp +22 -62
  31. data/rice/detail/Exception_Handler_defn.hpp +76 -91
  32. data/rice/detail/Iterator.hpp +18 -88
  33. data/rice/detail/Iterator.ipp +47 -0
  34. data/rice/detail/Jump_Tag.hpp +21 -0
  35. data/rice/detail/MethodInfo.hpp +44 -0
  36. data/rice/detail/MethodInfo.ipp +78 -0
  37. data/rice/detail/NativeAttribute.hpp +53 -0
  38. data/rice/detail/NativeAttribute.ipp +83 -0
  39. data/rice/detail/NativeFunction.hpp +69 -0
  40. data/rice/detail/NativeFunction.ipp +248 -0
  41. data/rice/detail/RubyFunction.hpp +39 -0
  42. data/rice/detail/RubyFunction.ipp +92 -0
  43. data/rice/detail/Type.hpp +29 -0
  44. data/rice/detail/Type.ipp +138 -0
  45. data/rice/detail/TypeRegistry.hpp +50 -0
  46. data/rice/detail/TypeRegistry.ipp +106 -0
  47. data/rice/detail/Wrapper.hpp +51 -0
  48. data/rice/detail/Wrapper.ipp +151 -0
  49. data/rice/detail/default_allocation_func.hpp +8 -19
  50. data/rice/detail/default_allocation_func.ipp +9 -8
  51. data/rice/detail/from_ruby.hpp +2 -37
  52. data/rice/detail/from_ruby.ipp +1020 -46
  53. data/rice/detail/from_ruby_defn.hpp +38 -0
  54. data/rice/detail/function_traits.hpp +124 -0
  55. data/rice/detail/method_data.hpp +23 -15
  56. data/rice/detail/method_data.ipp +53 -0
  57. data/rice/detail/rice_traits.hpp +116 -0
  58. data/rice/detail/ruby.hpp +9 -46
  59. data/rice/detail/to_ruby.hpp +3 -17
  60. data/rice/detail/to_ruby.ipp +409 -31
  61. data/rice/detail/to_ruby_defn.hpp +48 -0
  62. data/rice/forward_declares.ipp +82 -0
  63. data/rice/global_function.hpp +16 -20
  64. data/rice/global_function.ipp +8 -17
  65. data/rice/rice.hpp +59 -0
  66. data/rice/ruby_mark.hpp +5 -3
  67. data/rice/ruby_try_catch.hpp +4 -4
  68. data/rice/stl.hpp +11 -0
  69. data/sample/callbacks/extconf.rb +3 -0
  70. data/sample/callbacks/sample_callbacks.cpp +10 -13
  71. data/sample/enum/extconf.rb +3 -0
  72. data/sample/enum/sample_enum.cpp +3 -17
  73. data/sample/enum/test.rb +2 -2
  74. data/sample/inheritance/animals.cpp +8 -24
  75. data/sample/inheritance/extconf.rb +3 -0
  76. data/sample/inheritance/test.rb +1 -1
  77. data/sample/map/extconf.rb +3 -0
  78. data/sample/map/map.cpp +10 -18
  79. data/sample/map/test.rb +1 -1
  80. data/test/embed_ruby.cpp +18 -5
  81. data/test/ext/t1/extconf.rb +3 -0
  82. data/test/ext/t1/t1.cpp +1 -3
  83. data/test/ext/t2/extconf.rb +3 -0
  84. data/test/ext/t2/t2.cpp +1 -1
  85. data/test/extconf.rb +23 -0
  86. data/test/ruby/test_callbacks_sample.rb +28 -0
  87. data/test/ruby/test_multiple_extensions.rb +18 -0
  88. data/test/ruby/test_multiple_extensions_same_class.rb +14 -0
  89. data/test/ruby/test_multiple_extensions_with_inheritance.rb +20 -0
  90. data/test/test_Address_Registration_Guard.cpp +23 -10
  91. data/test/test_Array.cpp +129 -73
  92. data/test/test_Attribute.cpp +147 -0
  93. data/test/test_Builtin_Object.cpp +34 -14
  94. data/test/test_Class.cpp +149 -275
  95. data/test/test_Constructor.cpp +10 -9
  96. data/test/test_Data_Object.cpp +133 -192
  97. data/test/test_Data_Type.cpp +322 -252
  98. data/test/test_Director.cpp +54 -41
  99. data/test/test_Enum.cpp +228 -103
  100. data/test/test_Exception.cpp +5 -6
  101. data/test/test_Hash.cpp +31 -30
  102. data/test/test_Identifier.cpp +4 -5
  103. data/test/test_Inheritance.cpp +221 -0
  104. data/test/test_Iterator.cpp +161 -0
  105. data/test/test_Jump_Tag.cpp +1 -1
  106. data/test/test_Keep_Alive.cpp +161 -0
  107. data/test/test_Memory_Management.cpp +2 -4
  108. data/test/test_Module.cpp +167 -110
  109. data/test/test_Object.cpp +41 -21
  110. data/test/test_Ownership.cpp +275 -0
  111. data/test/test_Self.cpp +205 -0
  112. data/test/test_Stl_Optional.cpp +90 -0
  113. data/test/test_Stl_Pair.cpp +144 -0
  114. data/test/test_Stl_SmartPointer.cpp +200 -0
  115. data/test/test_Stl_String.cpp +74 -0
  116. data/test/test_Stl_Vector.cpp +652 -0
  117. data/test/test_String.cpp +1 -2
  118. data/test/test_Struct.cpp +29 -39
  119. data/test/test_Symbol.cpp +1 -2
  120. data/test/test_To_From_Ruby.cpp +249 -285
  121. data/test/test_global_functions.cpp +39 -19
  122. data/test/unittest.hpp +0 -4
  123. metadata +63 -139
  124. data/Doxyfile +0 -2268
  125. data/Makefile.am +0 -26
  126. data/Makefile.in +0 -931
  127. data/README.mingw +0 -8
  128. data/aclocal.m4 +0 -1085
  129. data/ax_cxx_compile_stdcxx.m4 +0 -951
  130. data/bootstrap +0 -8
  131. data/config.guess +0 -1421
  132. data/config.sub +0 -1807
  133. data/configure +0 -7792
  134. data/configure.ac +0 -55
  135. data/depcomp +0 -791
  136. data/doxygen.ac +0 -314
  137. data/doxygen.am +0 -186
  138. data/extconf.rb +0 -70
  139. data/install-sh +0 -501
  140. data/missing +0 -215
  141. data/post-autoconf.rb +0 -22
  142. data/post-automake.rb +0 -28
  143. data/rice/Address_Registration_Guard.cpp +0 -22
  144. data/rice/Arg_impl.hpp +0 -129
  145. data/rice/Arg_operators.cpp +0 -21
  146. data/rice/Arg_operators.hpp +0 -19
  147. data/rice/Array.hpp +0 -214
  148. data/rice/Array.ipp +0 -256
  149. data/rice/Builtin_Object.hpp +0 -8
  150. data/rice/Builtin_Object.ipp +0 -50
  151. data/rice/Builtin_Object_defn.hpp +0 -50
  152. data/rice/Class.cpp +0 -57
  153. data/rice/Class.hpp +0 -8
  154. data/rice/Class.ipp +0 -6
  155. data/rice/Class_defn.hpp +0 -84
  156. data/rice/Data_Type.cpp +0 -54
  157. data/rice/Data_Type_fwd.hpp +0 -12
  158. data/rice/Director.cpp +0 -13
  159. data/rice/Exception.cpp +0 -54
  160. data/rice/Exception_Base.hpp +0 -8
  161. data/rice/Exception_Base.ipp +0 -13
  162. data/rice/Exception_Base_defn.hpp +0 -27
  163. data/rice/Hash.hpp +0 -230
  164. data/rice/Hash.ipp +0 -329
  165. data/rice/Identifier.cpp +0 -8
  166. data/rice/Jump_Tag.hpp +0 -24
  167. data/rice/Makefile.am +0 -121
  168. data/rice/Makefile.in +0 -884
  169. data/rice/Module.cpp +0 -84
  170. data/rice/Module.hpp +0 -8
  171. data/rice/Module.ipp +0 -6
  172. data/rice/Module_defn.hpp +0 -88
  173. data/rice/Module_impl.hpp +0 -281
  174. data/rice/Module_impl.ipp +0 -345
  175. data/rice/Object.cpp +0 -169
  176. data/rice/Object.hpp +0 -8
  177. data/rice/Object.ipp +0 -33
  178. data/rice/Object_defn.hpp +0 -214
  179. data/rice/Require_Guard.hpp +0 -21
  180. data/rice/String.cpp +0 -89
  181. data/rice/String.hpp +0 -91
  182. data/rice/Struct.cpp +0 -117
  183. data/rice/Struct.hpp +0 -162
  184. data/rice/Struct.ipp +0 -26
  185. data/rice/Symbol.cpp +0 -25
  186. data/rice/Symbol.hpp +0 -66
  187. data/rice/Symbol.ipp +0 -44
  188. data/rice/config.hpp +0 -47
  189. data/rice/config.hpp.in +0 -46
  190. data/rice/detail/Arguments.hpp +0 -118
  191. data/rice/detail/Auto_Function_Wrapper.hpp +0 -898
  192. data/rice/detail/Auto_Function_Wrapper.ipp +0 -3181
  193. data/rice/detail/Auto_Member_Function_Wrapper.hpp +0 -897
  194. data/rice/detail/Auto_Member_Function_Wrapper.ipp +0 -2501
  195. data/rice/detail/Caster.hpp +0 -103
  196. data/rice/detail/Not_Copyable.hpp +0 -25
  197. data/rice/detail/Wrapped_Function.hpp +0 -33
  198. data/rice/detail/cfp.hpp +0 -24
  199. data/rice/detail/cfp.ipp +0 -51
  200. data/rice/detail/check_ruby_type.cpp +0 -27
  201. data/rice/detail/check_ruby_type.hpp +0 -23
  202. data/rice/detail/creation_funcs.hpp +0 -37
  203. data/rice/detail/creation_funcs.ipp +0 -36
  204. data/rice/detail/define_method_and_auto_wrap.hpp +0 -31
  205. data/rice/detail/define_method_and_auto_wrap.ipp +0 -30
  206. data/rice/detail/demangle.cpp +0 -56
  207. data/rice/detail/demangle.hpp +0 -19
  208. data/rice/detail/env.hpp +0 -11
  209. data/rice/detail/method_data.cpp +0 -92
  210. data/rice/detail/node.hpp +0 -13
  211. data/rice/detail/protect.cpp +0 -29
  212. data/rice/detail/protect.hpp +0 -34
  213. data/rice/detail/ruby_version_code.hpp +0 -6
  214. data/rice/detail/ruby_version_code.hpp.in +0 -6
  215. data/rice/detail/st.hpp +0 -22
  216. data/rice/detail/win32.hpp +0 -16
  217. data/rice/detail/wrap_function.hpp +0 -66
  218. data/rice/protect.hpp +0 -38
  219. data/rice/protect.ipp +0 -1134
  220. data/rice/rubypp.rb +0 -97
  221. data/rice/to_from_ruby.hpp +0 -8
  222. data/rice/to_from_ruby.ipp +0 -418
  223. data/rice/to_from_ruby_defn.hpp +0 -70
  224. data/ruby.ac +0 -135
  225. data/ruby/Makefile.am +0 -1
  226. data/ruby/Makefile.in +0 -628
  227. data/ruby/lib/Makefile.am +0 -3
  228. data/ruby/lib/Makefile.in +0 -506
  229. data/ruby/lib/mkmf-rice.rb.in +0 -217
  230. data/ruby/lib/version.rb +0 -3
  231. data/sample/Makefile.am +0 -53
  232. data/sample/Makefile.in +0 -495
  233. data/test/Makefile.am +0 -73
  234. data/test/Makefile.in +0 -1219
  235. data/test/ext/Makefile.am +0 -41
  236. data/test/ext/Makefile.in +0 -483
  237. data/test/test_rice.rb +0 -45
data/rice/Struct.cpp DELETED
@@ -1,117 +0,0 @@
1
- #include "Struct.hpp"
2
- #include "Symbol.hpp"
3
-
4
- #include <stdexcept>
5
-
6
- Rice::Struct::
7
- Struct()
8
- : Module_impl<Class, Struct>(rb_cObject)
9
- , members_()
10
- , members_guard_(&members_)
11
- , member_offset_()
12
- , member_offset_guard_(&member_offset_)
13
- {
14
- }
15
-
16
- Rice::Struct::
17
- Struct(Rice::Struct const & s)
18
- : Module_impl<Class, Struct>(s)
19
- , members_(s.members_.value())
20
- , members_guard_(&members_)
21
- , member_offset_(s.member_offset_.value())
22
- , member_offset_guard_(&member_offset_)
23
- {
24
- }
25
-
26
- Rice::Struct::
27
- ~Struct()
28
- {
29
- }
30
-
31
- Rice::Struct & Rice::Struct::
32
- initialize(
33
- Module module,
34
- Identifier name)
35
- {
36
- Class struct_class(rb_cStruct);
37
- Object type = struct_class.vcall("new", members_);
38
-
39
- set_value(type);
40
- module.const_set(name, type);
41
-
42
- return *this;
43
- }
44
-
45
- Rice::Struct & Rice::Struct::
46
- define_member(
47
- Identifier name)
48
- {
49
- if(value() != rb_cObject)
50
- {
51
- throw std::runtime_error("struct is already initialized");
52
- }
53
-
54
- // TODO: not exception-safe
55
- Symbol ruby_name(name);
56
- member_offset_[ruby_name] = members_.size();
57
- members_.push(ruby_name);
58
-
59
- return *this;
60
- }
61
-
62
- unsigned long Rice::Struct::
63
- offset_of(Identifier name) const
64
- {
65
- Symbol ruby_name(name);
66
- return from_ruby<unsigned long>(member_offset_[ruby_name]);
67
- }
68
-
69
- void Rice::Struct::
70
- swap(Rice::Struct & other)
71
- {
72
- members_.swap(other.members_);
73
- members_guard_.swap(other.members_guard_);
74
- member_offset_.swap(other.member_offset_);
75
- member_offset_guard_.swap(other.member_offset_guard_);
76
- Class::swap(other);
77
- }
78
-
79
- Rice::Struct::Instance
80
- Rice::Struct::
81
- new_instance(Array args) const
82
- {
83
- Object instance = const_cast<Struct *>(this)->vcall("new", args);
84
- return Instance(*this, instance);
85
- }
86
-
87
- Rice::Struct::Instance::
88
- Instance(
89
- Struct const & type,
90
- Array args)
91
- : Builtin_Object<T_STRUCT>(type.new_instance(args))
92
- , type_(type)
93
- {
94
- }
95
-
96
- Rice::Struct::Instance::
97
- Instance(
98
- Struct const & type,
99
- Object s)
100
- : Builtin_Object<T_STRUCT>(s)
101
- , type_(type)
102
- {
103
- }
104
-
105
- void Rice::Struct::Instance::
106
- swap(Instance & other)
107
- {
108
- type_.swap(other.type_);
109
- Builtin_Object<T_STRUCT>::swap(other);
110
- }
111
-
112
- Rice::Struct Rice::
113
- define_struct()
114
- {
115
- return Struct();
116
- }
117
-
data/rice/Struct.hpp DELETED
@@ -1,162 +0,0 @@
1
- #ifndef Rice__ruby_struct__hpp_
2
- #define Rice__ruby_struct__hpp_
3
-
4
- #include "Array.hpp"
5
- #include "Hash.hpp"
6
- #include "Module.hpp"
7
- #include "Class.hpp"
8
- #include "Builtin_Object.hpp"
9
- #include "Address_Registration_Guard.hpp"
10
-
11
- namespace Rice
12
- {
13
- class Struct;
14
-
15
- //! Define a new Struct
16
- Struct define_struct();
17
-
18
- //! A wrapper for creating Struct classes.
19
- /*! The Struct class is used for creating new Classes. Note that the
20
- * notation used here differs slightly from the notation inside the
21
- * interpreter.
22
- *
23
- * Inside the interpreter, calling Struct.new creates a new Class:
24
- * \code
25
- * irb(main):001:0> MyStruct = Struct.new(:a, :b, :c)
26
- * => S
27
- * irb(main):002:0> MyStruct.class
28
- * => Class
29
- * \endcode
30
- *
31
- * Instantiating that Class creates an instance of that Class:
32
- * \code
33
- * irb(main):003:0> mystruct_instance = MyStruct.new
34
- * => #<struct MyStruct a=nil, b=nil, c=nil>
35
- * irb(main):004:0> mystruct_instance.class
36
- * => MyStruct
37
- * irb(main):005:0> mystruct_instance.class.ancestors
38
- * => [MyStruct, Struct, Enumerable, Object, Kernel]
39
- * \endcode
40
- *
41
- * Thus, inside the interpreter, MyStruct is a Class which inherits
42
- * from Struct, and mystruct_instance is an instance of MyStruct.
43
- *
44
- * At the C++ level, we might do this instead:
45
- * \code
46
- * Struct rb_cMyStruct = define_struct()
47
- * .define_member("a")
48
- * .define_member("b")
49
- * .define_member("c")
50
- * .initialize("MyStruct");
51
- * Struct::Instance mystruct_instance(rb_cMyStruct.new_instance());
52
- * \endcode
53
- *
54
- * Here rb_cMyStruct is an instance of Struct and that mystruct_instance
55
- * is an instance of Struct::Instance.
56
- */
57
- class Struct
58
- : public Module_impl<Class, Struct>
59
- {
60
- public:
61
- //! Create a new Struct.
62
- Struct();
63
-
64
- //! Copy constructor.
65
- Struct(Struct const & s);
66
-
67
- //! Destructor.
68
- virtual ~Struct();
69
-
70
- //! Define a new Struct member.
71
- /*! Defines a new member of the Struct. Must be called before the
72
- * Struct is initialized.
73
- * \return *this
74
- */
75
- Struct & define_member(
76
- Identifier name);
77
-
78
- //! Initialize the Struct class.
79
- /*! Must be called after all Struct members have been defined.
80
- * \param module the module under which to define the Struct.
81
- * \param name the name of the Class at the ruby level.
82
- */
83
- Struct & initialize(
84
- Module module,
85
- Identifier name);
86
-
87
- //! Get the offset of a member in the Struct.
88
- /*! Internally, Struct members are stored as a single array of VALUE.
89
- * This function determines the offset of a given member in that
90
- * array.
91
- * \param member the name of the desired member.
92
- * \return the index of the given member.
93
- */
94
- unsigned long offset_of(Identifier name) const;
95
-
96
- class Instance;
97
- friend class Instance;
98
- friend Struct Rice::define_struct();
99
-
100
- //! Create a new instance of the Struct
101
- /*! \param args the arguments to the constructor.
102
- * \return a new Struct::Instance
103
- */
104
- Instance new_instance(Array args = Array()) const;
105
-
106
- //! Swap with another Struct.
107
- void swap(Struct & other);
108
-
109
- Array members() const { return members_; }
110
-
111
- private:
112
- Array members_;
113
- Address_Registration_Guard members_guard_;
114
-
115
- Hash member_offset_;
116
- Address_Registration_Guard member_offset_guard_;
117
- };
118
-
119
-
120
- //! An instance of a Struct
121
- //! \sa Struct
122
- class Struct::Instance
123
- : public Builtin_Object<T_STRUCT>
124
- {
125
- public:
126
- //! Create a new Instance of a Struct.
127
- /*! \param type the Struct type to create.
128
- * \param args the initial values for the objects of the instance.
129
- */
130
- Instance(
131
- Struct const & type,
132
- Array args = Array());
133
-
134
- //! Encapsulate an existing Struct instance.
135
- /*! \param type the Struct type to encapsulate.
136
- * \param s the instance to encapsulate.
137
- */
138
- Instance(
139
- Struct const & type,
140
- Object s);
141
-
142
- //! Get a member, given its offset.
143
- /*! \param index the (integral) index into the Struct's internal
144
- * array or its name (an Identifier or char const *)
145
- * \return the member.
146
- */
147
- template<typename T>
148
- Object operator[](T index);
149
-
150
- //! Swap with another Struct::Instance.
151
- void swap(Instance & other);
152
-
153
- private:
154
- Struct type_;
155
- };
156
-
157
- } // namespace Rice
158
-
159
- #include "Struct.ipp"
160
-
161
- #endif // Rice__ruby_struct__hpp_
162
-
data/rice/Struct.ipp DELETED
@@ -1,26 +0,0 @@
1
- namespace Rice
2
- {
3
-
4
- template<typename T>
5
- inline Object Struct::Instance::
6
- operator[](T index)
7
- {
8
- return rb_struct_aref(value(), ULONG2NUM(index));
9
- }
10
-
11
- template<>
12
- inline Object Struct::Instance::
13
- operator[]<Identifier>(Identifier member)
14
- {
15
- unsigned long index = type_.offset_of(member);
16
- return (*this)[index];
17
- }
18
-
19
- template<>
20
- inline Object Struct::Instance::
21
- operator[]<char const *>(char const * name)
22
- {
23
- return (*this)[Identifier(name)];
24
- }
25
-
26
- } // Rice
data/rice/Symbol.cpp DELETED
@@ -1,25 +0,0 @@
1
- #include "Symbol.hpp"
2
-
3
- namespace
4
- {
5
- VALUE check_type(Rice::Object value, int type)
6
- {
7
- rb_check_type(value, type);
8
- return Qnil;
9
- }
10
- }
11
-
12
- Rice::Symbol::
13
- Symbol(VALUE v)
14
- : Object(v)
15
- {
16
- protect(check_type, v, T_SYMBOL);
17
- }
18
-
19
- Rice::Symbol::
20
- Symbol(Object v)
21
- : Object(v)
22
- {
23
- protect(check_type, v, T_SYMBOL);
24
- }
25
-
data/rice/Symbol.hpp DELETED
@@ -1,66 +0,0 @@
1
- #ifndef Rice__Symbol__hpp_
2
- #define Rice__Symbol__hpp_
3
-
4
- #include "Identifier.hpp"
5
- #include "Object.hpp"
6
- #include "detail/ruby.hpp"
7
- #include <string>
8
-
9
- namespace Rice
10
- {
11
-
12
- //! A wrapper for ruby's Symbol class.
13
- /*! Symbols are internal identifiers in ruby. They are singletons and
14
- * can be thought of as frozen strings. They differ from an Identifier
15
- * in that they are in fact real Objects, but they can be converted
16
- * back and forth between Identifier and Symbol.
17
- */
18
- class Symbol
19
- : public Object
20
- {
21
- public:
22
- //! Wrap an existing symbol.
23
- Symbol(VALUE v);
24
-
25
- //! Wrap an existing symbol.
26
- Symbol(Object v);
27
-
28
- //! Construct a Symbol from an Identifier.
29
- Symbol(Identifier id);
30
-
31
- //! Construct a Symbol from a null-terminated C string.
32
- Symbol(char const * s = "");
33
-
34
- //! Construct a Symbol from an std::string.
35
- Symbol(std::string const & s);
36
-
37
- //! Return a string representation of the Symbol.
38
- char const * c_str() const;
39
-
40
- //! Return a string representation of the Symbol.
41
- std::string str() const;
42
-
43
- //! Return the Symbol as an Identifier.
44
- Identifier to_id() const;
45
- };
46
-
47
- } // namespace Rice
48
-
49
- template<>
50
- inline
51
- Rice::Symbol from_ruby<Rice::Symbol>(Rice::Object x)
52
- {
53
- return Rice::Symbol(x);
54
- }
55
-
56
- template<>
57
- inline
58
- Rice::Object to_ruby<Rice::Symbol>(Rice::Symbol const & x)
59
- {
60
- return x;
61
- }
62
-
63
- #include "Symbol.ipp"
64
-
65
- #endif // Rice__Symbol__hpp_
66
-
data/rice/Symbol.ipp DELETED
@@ -1,44 +0,0 @@
1
- #ifndef Rice__Symbol__ipp_
2
- #define Rice__Symbol__ipp_
3
-
4
- #include "protect.hpp"
5
- #include "detail/ruby.hpp"
6
-
7
- inline Rice::Symbol::
8
- Symbol(char const * s)
9
- : Object(ID2SYM(rb_intern(s)))
10
- {
11
- }
12
-
13
- inline Rice::Symbol::
14
- Symbol(std::string const & s)
15
- : Object(ID2SYM(rb_intern(s.c_str())))
16
- {
17
- }
18
-
19
- inline Rice::Symbol::
20
- Symbol(Identifier id)
21
- : Object(ID2SYM(id))
22
- {
23
- }
24
-
25
- inline char const * Rice::Symbol::
26
- c_str() const
27
- {
28
- return to_id().c_str();
29
- }
30
-
31
- inline std::string Rice::Symbol::
32
- str() const
33
- {
34
- return to_id().str();
35
- }
36
-
37
- inline Rice::Identifier Rice::Symbol::
38
- to_id() const
39
- {
40
- return rb_to_id(value());
41
- }
42
-
43
- #endif // Rice__Symbol__ipp_
44
-