Class: BiteScript::ASM::ClassMirror::Builder
- Inherits:
-
BiteScript::ASM::ClassVisitor
- Object
- BiteScript::ASM::ClassVisitor
- BiteScript::ASM::ClassMirror::Builder
- Includes:
- BiteScript::ASM::ClassVisitor, FieldVisitor, MethodVisitor
- Defined in:
- lib/bitescript/mirror.rb,
lib/bitescript/asm3/mirror.rb
Instance Method Summary collapse
-
#initialize ⇒ Builder
constructor
A new instance of Builder.
- #mirror ⇒ Object
- #to_s ⇒ Object
- #visit(version, access, name, signature, super_name, interfaces) ⇒ Object
- #visitAnnotation(desc, visible) ⇒ Object
- #visitAnnotationDefault(*args) ⇒ Object
- #visitAttribute(attribute) ⇒ Object
- #visitEnd ⇒ Object
- #visitField(flags, name, desc, signature, value) ⇒ Object
- #visitInnerClass(name, outer, inner, access) ⇒ Object
- #visitMethod(flags, name, desc, signature, exceptions) ⇒ Object
- #visitOuterClass(owner, name, desc) ⇒ Object
- #visitParameterAnnotation(paramIndex, desc, visible) ⇒ Object
- #visitSource(source, debug) ⇒ Object
Constructor Details
#initialize ⇒ Builder
Returns a new instance of Builder.
327 328 329 |
# File 'lib/bitescript/mirror.rb', line 327 def initialize super(BiteScript::ASM::Opcodes::ASM4) end |
Instance Method Details
#mirror ⇒ Object
342 343 344 |
# File 'lib/bitescript/mirror.rb', line 342 def mirror @class end |
#to_s ⇒ Object
381 382 383 |
# File 'lib/bitescript/mirror.rb', line 381 def to_s "ClassMirror(#{type.class_name})" end |
#visit(version, access, name, signature, super_name, interfaces) ⇒ Object
331 332 333 334 335 336 337 338 339 340 |
# File 'lib/bitescript/mirror.rb', line 331 def visit(version, access, name, signature, super_name, interfaces) @current = @class = ClassMirror.new(Type.getObjectType(name), access) @class.superclass = Type.getObjectType(super_name) if super_name @class.signature = SignatureMirror.new(signature) if signature if interfaces interfaces.each do |i| @class.interfaces << Type.getObjectType(i) end end end |
#visitAnnotation(desc, visible) ⇒ Object
352 353 354 355 356 |
# File 'lib/bitescript/mirror.rb', line 352 def visitAnnotation(desc, visible) builder = AnnotationMirror::Builder.new(desc, visible) @current.addAnnotation(builder.annotation) builder end |
#visitAnnotationDefault(*args) ⇒ Object
379 |
# File 'lib/bitescript/mirror.rb', line 379 def visitAnnotationDefault(*args);end |
#visitAttribute(attribute) ⇒ Object
348 |
# File 'lib/bitescript/mirror.rb', line 348 def visitAttribute(attribute); end |
#visitEnd ⇒ Object
350 |
# File 'lib/bitescript/mirror.rb', line 350 def visitEnd; end |
#visitField(flags, name, desc, signature, value) ⇒ Object
360 361 362 363 364 365 |
# File 'lib/bitescript/mirror.rb', line 360 def visitField(flags, name, desc, signature, value) signature = GenericTypeBuilder.read(signature) mirror = FieldMirror.new(@class.type, flags, name, Type.getType(desc), signature, value) @class.addField(mirror) FieldMirror::Builder.new(mirror) end |
#visitInnerClass(name, outer, inner, access) ⇒ Object
349 |
# File 'lib/bitescript/mirror.rb', line 349 def visitInnerClass(name, outer, inner, access); end |
#visitMethod(flags, name, desc, signature, exceptions) ⇒ Object
367 368 369 370 371 372 373 374 375 376 377 |
# File 'lib/bitescript/mirror.rb', line 367 def visitMethod(flags, name, desc, signature, exceptions) return_type = Type.getReturnType(desc) parameters = Type.getArgumentTypes(desc).to_a exceptions = (exceptions || []).map {|e| Type.getObjectType(e)} signature = SignatureMirror.new(signature) if signature mirror = MethodMirror.new( @class.type, flags, return_type, name, parameters, exceptions, signature) @class.addMethod(mirror) # TODO parameter annotations, default value, etc. MethodMirror::Builder.new(mirror) end |
#visitOuterClass(owner, name, desc) ⇒ Object
347 |
# File 'lib/bitescript/mirror.rb', line 347 def visitOuterClass(owner, name, desc); end |
#visitParameterAnnotation(paramIndex, desc, visible) ⇒ Object
358 |
# File 'lib/bitescript/mirror.rb', line 358 def visitParameterAnnotation(paramIndex, desc, visible);end |
#visitSource(source, debug) ⇒ Object
346 |
# File 'lib/bitescript/mirror.rb', line 346 def visitSource(source, debug); end |