class FFIGen::Enum
Attributes
name[RW]
Public Class Methods
new(generator, name, constants, description)
click to toggle source
# File lib/ffi_gen.rb, line 81 def initialize(generator, name, constants, description) @generator = generator @name = name @constants = constants @description = description end
Public Instance Methods
java_description()
click to toggle source
# File lib/ffi_gen/java_output.rb, line 102 def java_description "Symbol from _enum_#{java_name}_" end
java_jna_type()
click to toggle source
# File lib/ffi_gen/java_output.rb, line 98 def java_jna_type java_name end
java_name()
click to toggle source
# File lib/ffi_gen/java_output.rb, line 94 def java_name @java_name ||= @name.to_java_classname end
ruby_description()
click to toggle source
# File lib/ffi_gen/ruby_output.rb, line 77 def ruby_description "Symbol from _enum_#{ruby_name}_" end
ruby_ffi_type()
click to toggle source
# File lib/ffi_gen/ruby_output.rb, line 73 def ruby_ffi_type ":#{ruby_name}" end
ruby_name()
click to toggle source
# File lib/ffi_gen/ruby_output.rb, line 69 def ruby_name @ruby_name ||= @name.to_ruby_downcase end
shorten_names()
click to toggle source
# File lib/ffi_gen.rb, line 88 def shorten_names return if @constants.size < 2 names = @constants.map { |constant| constant[:name].parts } names.each(&:shift) while names.map(&:first).uniq.size == 1 and @name.parts.map(&:downcase).include? names.first.first.downcase names.each(&:pop) while names.map(&:last).uniq.size == 1 and @name.parts.map(&:downcase).include? names.first.last.downcase end
write_java(writer)
click to toggle source
# File lib/ffi_gen/java_output.rb, line 67 def write_java(writer) return if @name.nil? shorten_names writer.comment do writer.write_description @description writer.puts "", "<em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:#{java_name}).</em>" writer.puts "", "=== Options:" @constants.each do |constant| writer.puts "#{constant[:name].to_java_constant} ::" writer.write_description constant[:comment], false, " ", " " end writer.puts "", "@method _enum_#{java_name}_", "@return [Symbol]", "@scope class" end writer.puts "public enum #{java_name} implements NativeEnum {" writer.indent do writer.write_array @constants, "," do |constant| "#{constant[:name].to_java_constant}(#{constant[:value]})" end writer.puts ";" writer.puts "", "private int nativeInt;", "", "private #{java_name}(int nativeInt) {", " this.nativeInt = nativeInt;", "}", "", "@Override", "public int toNativeInt() {", " return nativeInt;", "}" end writer.puts "}", "" end
write_ruby(writer)
click to toggle source
# File lib/ffi_gen/ruby_output.rb, line 41 def write_ruby(writer) return if @name.nil? shorten_names @constants.each do |constant| constant[:symbol] = ":#{constant[:name].to_ruby_downcase}" end writer.comment do writer.write_description @description writer.puts "", "<em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:#{ruby_name}).</em>" writer.puts "", "=== Options:" @constants.each do |constant| writer.puts "#{constant[:symbol]} ::" writer.write_description constant[:comment], false, " ", " " end writer.puts "", "@method _enum_#{ruby_name}_", "@return [Symbol]", "@scope class" end writer.puts "enum :#{ruby_name}, [" writer.indent do writer.write_array @constants, "," do |constant| "#{constant[:symbol]}, #{constant[:value]}" end end writer.puts "]", "" end