Class: Reggae::Visitor

Inherits:
Object
  • Object
show all
Defined in:
lib/reggae/visitor.rb

Direct Known Subclasses

PrettyPrinter, VHDLGenerator

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Visitor

Returns a new instance of Visitor.



7
8
9
# File 'lib/reggae/visitor.rb', line 7

def initialize options={}
  @indent=-2
end

Instance Method Details

#decObject



16
17
18
# File 'lib/reggae/visitor.rb', line 16

def dec
  @indent-=2
end

#inc(str = nil) ⇒ Object



11
12
13
14
# File 'lib/reggae/visitor.rb', line 11

def inc str=nil
  say(str) if str
  @indent+=2
end

#say(str) ⇒ Object



20
21
22
# File 'lib/reggae/visitor.rb', line 20

def say str
  puts " "*@indent+str.to_s if @verbose
end

#visit(mm) ⇒ Object



24
25
26
27
28
# File 'lib/reggae/visitor.rb', line 24

def visit mm
  inc
  mm.accept(self,nil)
  dec
end

#visitBit(bit, args = nil) ⇒ Object



88
89
90
91
92
93
94
95
# File 'lib/reggae/visitor.rb', line 88

def visitBit bit,args=nil
  inc "Bit"
  say bit.position
  say bit.name
  say bit.purpose
  say bit.toggle
  dec
end

#visitBitfield(bitfield, args = nil) ⇒ Object



97
98
99
100
101
102
103
104
# File 'lib/reggae/visitor.rb', line 97

def visitBitfield bitfield,args=nil
  inc "Bitfield"
  say bitfield.position
  say bitfield.name
  say bitfield.purpose
  say bitfield.toggle
  dec
end

#visitBus(bus, args = nil) ⇒ Object



45
46
47
48
49
50
51
# File 'lib/reggae/visitor.rb', line 45

def visitBus bus,args=nil
  inc "Bus"
  say bus.frequency
  say bus.address_size
  say bus.data_size
  dec
end

#visitMemoryMap(mm, args = nil) ⇒ Object



30
31
32
33
34
35
36
# File 'lib/reggae/visitor.rb', line 30

def visitMemoryMap mm,args=nil
  inc "MemoryMap"
  say mm.name
  mm.parameters.accept(self,nil)
  mm.zones.each{|zone| zone.accept(self,nil)}
  dec
end

#visitParameters(params, args = nil) ⇒ Object



38
39
40
41
42
43
# File 'lib/reggae/visitor.rb', line 38

def visitParameters params,args=nil
  inc "Parameters"
  params.bus.accept(self,nil)
  params.range.accept(self,nil)
  dec
end

#visitRange(range, args = nil) ⇒ Object



53
54
55
56
57
58
# File 'lib/reggae/visitor.rb', line 53

def visitRange range,args=nil
  inc "Range"
  say range.from
  say range.to
  dec
end

#visitRegister(reg, args = nil) ⇒ Object



77
78
79
80
81
82
83
84
85
86
# File 'lib/reggae/visitor.rb', line 77

def visitRegister reg,args=nil
  inc "Register"
  say reg.name
  say reg.address
  say reg.init
  reg.bits.each{|bit| bit.accept(self)}
  reg.bitfields.each{|bitfield| bitfield.accept(self)}

  dec
end

#visitSubzone(zone, args = nil) ⇒ Object



69
70
71
72
73
74
75
# File 'lib/reggae/visitor.rb', line 69

def visitSubzone zone,args=nil
  inc "Subzone"
  say zone.name
  zone.range.accept(self)
  zone.registers.each{|reg| reg.accept(self)}
  dec
end

#visitZone(zone, args = nil) ⇒ Object



60
61
62
63
64
65
66
67
# File 'lib/reggae/visitor.rb', line 60

def visitZone zone,args=nil
  inc "Zone"
  say zone.name
  zone.range.accept(self)
  zone.registers.each{|reg| reg.accept(self)}
  zone.subzones.each{|subzone| subzone.accept(self)}
  dec
end