Method: EasySwig::GeneratorUtil#_process_type

Defined in:
lib/generators/generator_util.rb

#_process_type(type, klass) ⇒ Object

Raises:

  • (ArgumentError)


66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/generators/generator_util.rb', line 66

def _process_type(type, klass)
  raise ArgumentError if type.nil?
  cached_type = @types[type.escaped_name]
  return cached_type unless cached_type.nil?
  # Don't instantiate templates for functions with type params
  return nil if is_template_param?(type.escaped_name, klass)
  
  typename = type.escaped_name.dup
  if is_template?(typename)
     nested_typenames_for(typename).each{ |t|
       nested_type = Doxyparser::Type.new({ name: t, dir: ""})
      typename.gsub!(t, _process_type(nested_type, klass))
    }
    expanded_typename = typename 
  else
    lookedup = lookup_typename(type, klass)  
    raise ArgumentError if lookedup.nil?   
    if is_template?(lookedup) # Repeat recursively
      lookedup_escaped = escape_const_ref_ptr(lookedup)
      lookedup_type = Doxyparser::Type.new({ name: lookedup_escaped, dir: ""})
      expanded_typename = lookedup.gsub!(lookedup_escaped, _process_type(lookedup_type, klass))
    else
      expanded_typename = lookedup
    end
  end
  escaped_typename = escape_const_ref_ptr(expanded_typename)
  unless @all_types.has_key?(escaped_typename)
    @all_types[escaped_typename] = 1
    @types[type.name] = escaped_typename
  end
      return expanded_typename 
end