Class: BiteScript::ASM::ClassMirror::Builder

Inherits:
BiteScript::ASM::ClassVisitor
  • Object
show all
Includes:
BiteScript::ASM::ClassVisitor, FieldVisitor, MethodVisitor
Defined in:
lib/bitescript/mirror.rb,
lib/bitescript/asm3/mirror.rb

Instance Method Summary collapse

Constructor Details

#initializeBuilder

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

#mirrorObject



342
343
344
# File 'lib/bitescript/mirror.rb', line 342

def mirror
  @class
end

#to_sObject



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

#visitEndObject



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