rice 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (166) hide show
  1. data/COPYING +23 -0
  2. data/Doxyfile +1253 -0
  3. data/Makefile.am +26 -0
  4. data/Makefile.in +736 -0
  5. data/README +881 -0
  6. data/README.mingw +8 -0
  7. data/bootstrap +8 -0
  8. data/config.guess +1535 -0
  9. data/config.sub +1644 -0
  10. data/configure +7310 -0
  11. data/configure.ac +48 -0
  12. data/depcomp +584 -0
  13. data/doxygen.ac +314 -0
  14. data/doxygen.am +186 -0
  15. data/install-sh +507 -0
  16. data/missing +367 -0
  17. data/post-autoconf.rb +22 -0
  18. data/post-automake.rb +28 -0
  19. data/rice/Address_Registration_Guard.hpp +7 -0
  20. data/rice/Address_Registration_Guard.ipp +34 -0
  21. data/rice/Address_Registration_Guard_defn.hpp +65 -0
  22. data/rice/Allocation_Strategies.hpp +37 -0
  23. data/rice/Array.hpp +220 -0
  24. data/rice/Array.ipp +262 -0
  25. data/rice/Builtin_Object.hpp +8 -0
  26. data/rice/Builtin_Object.ipp +50 -0
  27. data/rice/Builtin_Object_defn.hpp +51 -0
  28. data/rice/Class.cpp +57 -0
  29. data/rice/Class.hpp +8 -0
  30. data/rice/Class.ipp +4 -0
  31. data/rice/Class_defn.hpp +83 -0
  32. data/rice/Constructor.hpp +189 -0
  33. data/rice/Critical_Guard.hpp +34 -0
  34. data/rice/Critical_Guard.ipp +20 -0
  35. data/rice/Data_Object.hpp +127 -0
  36. data/rice/Data_Object.ipp +129 -0
  37. data/rice/Data_Type.cpp +21 -0
  38. data/rice/Data_Type.hpp +8 -0
  39. data/rice/Data_Type.ipp +227 -0
  40. data/rice/Data_Type_defn.hpp +219 -0
  41. data/rice/Data_Type_fwd.hpp +12 -0
  42. data/rice/Enum.hpp +118 -0
  43. data/rice/Enum.ipp +246 -0
  44. data/rice/Exception.cpp +59 -0
  45. data/rice/Exception.hpp +69 -0
  46. data/rice/Exception_Base.hpp +30 -0
  47. data/rice/Exception_Base.ipp +11 -0
  48. data/rice/Hash.hpp +206 -0
  49. data/rice/Hash.ipp +336 -0
  50. data/rice/Identifier.cpp +8 -0
  51. data/rice/Identifier.hpp +50 -0
  52. data/rice/Identifier.ipp +33 -0
  53. data/rice/Jump_Tag.hpp +24 -0
  54. data/rice/Makefile.am +112 -0
  55. data/rice/Makefile.in +675 -0
  56. data/rice/Module.cpp +75 -0
  57. data/rice/Module.hpp +8 -0
  58. data/rice/Module.ipp +6 -0
  59. data/rice/Module_defn.hpp +87 -0
  60. data/rice/Module_impl.hpp +237 -0
  61. data/rice/Module_impl.ipp +302 -0
  62. data/rice/Object.cpp +153 -0
  63. data/rice/Object.hpp +8 -0
  64. data/rice/Object.ipp +19 -0
  65. data/rice/Object_defn.hpp +183 -0
  66. data/rice/Require_Guard.hpp +21 -0
  67. data/rice/String.cpp +93 -0
  68. data/rice/String.hpp +88 -0
  69. data/rice/Struct.cpp +117 -0
  70. data/rice/Struct.hpp +162 -0
  71. data/rice/Struct.ipp +26 -0
  72. data/rice/Symbol.cpp +25 -0
  73. data/rice/Symbol.hpp +66 -0
  74. data/rice/Symbol.ipp +44 -0
  75. data/rice/VM.cpp +79 -0
  76. data/rice/VM.hpp +27 -0
  77. data/rice/config.hpp +23 -0
  78. data/rice/config.hpp.in +22 -0
  79. data/rice/detail/Auto_Function_Wrapper.hpp +719 -0
  80. data/rice/detail/Auto_Function_Wrapper.ipp +1354 -0
  81. data/rice/detail/Auto_Member_Function_Wrapper.hpp +685 -0
  82. data/rice/detail/Auto_Member_Function_Wrapper.ipp +1435 -0
  83. data/rice/detail/Caster.hpp +61 -0
  84. data/rice/detail/Exception_Handler.hpp +118 -0
  85. data/rice/detail/Iterator_Definer.hpp +98 -0
  86. data/rice/detail/Not_Copyable.hpp +25 -0
  87. data/rice/detail/Wrapped_Function.hpp +33 -0
  88. data/rice/detail/check_ruby_type.cpp +21 -0
  89. data/rice/detail/check_ruby_type.hpp +23 -0
  90. data/rice/detail/creation_funcs.hpp +45 -0
  91. data/rice/detail/creation_funcs.ipp +62 -0
  92. data/rice/detail/default_allocation_func.hpp +23 -0
  93. data/rice/detail/default_allocation_func.ipp +11 -0
  94. data/rice/detail/define_method_and_auto_wrap.hpp +27 -0
  95. data/rice/detail/define_method_and_auto_wrap.ipp +20 -0
  96. data/rice/detail/env.hpp +13 -0
  97. data/rice/detail/from_ruby.hpp +43 -0
  98. data/rice/detail/from_ruby.ipp +74 -0
  99. data/rice/detail/method_data.cpp +105 -0
  100. data/rice/detail/method_data.hpp +33 -0
  101. data/rice/detail/node.hpp +13 -0
  102. data/rice/detail/object_call.hpp +85 -0
  103. data/rice/detail/object_call.ipp +147 -0
  104. data/rice/detail/protect.cpp +27 -0
  105. data/rice/detail/protect.hpp +34 -0
  106. data/rice/detail/remove_const.hpp +21 -0
  107. data/rice/detail/ruby.hpp +85 -0
  108. data/rice/detail/rubysig.hpp +13 -0
  109. data/rice/detail/st.hpp +56 -0
  110. data/rice/detail/to_ruby.hpp +16 -0
  111. data/rice/detail/to_ruby.ipp +10 -0
  112. data/rice/detail/win32.hpp +16 -0
  113. data/rice/detail/wrap_function.hpp +288 -0
  114. data/rice/detail/wrap_function.ipp +473 -0
  115. data/rice/generate_code.rb +1092 -0
  116. data/rice/global_function.hpp +16 -0
  117. data/rice/global_function.ipp +11 -0
  118. data/rice/protect.hpp +91 -0
  119. data/rice/protect.ipp +803 -0
  120. data/rice/ruby_try_catch.hpp +86 -0
  121. data/rice/to_from_ruby.hpp +8 -0
  122. data/rice/to_from_ruby.ipp +299 -0
  123. data/rice/to_from_ruby_defn.hpp +71 -0
  124. data/ruby.ac +105 -0
  125. data/ruby/Makefile.am +1 -0
  126. data/ruby/Makefile.in +493 -0
  127. data/ruby/lib/Makefile.am +3 -0
  128. data/ruby/lib/Makefile.in +369 -0
  129. data/ruby/lib/mkmf-rice.rb.in +199 -0
  130. data/sample/Makefile.am +47 -0
  131. data/sample/Makefile.in +375 -0
  132. data/sample/enum/extconf.rb +3 -0
  133. data/sample/enum/sample_enum.cpp +54 -0
  134. data/sample/enum/test.rb +8 -0
  135. data/sample/inheritance/animals.cpp +98 -0
  136. data/sample/inheritance/extconf.rb +3 -0
  137. data/sample/inheritance/test.rb +7 -0
  138. data/sample/map/extconf.rb +3 -0
  139. data/sample/map/map.cpp +81 -0
  140. data/sample/map/test.rb +7 -0
  141. data/test/Makefile.am +44 -0
  142. data/test/Makefile.in +575 -0
  143. data/test/test_Address_Registration_Guard.cpp +43 -0
  144. data/test/test_Allocation_Strategies.cpp +77 -0
  145. data/test/test_Array.cpp +241 -0
  146. data/test/test_Builtin_Object.cpp +72 -0
  147. data/test/test_Class.cpp +350 -0
  148. data/test/test_Constructor.cpp +30 -0
  149. data/test/test_Critical_Guard.cpp +47 -0
  150. data/test/test_Data_Object.cpp +235 -0
  151. data/test/test_Enum.cpp +162 -0
  152. data/test/test_Exception.cpp +46 -0
  153. data/test/test_Hash.cpp +195 -0
  154. data/test/test_Identifier.cpp +70 -0
  155. data/test/test_Jump_Tag.cpp +17 -0
  156. data/test/test_Module.cpp +253 -0
  157. data/test/test_Object.cpp +148 -0
  158. data/test/test_String.cpp +94 -0
  159. data/test/test_Struct.cpp +192 -0
  160. data/test/test_Symbol.cpp +63 -0
  161. data/test/test_To_From_Ruby.cpp +281 -0
  162. data/test/test_VM.cpp +26 -0
  163. data/test/test_rice.rb +30 -0
  164. data/test/unittest.cpp +136 -0
  165. data/test/unittest.hpp +292 -0
  166. metadata +209 -0
@@ -0,0 +1,23 @@
1
+ #ifndef Rice__detail__default_allocation_func__hpp_
2
+ #define Rice__detail__default_allocation_func__hpp_
3
+
4
+ namespace Rice
5
+ {
6
+
7
+ namespace detail
8
+ {
9
+
10
+ //! A default implementation of an allocate_func. This function does no
11
+ //! actual allocation; the initialize_func can later do the real
12
+ //! allocation with: DATA_PTR(self) = new Type(arg1, arg2, ...)
13
+ template<typename T>
14
+ VALUE default_allocation_func(VALUE klass);
15
+
16
+ } // detail
17
+
18
+ } // Rice
19
+
20
+ #include "default_allocation_func.ipp"
21
+
22
+ #endif // Rice__detail__default_allocation_func__hpp_
23
+
@@ -0,0 +1,11 @@
1
+ #include "../Data_Object.hpp"
2
+
3
+ template<typename T>
4
+ VALUE Rice::detail::
5
+ default_allocation_func(VALUE /* klass */)
6
+ {
7
+ Data_Object<T> m(static_cast<T*>(0));
8
+ return m.value();
9
+ }
10
+
11
+
@@ -0,0 +1,27 @@
1
+ #ifndef Rice__detail__define_method_and_auto_wrap__hpp_
2
+ #define Rice__detail__define_method_and_auto_wrap__hpp_
3
+
4
+ #include "ruby.hpp"
5
+
6
+ namespace Rice
7
+ {
8
+
9
+ namespace detail
10
+ {
11
+
12
+ class Exception_Handler;
13
+
14
+ template<typename Fun_T>
15
+ void define_method_and_auto_wrap(
16
+ VALUE klass,
17
+ char const * name,
18
+ Fun_T function,
19
+ Exception_Handler const * handler = 0);
20
+
21
+ } // detail
22
+
23
+ } // Rice
24
+
25
+ #include "define_method_and_auto_wrap.ipp"
26
+
27
+ #endif // Rice__detail__define_method_and_auto_wrap__hpp_
@@ -0,0 +1,20 @@
1
+ #ifndef Rice__detail__define_method_and_auto_wrap__ipp_
2
+ #define Rice__detail__define_method_and_auto_wrap__ipp_
3
+
4
+ #include "wrap_function.hpp"
5
+ #include "method_data.hpp"
6
+ #include "Exception_Handler.hpp"
7
+
8
+ template<typename Fun_T>
9
+ void Rice::detail::
10
+ define_method_and_auto_wrap(
11
+ VALUE klass,
12
+ char const * name,
13
+ Fun_T function,
14
+ Exception_Handler const * handler)
15
+ {
16
+ Wrapped_Function * f(wrap_function(function, handler));
17
+ define_method_with_data(klass, name, f->func(), f->arity(), f);
18
+ }
19
+
20
+ #endif // Rice__detail__define_method_and_auto_wrap__ipp_
@@ -0,0 +1,13 @@
1
+ #ifndef Rice__detail__env__hpp_
2
+ #define Rice__detail__env__hpp_
3
+
4
+ /**
5
+ * Helper header for the env.h ruby include file, which does
6
+ * not have extern "C"
7
+ */
8
+
9
+ extern "C" {
10
+ #include "env.h"
11
+ }
12
+
13
+ #endif
@@ -0,0 +1,43 @@
1
+ #ifndef Rice__detail__from_ruby__hpp_
2
+ #define Rice__detail__from_ruby__hpp_
3
+
4
+ namespace Rice
5
+ {
6
+ namespace detail
7
+ {
8
+ template<typename T>
9
+ struct from_ruby_
10
+ {
11
+ typedef T Retval_T;
12
+
13
+ static T convert(Rice::Object x);
14
+ };
15
+
16
+ template<typename T>
17
+ struct from_ruby_<T *>
18
+ {
19
+ typedef T * Retval_T;
20
+
21
+ static T * convert(Rice::Object x);
22
+ };
23
+
24
+ template<typename T>
25
+ struct from_ruby_<T const *>
26
+ {
27
+ typedef T const * Retval_T;
28
+
29
+ static T const * convert(Rice::Object x);
30
+ };
31
+
32
+ template<typename T>
33
+ struct from_ruby_<T &>
34
+ {
35
+ typedef T & Retval_T;
36
+
37
+ static T & convert(Rice::Object x);
38
+ };
39
+ } // detail
40
+ } // Rice
41
+
42
+ #endif // Rice__detail__from_ruby__hpp_
43
+
@@ -0,0 +1,74 @@
1
+ #ifndef Rice__detail__from_ruby__ipp_
2
+ #define Rice__detail__from_ruby__ipp_
3
+
4
+ #include "../Data_Type.hpp"
5
+ #include <typeinfo>
6
+
7
+ #if 0
8
+ namespace Rice
9
+ {
10
+ namespace detail
11
+ {
12
+ template<typename T>
13
+ struct unpointer
14
+ {
15
+ // can't unpointer a non-pointer
16
+ };
17
+
18
+ template<typename T>
19
+ struct unpointer<T *>
20
+ {
21
+ typedef T type;
22
+ };
23
+ }
24
+ }
25
+ #endif
26
+
27
+ template<typename T>
28
+ T Rice::detail::from_ruby_<T>::
29
+ convert(Rice::Object x)
30
+ {
31
+ if(rb_type(x.value()) == T_DATA)
32
+ {
33
+ return *Data_Type<T>::from_ruby(x);
34
+ }
35
+ else
36
+ {
37
+ std::string s("No conversion defined for ");
38
+ s += typeid(T).name();
39
+ throw std::runtime_error(s.c_str());
40
+ }
41
+ }
42
+
43
+ template<typename T>
44
+ T * Rice::detail::from_ruby_<T *>::
45
+ convert(Rice::Object x)
46
+ {
47
+ if(rb_type(x.value()) == T_DATA)
48
+ {
49
+ return Data_Type<T>::from_ruby(x);
50
+ }
51
+ else
52
+ {
53
+ std::string s("No conversion defined for ");
54
+ s += typeid(T).name();
55
+ throw std::runtime_error(s.c_str());
56
+ }
57
+ }
58
+
59
+ template<typename T>
60
+ T const * Rice::detail::from_ruby_<T const *>::
61
+ convert(Rice::Object x)
62
+ {
63
+ return from_ruby<T *>(x);
64
+ }
65
+
66
+ template<typename T>
67
+ T & Rice::detail::from_ruby_<T &>::
68
+ convert(Rice::Object x)
69
+ {
70
+ return *from_ruby<T *>(x);
71
+ }
72
+
73
+ #endif // Rice__detail__from_ruby__ipp_
74
+
@@ -0,0 +1,105 @@
1
+ #include "method_data.hpp"
2
+
3
+ #include "st.hpp"
4
+ #include "ruby.hpp"
5
+
6
+ #include <stdexcept>
7
+
8
+ #include "env.hpp"
9
+ #include "node.hpp"
10
+
11
+ // Every C function in ruby (pre-YARV) is stored like this:
12
+ //
13
+ // NODE_METHOD
14
+ // |- (u1) noex - method visibility
15
+ // +- (u2) body
16
+ // +- NODE_CFUNC
17
+ // |- (u1) cfnc - function to call
18
+ // +- (u2) argc - number of arguments
19
+ //
20
+ // We use the unused third member (u3) of the CFUNC node to store method
21
+ // data.
22
+ //
23
+ // We could use the unused third member of the METHOD node, but then the
24
+ // method data would not be copied when the method is aliased. The
25
+ // result then would be a segfault whenver the method is called.
26
+ //
27
+ // Using the third member of the METHOD node would also prevent adding
28
+ // the method atomically (rather, the method would be added and then the
29
+ // node later modified to contain the data).
30
+ //
31
+ // When the function is called, it can retrieve the defined data by
32
+ // calling method_data(). We then do a lookup in the class to find the
33
+ // node for the method's bdoy. This is necessary, because there's no
34
+ // way to get the node of a called function directly. However, by using
35
+ // the class's method table, we can do one lookup instead of two (one to
36
+ // find the class data and another to find the method data).
37
+
38
+ namespace
39
+ {
40
+
41
+ NODE * get_method_node(VALUE klass, ID id)
42
+ {
43
+ union { VALUE value; RClass * ptr; } class_u = { klass };
44
+ union { ID id; st_data_t data; } id_u = { id };
45
+ st_data_t node_data;
46
+ if (!st_lookup(class_u.ptr->m_tbl, id_u.data, &node_data))
47
+ {
48
+ throw std::runtime_error("Could not find method node");
49
+ }
50
+ union { st_data_t data; RNode * node; } node_u = { node_data };
51
+ return node_u.node;
52
+ }
53
+
54
+ NODE * get_method_body(VALUE klass, ID id)
55
+ {
56
+ NODE * node = get_method_node(klass, id);
57
+
58
+ if (!node->nd_body)
59
+ {
60
+ throw std::runtime_error("Method has no body");
61
+ }
62
+
63
+ return node->nd_body;
64
+ }
65
+
66
+ } // namespace
67
+
68
+ void * Rice::detail::
69
+ method_data()
70
+ {
71
+ NODE * node = get_method_body(
72
+ ruby_frame->last_class,
73
+ ruby_frame->last_func);
74
+
75
+ return (void *)node->nd_entry;
76
+ }
77
+
78
+ void Rice::detail::
79
+ define_method_with_data(
80
+ VALUE klass,
81
+ char const * name,
82
+ RUBY_METHOD_FUNC func,
83
+ int num_args,
84
+ void * data)
85
+ {
86
+ NODE * node = NEW_CFUNC(func, num_args);
87
+ node->nd_entry = (global_entry *)data;
88
+ #if RUBY_VERSION_CODE >= 180
89
+ rb_add_method(klass, rb_intern(name), node, NOEX_PUBLIC);
90
+ #else
91
+ rb_add_method(klass, rb_intern(name), node, NOEX_PUBLIC|NOEX_CFUNC);
92
+ rb_enable_super(klass, name);
93
+ #endif
94
+ }
95
+
96
+ void Rice::detail::
97
+ set_method_data(
98
+ VALUE klass,
99
+ char const * name,
100
+ void * data)
101
+ {
102
+ NODE * node = get_method_body(klass, rb_intern(name));
103
+ node->nd_entry = (global_entry *)data;
104
+ }
105
+
@@ -0,0 +1,33 @@
1
+ #ifndef Rice__method_data__hpp_
2
+ #define Rice__method_data__hpp_
3
+
4
+ #include "ruby.hpp"
5
+
6
+ namespace Rice
7
+ {
8
+
9
+ namespace detail
10
+ {
11
+
12
+ // Retrieve the data associated with the last called method.
13
+ void * method_data();
14
+
15
+ // Define a method and attach data to it.
16
+ void define_method_with_data(
17
+ VALUE klass,
18
+ char const * name,
19
+ RUBY_METHOD_FUNC func,
20
+ int num_args,
21
+ void * data);
22
+
23
+ // Set the data associated with a method.
24
+ void set_method_data(
25
+ VALUE klass,
26
+ char const * name,
27
+ void * data);
28
+
29
+ } // namespace detail
30
+
31
+ } // namespace Rice
32
+
33
+ #endif // Rice__method_data__hpp_
@@ -0,0 +1,13 @@
1
+ #ifndef Rice__detail__node__hpp_
2
+ #define Rice__detail__node__hpp_
3
+
4
+ /**
5
+ * Helper header for the node.h ruby include file, which does
6
+ * not have extern "C"
7
+ */
8
+
9
+ extern "C" {
10
+ #include "node.h"
11
+ }
12
+
13
+ #endif
@@ -0,0 +1,85 @@
1
+ // This is a generated file. DO NOT EDIT!!
2
+ #ifdef DOXYGEN
3
+
4
+ //! Call the Ruby method specified by 'id' on object 'obj'.
5
+ /*! Pass in arguments (arg1, arg2, ...). The arguments will be converted to
6
+ * Ruby objects with to_ruby<>. The return value will automatically be
7
+ * converted to type Retval_T with from_ruby<>.
8
+ *
9
+ * E.g.:
10
+ * \code
11
+ * float y = x.call<float>("foo", z, 42);
12
+ * \endcode
13
+ */
14
+ template<typename Retval_T>
15
+ Retval_T call(Identifier id, T1 arg1, T2 arg2, ...) const;
16
+
17
+ //! Version of call which defaults to Object return type.
18
+ Object call(Identifier id, T1 arg1, T2 arg2, ...) const;
19
+ #else
20
+
21
+
22
+ Object call(Identifier id) const;
23
+
24
+
25
+ template<typename T1>
26
+ Object call(Identifier id, T1 arg1) const;
27
+
28
+
29
+ template<typename T1, typename T2>
30
+ Object call(Identifier id, T1 arg1, T2 arg2) const;
31
+
32
+
33
+ template<typename T1, typename T2, typename T3>
34
+ Object call(Identifier id, T1 arg1, T2 arg2, T3 arg3) const;
35
+
36
+
37
+ template<typename T1, typename T2, typename T3, typename T4>
38
+ Object call(Identifier id, T1 arg1, T2 arg2, T3 arg3, T4 arg4) const;
39
+
40
+
41
+ template<typename T1, typename T2, typename T3, typename T4, typename T5>
42
+ Object call(Identifier id, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) const;
43
+
44
+
45
+ template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
46
+ Object call(Identifier id, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6) const;
47
+
48
+
49
+ template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
50
+ Object call(Identifier id, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7) const;
51
+
52
+
53
+ template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
54
+ Object call(Identifier id, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8) const;
55
+
56
+
57
+ template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
58
+ Object call(Identifier id, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9) const;
59
+
60
+
61
+ template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>
62
+ Object call(Identifier id, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10) const;
63
+
64
+
65
+ template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11>
66
+ Object call(Identifier id, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11) const;
67
+
68
+
69
+ template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12>
70
+ Object call(Identifier id, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12) const;
71
+
72
+
73
+ template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13>
74
+ Object call(Identifier id, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13) const;
75
+
76
+
77
+ template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14>
78
+ Object call(Identifier id, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13, T14 arg14) const;
79
+
80
+
81
+ template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15>
82
+ Object call(Identifier id, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13, T14 arg14, T15 arg15) const;
83
+
84
+
85
+ #endif // DOXYGEN