Class: EasySwig::ApiNamespace

Inherits:
ApiNode
  • Object
show all
Defined in:
lib/apinodes/api_namespace.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) ⇒ ApiNamespace

Returns a new instance of ApiNamespace.



20
21
22
23
24
25
26
27
28
29
30
# File 'lib/apinodes/api_namespace.rb', line 20

def initialize(hash)
	super(hash)
	@api_classes=[]
	@api_variables=[]
	@api_functions=[]
	@api_enums=[]
	@ignored_functions=[]
	@ignored_variables=[]
	@ignored_classes=[]
	@ignored_enums=[]
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.



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

def api_classes
  @api_classes
end

#api_enumsObject

Returns the value of attribute api_enums.



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

def api_enums
  @api_enums
end

#api_functionsObject

Returns the value of attribute api_functions.



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

def api_functions
  @api_functions
end

#api_variablesObject

Returns the value of attribute api_variables.



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

def api_variables
  @api_variables
end

#friend_supportObject

Returns the value of attribute friend_support.



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

def friend_support
  @friend_support
end

#ignored_classesObject

Returns the value of attribute ignored_classes.



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

def ignored_classes
  @ignored_classes
end

#ignored_enumsObject

Returns the value of attribute ignored_enums.



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

def ignored_enums
  @ignored_enums
end

#ignored_functionsObject

Returns the value of attribute ignored_functions.



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

def ignored_functions
  @ignored_functions
end

#ignored_variablesObject

Returns the value of attribute ignored_variables.



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

def ignored_variables
  @ignored_variables
end

#nested_supportObject

Returns the value of attribute nested_support.



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

def nested_support
  @nested_support
end

#wrap_classesObject

Returns the value of attribute wrap_classes.



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

def wrap_classes
  @wrap_classes
end

#wrap_enumsObject

Returns the value of attribute wrap_enums.



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

def wrap_enums
  @wrap_enums
end

#wrap_functionsObject

Returns the value of attribute wrap_functions.



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

def wrap_functions
  @wrap_functions
end

#wrap_variablesObject

Returns the value of attribute wrap_variables.



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

def wrap_variables
  @wrap_variables
end

Instance Method Details

#api_nodesObject



32
33
34
35
# File 'lib/apinodes/api_namespace.rb', line 32

def api_nodes
	return [self] if @api_classes.empty? # Only if there are no classes in this namespace
	@api_classes
end

#assoc_with_node(ns) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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
93
94
95
96
97
98
99
100
101
# File 'lib/apinodes/api_namespace.rb', line 37

def assoc_with_node(ns)
	super(ns)
	all_functions = ns.functions
	all_functions.reject!{ |f| f.basename == f.basename.upcase }
	all_classes = ns.classes + ns.structs
	all_enums = ns.enums
	all_variables = ns.variables
	ign_functions = @ignored_functions.map{|i| i.basename}
	ign_classes = @ignored_classes.map{|i| i.basename}
	ign_enums = @ignored_enums.map{|i| i.basename}
	ign_variables = @ignored_variables.map{|i| i.basename}

	if @wrap_functions
		all_functions.each { |f|
			if not ign_functions.include?(f.basename)
				hash = {'features' => @features, 'node_type' => 'function', 'parent' => self, 'basename' => f.basename }
				@api_functions << ApiFunction.new(hash).assoc_with_node(f)
			end
		}
	else
		assoc_functions(all_functions, @api_functions, @ignored_functions)
	end

	if @wrap_classes
		all_classes.each { |c|
			if not ign_classes.include?(c.basename)
				hash = {'wrap_methods' => 'x',
					'wrap_attributes' => 'x',
					'wrap_enums' => 'x',
					'wrap_innerclasses' => 'x',
					'node_type' => 'class',
					'nested_support' => @nested_support,
					'friend_support' => @friend_support,
					'features' => @features,
					'parent' => self,
					'basename' => c.basename }
				@api_classes << ApiClass.new(hash).assoc_with_node(c)
			end
		}
	else
		assoc_members(all_classes, @api_classes, @ignored_classes)
	end
	
	if @wrap_variables
		all_variables.each { |v|
			if not ign_variables.include?(v.basename)
				hash = {'features' => @features, 'node_type' => 'variable', 'parent' => self, 'basename' => v.basename}
				@api_variables << ApiVariable.new(hash).assoc_with_node(v)
			end
		}
	else
		assoc_members(all_variables, @api_variables, @ignored_variables)
	end
	if @wrap_enums
		all_enums.each { |e|
			if not ign_enums.include?(e.basename)
				hash = {'features' => @features, 'node_type' => 'enum', 'parent' => self, 'basename' => e.basename }
				@api_enums << ApiEnum.new(hash).assoc_with_node(e)
			end
		}
	else
		assoc_members(all_enums, @api_enums, @ignored_enums)
	end
	self
end