Module: Kernel
- Defined in:
- lib/ode.rb
Overview
TODO put these functions in a more reasonable place
Instance Method Summary collapse
- #attr_reader_vector_argument(*args) ⇒ Object
- #attr_reader_vector_return(*args) ⇒ Object
- #attr_writer_vector_coordinates(*args) ⇒ Object
- #vector_transform(*args) ⇒ Object
Instance Method Details
#attr_reader_vector_argument(*args) ⇒ Object
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/ode.rb', line 91 def attr_reader_vector_argument(*args) args.each { |ruby_name, length| class_name = self.to_s.sub(/.*::/,'') c_name = "d#{class_name}Get#{ODE.camelize_method_name(ruby_name)}" class_eval <<-EOS def #{ruby_name.to_s} c_vect = SWIG::TYPE_p_float.create(#{length}) ODE.#{c_name}(@id, c_vect) ruby_vect = c_vect.to_a c_vect.destroy ruby_vect end EOS } end |
#attr_reader_vector_return(*args) ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/ode.rb', line 77 def attr_reader_vector_return(*args) args.each { |ruby_name, length| class_name = self.to_s.sub(/.*::/,'') c_name = "d#{class_name}Get#{ODE.camelize_method_name(ruby_name)}" class_eval <<-EOS def #{ruby_name.to_s} v = ODE.#{c_name}(@id) v.length = #{length} v end EOS } end |
#attr_writer_vector_coordinates(*args) ⇒ Object
107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/ode.rb', line 107 def attr_writer_vector_coordinates(*args) args.each { |ruby_name| class_name = self.to_s.sub(/.*::/,'') c_name = "d#{class_name}Set#{ODE.camelize_method_name(ruby_name)}" class_eval <<-EOS def #{ruby_name.to_s}=(v) ODE.#{c_name}(@id, *(v.to_a)) end EOS } end |
#vector_transform(*args) ⇒ Object
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
# File 'lib/ode.rb', line 119 def vector_transform(*args) args.each { |ruby_name, length| class_name = self.to_s.sub(/.*::/,'') c_name = "d#{class_name}#{ODE.camelize_method_name(ruby_name)}" unless (ODE.respond_to?(c_name.intern)) c_name = "d#{class_name}Get#{ODE.camelize_method_name(ruby_name)}" end c_args = ((0...length).collect { |i| "vin[#{i}]" }).join(", ") class_eval <<-EOS def #{ruby_name.to_s}(vin) c_vout = SWIG::TYPE_p_float.create(#{length}) ODE.#{c_name}(@id, #{c_args}, c_vout) ruby_vout = c_vout.to_a c_vout.destroy ruby_vout end EOS } end |