blob: 725428efe93228c4e1685fe90deb235db4b76d43 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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
|
module YARD::MRuby::CodeObjects
# A FunctionObject represents a MRuby C API function declaration inside a header inside an include directory
class FunctionObject < HeaderBaseObject
ParameterType = Struct.new(:type,:name)
# Returns the list of parameters parsed out of the method signature
# with their default values.
#
# @return [Array<Array(String, String)>] a list of parameter names followed
# by their default values (or nil)
attr_accessor :parameters
def initialize(header, name, &block)
super
end
def attr_info
nil
end
def scope
''
end
def return_type
@return_type
end
def return_type=(type)
@return_type = (type == 'void' ? nil : type)
end
# Returns the list of parameters parsed out of the method signature
# with their default values.
#
# @return [Array<Array(String, String)>] a list of parameter names followed
# by their default values (or nil)
def parameters
parameter_types.map{|t| [(t.type == '...' ? '...' : t.name), nil] }
end
def parameter_types
@parameter_types || []
end
def parse_parameter_types(parameters)
@parameter_types = []
return if parameters.match /^\s*void\s*$/
parameters.split(',').each do |parameter|
parameter.scan(/((?:const\s+)?(?:struct\s+)?(?:\w+|\.\.\.)(?:\s*\*)?)\s*(\w+)?/) do |type,name|
@parameter_types << ParameterType.new(type,name)
end
end
end
# Returns all alias names of the object
# @return [Array<Symbol>] the alias names
def aliases
list = []
return list unless namespace.is_a?(HeaderObject)
namespace.aliases.each do |o, aname|
list << o if aname == name && o.scope == scope
end
list
end
end
end
|