Class: EasySwig::Generator

Inherits:
Object
  • Object
show all
Includes:
Util
Defined in:
lib/generators/generator.rb

Direct Known Subclasses

Csharp::CsharpGenerator

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

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_generatorObject

Returns the value of attribute class_generator.



7
8
9
# File 'lib/generators/generator.rb', line 7

def class_generator
  @class_generator
end

#hfile_generatorObject

Returns the value of attribute hfile_generator.



8
9
10
# File 'lib/generators/generator.rb', line 8

def hfile_generator
  @hfile_generator
end

#namespace_generatorObject

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

#generateObject



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