1 #ifndef Rice__Data_Object_defn__hpp_
2 #define Rice__Data_Object_defn__hpp_
4 #include "Object_defn.hpp"
5 #include "Data_Type_fwd.hpp"
6 #include "ruby_mark.hpp"
7 #include "detail/to_ruby.hpp"
8 #include "detail/ruby.hpp"
21 typedef void (*Ruby_Data_Func)(T * obj);
22 static const Ruby_Data_Func mark;
28 static void free(T * obj) {
delete obj; }
111 T *
get()
const {
return obj_; }
A smartpointer-like wrapper for Ruby data objects.
Definition: Data_Object_defn.hpp:59
Data_Object(T *obj, VALUE klass=Data_Type< T >::klass(), Ruby_Data_Func mark_func=Default_Mark_Function< T >::mark, Ruby_Data_Func free_func=Default_Free_Function< T >::free)
Wrap a C++ object.
void(* Ruby_Data_Func)(T *obj)
A function that takes a T* and returns void.
Definition: Data_Object_defn.hpp:62
T & operator*() const
Return a reference to obj_.
Definition: Data_Object_defn.hpp:109
Data_Object(Object value, Data_Type< U > const &klass=Data_Type< T >::klass())
Unwrap a Ruby object.
T * get() const
Return a pointer to obj_.
Definition: Data_Object_defn.hpp:111
void swap(Data_Object< U > &ref)
Swap with another data object of the same type.
Data_Object(Data_Object const &other)
Make a copy of a Data_Object.
Data_Object(Object value)
Unwrap a Ruby object.
T * operator->() const
Return a pointer to obj_.
Definition: Data_Object_defn.hpp:110
A mechanism for binding ruby types to C++ types.
Definition: Data_Type_defn.hpp:112
The base class for all Objects.
Definition: Object_defn.hpp:25
VALUE const volatile & value() const
Explicitly get the encapsulated VALUE.
Definition: Object_defn.hpp:56
Definition: Data_Object_defn.hpp:27
Definition: Data_Object_defn.hpp:20