Class: EasySwig::Generator
- Inherits:
-
Object
- Object
- EasySwig::Generator
- Includes:
- Util
- Defined in:
- lib/generators/generator.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#class_generator ⇒ Object
Returns the value of attribute class_generator.
-
#hfile_generator ⇒ Object
Returns the value of attribute hfile_generator.
-
#namespace_generator ⇒ Object
Returns the value of attribute namespace_generator.
Class Method Summary collapse
Instance Method Summary collapse
- #generate ⇒ Object
-
#initialize(hfiles, api_namespace, config, log) ⇒ Generator
constructor
A new instance of Generator.
Methods included from Util
#del_prefix_class, #escape_all, #escape_const_ref_ptr, #escape_template, #gen_dir, #home_dir, #is_primitive?, #is_std?, #lib_dir, #logs_dir, #output_dir, #read_file, #rename_files, #swig_dir, #write_file
Constructor Details
#initialize(hfiles, api_namespace, config, log) ⇒ Generator
Returns a new instance of Generator.
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/generators/generator.rb', line 22 def initialize(hfiles, api_namespace, config, log) @config = config @gen_dir = @config.generate_dir + '/' + @config.lang @log = log @hfiles = hfiles @api_namespace = api_namespace @target_name = api_namespace.target_name @native_name = api_namespace.basename @native_gen_dir = "#{@gen_dir}/#{@native_name}" @all_types = {} @all_innerclasses = {} @all_friends = {} if Dir.exists?(@native_gen_dir) FileUtils.rm_r @native_gen_dir end FileUtils.mkdir_p @native_gen_dir @log.info { "Created Generator directory for #{@native_name} in #{@native_gen_dir}" } init_generators end |
Instance Attribute Details
#class_generator ⇒ Object
Returns the value of attribute class_generator.
7 8 9 |
# File 'lib/generators/generator.rb', line 7 def class_generator @class_generator end |
#hfile_generator ⇒ Object
Returns the value of attribute hfile_generator.
8 9 10 |
# File 'lib/generators/generator.rb', line 8 def hfile_generator @hfile_generator end |
#namespace_generator ⇒ Object
Returns the value of attribute namespace_generator.
6 7 8 |
# File 'lib/generators/generator.rb', line 6 def namespace_generator @namespace_generator end |
Class Method Details
.create_instance(hfiles, api_namespace, config, log) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/generators/generator.rb', line 10 def self.create_instance(hfiles, api_namespace, config, log) ret = case config.lang when 'csharp' EasySwig::Csharp::CsharpGenerator.new(hfiles, api_namespace, config, log) when 'java' EasySwig::Java::JavaGenerator.new(hfiles, api_namespace, config, log) else EasySwig::Generator.new(hfiles, api_namespace, config, log) end ret end |
Instance Method Details
#generate ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/generators/generator.rb', line 44 def generate @log.info { 'Generating interface files...' } namespace_file = <<-IFILE.escape_heredoc %module #{@target_name} %include "standard_header.i" %include "#{@config.custom_file}" IFILE namespace_file << @namespace_generator.new(@api_namespace).generate() @hfiles.each { |hfile| generate_ifile(hfile) ifile = to_ifile(hfile.name) namespace_file << %Q{%include "#{@native_name}/#{ifile}"\n} } write_file("#{@gen_dir}/#{namespace_filename(@native_name)}.i", namespace_file) @log.info { "Interface file #{@gen_dir}/#{namespace_filename(@native_name)}.i created" } namespace_filename(@native_name) end |