Class: FFIGen::FunctionOrCallback
- Defined in:
- lib/ffi_gen.rb,
lib/ffi_gen/java_output.rb,
lib/ffi_gen/ruby_output.rb
Instance Attribute Summary collapse
-
#function_description ⇒ Object
readonly
Returns the value of attribute function_description.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#parameters ⇒ Object
readonly
Returns the value of attribute parameters.
-
#return_type ⇒ Object
readonly
Returns the value of attribute return_type.
-
#return_value_description ⇒ Object
readonly
Returns the value of attribute return_value_description.
Instance Method Summary collapse
-
#initialize(generator, name, parameters, return_type, is_callback, blocking, function_description, return_value_description) ⇒ FunctionOrCallback
constructor
A new instance of FunctionOrCallback.
- #java_description ⇒ Object
- #java_jna_type ⇒ Object
- #java_name ⇒ Object
- #ruby_description ⇒ Object
- #ruby_ffi_type ⇒ Object
- #ruby_name ⇒ Object
- #write_java(writer) ⇒ Object
- #write_ruby(writer) ⇒ Object
Constructor Details
#initialize(generator, name, parameters, return_type, is_callback, blocking, function_description, return_value_description) ⇒ FunctionOrCallback
Returns a new instance of FunctionOrCallback.
114 115 116 117 118 119 120 121 122 123 |
# File 'lib/ffi_gen.rb', line 114 def initialize(generator, name, parameters, return_type, is_callback, blocking, function_description, return_value_description) @generator = generator @name = name @parameters = parameters @return_type = return_type @is_callback = is_callback @blocking = blocking @function_description = function_description @return_value_description = return_value_description end |
Instance Attribute Details
#function_description ⇒ Object (readonly)
Returns the value of attribute function_description.
112 113 114 |
# File 'lib/ffi_gen.rb', line 112 def function_description @function_description end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
112 113 114 |
# File 'lib/ffi_gen.rb', line 112 def name @name end |
#parameters ⇒ Object (readonly)
Returns the value of attribute parameters.
112 113 114 |
# File 'lib/ffi_gen.rb', line 112 def parameters @parameters end |
#return_type ⇒ Object (readonly)
Returns the value of attribute return_type.
112 113 114 |
# File 'lib/ffi_gen.rb', line 112 def return_type @return_type end |
#return_value_description ⇒ Object (readonly)
Returns the value of attribute return_value_description.
112 113 114 |
# File 'lib/ffi_gen.rb', line 112 def return_value_description @return_value_description end |
Instance Method Details
#java_description ⇒ Object
159 160 161 |
# File 'lib/ffi_gen/java_output.rb', line 159 def java_description "Proc(_callback_#{java_name}_)" end |
#java_jna_type ⇒ Object
155 156 157 |
# File 'lib/ffi_gen/java_output.rb', line 155 def java_jna_type java_name end |
#java_name ⇒ Object
151 152 153 |
# File 'lib/ffi_gen/java_output.rb', line 151 def java_name @java_name ||= @name.to_java_downcase end |
#ruby_description ⇒ Object
176 177 178 |
# File 'lib/ffi_gen/ruby_output.rb', line 176 def ruby_description "Proc(_callback_#{ruby_name}_)" end |
#ruby_ffi_type ⇒ Object
172 173 174 |
# File 'lib/ffi_gen/ruby_output.rb', line 172 def ruby_ffi_type ":#{ruby_name}" end |
#ruby_name ⇒ Object
168 169 170 |
# File 'lib/ffi_gen/ruby_output.rb', line 168 def ruby_name @ruby_name ||= @name.to_ruby_downcase end |
#write_java(writer) ⇒ Object
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
# File 'lib/ffi_gen/java_output.rb', line 129 def write_java(writer) return if @is_callback # not yet supported writer.comment do writer.write_description @function_description writer.puts "", "<em>This entry is only for documentation and no real method.</em>" if @is_callback writer.puts "", "@method #{@is_callback ? "_callback_#{java_name}_" : java_name}(#{@parameters.map{ |parameter| parameter[:name].to_java_downcase }.join(', ')})" @parameters.each do |parameter| writer.write_description parameter[:description], false, "@param [#{parameter[:type].java_description}] #{parameter[:name].to_java_downcase} ", " " end writer.write_description @return_value_description, false, "@return [#{@return_type.java_description}] ", " " writer.puts "@scope class" end jna_signature = "#{@parameters.map{ |parameter| "#{parameter[:type].java_jna_type} #{parameter[:name].to_java_downcase}" }.join(', ')}" if @is_callback writer.puts "callback :#{java_name}, #{jna_signature}", "" else writer.puts "@NativeName(\"#{@name.raw}\")", "#{@return_type.java_jna_type} #{java_name}(#{jna_signature});", "" end end |
#write_ruby(writer) ⇒ Object
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
# File 'lib/ffi_gen/ruby_output.rb', line 147 def write_ruby(writer) writer.puts "@blocking = true" if @blocking writer.comment do writer.write_description @function_description writer.puts "", "<em>This entry is only for documentation and no real method.</em>" if @is_callback writer.puts "", "@method #{@is_callback ? "_callback_#{ruby_name}_" : ruby_name}(#{@parameters.map{ |parameter| parameter[:name].to_ruby_downcase }.join(', ')})" @parameters.each do |parameter| writer.write_description parameter[:description], false, "@param [#{parameter[:type].ruby_description}] #{parameter[:name].to_ruby_downcase} ", " " end writer.write_description @return_value_description, false, "@return [#{@return_type.ruby_description}] ", " " writer.puts "@scope class" end ffi_signature = "[#{@parameters.map{ |parameter| parameter[:type].ruby_ffi_type }.join(', ')}], #{@return_type.ruby_ffi_type}" if @is_callback writer.puts "callback :#{ruby_name}, #{ffi_signature}", "" else writer.puts "attach_function :#{ruby_name}, :#{@name.raw}, #{ffi_signature}", "" end end |