Class: EasySwig::IncFile

Inherits:
ApiNode show all
Defined in:
lib/apinodes/inc_file.rb

Instance Attribute Summary collapse

Attributes inherited from ApiNode

#basename, #directory, #features, #header_file, #ignore, #match, #node_type, #parent, #target_name, #wrapped_node

Instance Method Summary collapse

Methods inherited from ApiNode

#assoc_functions, #assoc_members, #fullname, #method_missing, #to_str

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(hash) ⇒ IncFile

Returns a new instance of IncFile.



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/apinodes/inc_file.rb', line 21

def initialize(hash)
  super(hash)
  @api_namespaces=[]
  @ignored_namespaces=[]
  @api_classes=[]
  @ignored_classes=[]
  @api_enums=[]
  @ignored_enums=[]
  @api_functions=[]
  @ignored_functions=[]
  @api_variables=[]
  @ignored_variables=[]
  @wrap_functions = true
  @wrap_variables = true
  @wrap_enums = true
  @added_nodes = {}
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class EasySwig::ApiNode

Instance Attribute Details

#api_classesObject

Returns the value of attribute api_classes.



7
8
9
# File 'lib/apinodes/inc_file.rb', line 7

def api_classes
  @api_classes
end

#api_enumsObject

Returns the value of attribute api_enums.



9
10
11
# File 'lib/apinodes/inc_file.rb', line 9

def api_enums
  @api_enums
end

#api_functionsObject

Returns the value of attribute api_functions.



11
12
13
# File 'lib/apinodes/inc_file.rb', line 11

def api_functions
  @api_functions
end

#api_namespacesObject

Returns the value of attribute api_namespaces.



5
6
7
# File 'lib/apinodes/inc_file.rb', line 5

def api_namespaces
  @api_namespaces
end

#api_variablesObject

Returns the value of attribute api_variables.



13
14
15
# File 'lib/apinodes/inc_file.rb', line 13

def api_variables
  @api_variables
end

#ignored_classesObject

Returns the value of attribute ignored_classes.



8
9
10
# File 'lib/apinodes/inc_file.rb', line 8

def ignored_classes
  @ignored_classes
end

#ignored_enumsObject

Returns the value of attribute ignored_enums.



10
11
12
# File 'lib/apinodes/inc_file.rb', line 10

def ignored_enums
  @ignored_enums
end

#ignored_functionsObject

Returns the value of attribute ignored_functions.



12
13
14
# File 'lib/apinodes/inc_file.rb', line 12

def ignored_functions
  @ignored_functions
end

#ignored_namespacesObject

Returns the value of attribute ignored_namespaces.



6
7
8
# File 'lib/apinodes/inc_file.rb', line 6

def ignored_namespaces
  @ignored_namespaces
end

#ignored_variablesObject

Returns the value of attribute ignored_variables.



14
15
16
# File 'lib/apinodes/inc_file.rb', line 14

def ignored_variables
  @ignored_variables
end

#num_includedObject

Returns the value of attribute num_included.



15
16
17
# File 'lib/apinodes/inc_file.rb', line 15

def num_included
  @num_included
end

#num_includingObject

Returns the value of attribute num_including.



16
17
18
# File 'lib/apinodes/inc_file.rb', line 16

def num_including
  @num_including
end

#wrap_enumsObject

Returns the value of attribute wrap_enums.



19
20
21
# File 'lib/apinodes/inc_file.rb', line 19

def wrap_enums
  @wrap_enums
end

#wrap_functionsObject

Returns the value of attribute wrap_functions.



17
18
19
# File 'lib/apinodes/inc_file.rb', line 17

def wrap_functions
  @wrap_functions
end

#wrap_variablesObject

Returns the value of attribute wrap_variables.



18
19
20
# File 'lib/apinodes/inc_file.rb', line 18

def wrap_variables
  @wrap_variables
end

Instance Method Details

#<=>(other) ⇒ Object



39
40
41
42
43
44
45
46
# File 'lib/apinodes/inc_file.rb', line 39

def <=> other
  if @num_including == 0 && other.num_including == 0 
    return(@num_included - @num_including)  <=> (other.num_included- other.num_including)
  end
  return 1 if @num_including == 0
  return -1 if other.num_including == 0
  return(@num_included - @num_including)  <=> (other.num_included- other.num_including)
end

#assoc_inner_node(api_node) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/apinodes/inc_file.rb', line 48

def assoc_inner_node(api_node)
	return if @added_nodes[api_node.wrapped_node]
  case api_node.node_type
    when "namespace"
      @api_namespaces << api_node
    when "function"
      @api_functions << api_node
    when "variable"
      @api_variables << api_node
    when "enum"
      @api_enums << api_node
    when "class"
      @api_classes << api_node
  end
	@added_nodes[api_node.wrapped_node] = 1
end

#assoc_with_node(node) ⇒ Object



65
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
# File 'lib/apinodes/inc_file.rb', line 65

def assoc_with_node(node)
  super(node)
  @num_included = files_included.size
  @num_including = files_including.size
  all_functions = node.functions
			all_enums = node.enums
			all_variables = node.variables
			
			if @wrap_functions
all_functions.each { |f|
		hash = {'features' => @features, 'node_type' => 'function', 'parent' => self, 'basename' => f.basename }
		@api_functions << ApiFunction.new(hash).assoc_with_node(f)
}
			end
			if @wrap_variables
all_variables.each { |v|
		hash = {'features' => @features, 'node_type' => 'variable', 'parent' => self, 'basename' => v.basename}
		@api_variables << ApiVariable.new(hash).assoc_with_node(v)
}
			end
			if @wrap_enums
all_enums.each { |e|
		hash = {'features' => @features, 'node_type' => 'enum', 'parent' => self, 'basename' => e.basename }
		@api_enums << ApiEnum.new(hash).assoc_with_node(e)
}
			end
  self
end

#ignore_inner_nodesObject



94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/apinodes/inc_file.rb', line 94

def ignore_inner_nodes
  aux = @api_namespaces.map { |n| n.wrapped_node }
  @ignored_namespaces = namespaces.select { |ns| aux.include?(ns) == false }
  aux = @api_functions.map { |n| n.wrapped_node }
  @ignored_functions = functions.select { |func| aux.include?(func) == false }
  aux = @api_variables.map { |n| n.wrapped_node }
  @ignored_variables = variables.select { |var| aux.include?(var) == false }
  aux = @api_enums.map { |n| n.wrapped_node }
  @ignored_enums = enums.select { |enum| aux.include?(enum) == false }
  aux = @api_classes.map { |n| n.wrapped_node }
  file_classes = classes + structs
  del = []
  file_classes.each { |file_cls|
    @api_classes.each { |api_cls|
      if api_cls.api_innerclasses.map { |n| n.wrapped_node }.include?(file_cls)
      del << file_cls
      end
    }
  }
  @ignored_classes = file_classes.select { |cls| !aux.include?(cls) && !del.include?(cls) }
  @ignored_classes
end