class Genprovider::ClassInfo
Public Class Methods
new(c, out)
click to toggle source
# File lib/genprovider/classinfo.rb, line 10 def initialize c, out out.comment.comment "Class information for #{c.name}" out.comment.comment "Generated by 'genprovider' for use with ruby-sfcc" out.puts out.puts "require 'rubygems'" out.puts "require 'cim'" s = c while s.parent s = s.parent out.puts "require 'mof/#{s.name}'" end out.puts s = c.superclass ? " < #{c.superclass}" : "" # module MOF out.puts "module MOF" out.inc # class <Class> out.puts "class #{c.name}#{s}" out.inc # methods method_count = 0 s = nil c.features.each do |f| next unless f.method? if method_count == 0 out.puts "METHODS = {" out.inc end if method_count > 0 out.puts "#{s}," if s s = nil end s = "#{f.name.inspect} => { :type => #{f.type.to_sym.inspect}" unless f.parameters.empty? s << ", :parameters => {" have_in = 0 f.parameters.each do |p| next if p.out? # non-out parameters are input if have_in == 0 s << ":in => [" else s << ", " end s << "#{p.name.inspect}, #{p.type.to_sym.inspect}" have_in += 1 end s << "]" if have_in > 0 have_out = 0 f.parameters.each do |p| next unless p.out? # output parameters must have explicit qualifier if have_out == 0 s << ", " if have_in > 0 s << ":out => [" else s << ", " end s << "#{p.name.inspect}, #{p.type.to_sym.inspect}" have_out += 1 end s << "]" if have_out > 0 s << "}" end s << " }" method_count += 1 end if method_count > 0 out.puts s out.dec.puts "}" end out.end # class out.end # module end