Class: CLang
- Inherits:
-
Object
show all
- Defined in:
- lib/dsl/clang/clang.rb
Instance Method Summary
collapse
Constructor Details
#initialize ⇒ CLang
Returns a new instance of CLang.
3
4
5
6
7
|
# File 'lib/dsl/clang/clang.rb', line 3
def initialize
@vars = {}
@types = {}
@sizes = {}
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args) ⇒ Object
Acceso a variables mediante method_missing
75
76
77
78
79
80
|
# File 'lib/dsl/clang/clang.rb', line 75
def method_missing(name, *args)
return name if @vars[name].nil?
return name if @vars[name] == :null
@vars[name]
end
|
Instance Method Details
#char(varname, size = 1) ⇒ Object
21
22
23
24
|
# File 'lib/dsl/clang/clang.rb', line 21
def char(varname, size=1)
@types[varname] = :char
@sizes[varname] = size
end
|
#chars(varname) ⇒ Object
26
27
28
29
|
# File 'lib/dsl/clang/clang.rb', line 26
def chars(varname)
@types[varname] = :chars
@sizes[varname] = 255
end
|
#debug ⇒ Object
36
37
38
39
40
41
|
# File 'lib/dsl/clang/clang.rb', line 36
def debug
puts "vars:"
@vars.each { |k,v| puts "- #{k}=#{v}" }
puts "types:"
@types.each { |k,v| puts "- #{k}=#{v}" }
end
|
#fgets(varname, stdin) ⇒ Object
53
54
55
56
57
58
59
|
# File 'lib/dsl/clang/clang.rb', line 53
def fgets(varname, stdin)
if varname.is_a? Symbol
@vars[varname] = gets.chomp
else
varname = gets.chomp
end
end
|
#fgets2(stdin) ⇒ Object
49
50
51
|
# File 'lib/dsl/clang/clang.rb', line 49
def fgets2(stdin)
gets.chomp
end
|
#for_i(range) ⇒ Object
43
44
45
46
47
|
# File 'lib/dsl/clang/clang.rb', line 43
def for_i(range)
for i in range do
yield
end
end
|
#int(varname) ⇒ Object
31
32
33
34
|
# File 'lib/dsl/clang/clang.rb', line 31
def int(varname)
@types[varname] = :int
@sizes[varname] = 2
end
|
#printf(*args) ⇒ Object
61
62
63
64
65
66
67
68
|
# File 'lib/dsl/clang/clang.rb', line 61
def printf(*args)
if (args.count == 1) && args.is_a?(Array)
print args.first
else
format = args.shift
print format % args
end
end
|
#run(block) ⇒ Object
9
10
11
|
# File 'lib/dsl/clang/clang.rb', line 9
def run(block)
instance_eval(&block)
end
|
#sizeof(varname) ⇒ Object
70
71
72
|
# File 'lib/dsl/clang/clang.rb', line 70
def sizeof(varname)
@sizes[varname.to_sym] || 0
end
|