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.



293
294
295
# File 'lib/bitescript/mirror.rb', line 293

def initialize
  super(BiteScript::ASM::Opcodes::ASM4)
end

Instance Method Details

#mirrorObject



308
309
310
# File 'lib/bitescript/mirror.rb', line 308

def mirror
  @class
end

#to_sObject



345
346
347
# File 'lib/bitescript/mirror.rb', line 345

def to_s
  "ClassMirror(#{type.class_name})"
end

#visit(version, access, name, signature, super_name, interfaces) ⇒ Object



297
298
299
300
301
302
303
304
305
306
# File 'lib/bitescript/mirror.rb', line 297

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



318
319
320
321
322
# File 'lib/bitescript/mirror.rb', line 318

def visitAnnotation(desc, visible)
  builder = AnnotationMirror::Builder.new(desc, visible)
  @current.addAnnotation(builder.annotation)
  builder
end

#visitAnnotationDefault(*args) ⇒ Object



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

def visitAnnotationDefault(*args);end

#visitAttribute(attribute) ⇒ Object



314
# File 'lib/bitescript/mirror.rb', line 314

def visitAttribute(attribute); end

#visitEndObject



316
# File 'lib/bitescript/mirror.rb', line 316

def visitEnd; end

#visitField(flags, name, desc, signature, value) ⇒ Object



324
325
326
327
328
329
# File 'lib/bitescript/mirror.rb', line 324

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



315
# File 'lib/bitescript/mirror.rb', line 315

def visitInnerClass(name, outer, inner, access); end

#visitMethod(flags, name, desc, signature, exceptions) ⇒ Object



331
332
333
334
335
336
337
338
339
340
341
# File 'lib/bitescript/mirror.rb', line 331

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



313
# File 'lib/bitescript/mirror.rb', line 313

def visitOuterClass(owner, name, desc); end

#visitSource(source, debug) ⇒ Object



312
# File 'lib/bitescript/mirror.rb', line 312

def visitSource(source, debug); end