Exemple #1
0
 /// <summary>
 /// Gets all methods from superclasses/interfaces this method overrides.
 /// </summary>
 public IEnumerable <MethodDefinition> Overrides()
 {
     if (overrides == null)
     {
         var       paramsDescriptor = Descriptors.StripMethodReturnType(descriptor);
         ClassFile baseClass;
         var       tmpOverrides = new List <MethodDefinition>();
         if (DeclaringClass.TryGetSuperClass(out baseClass))
         {
             while (baseClass != null)
             {
                 if (baseClass.IsPublic)
                 {
                     tmpOverrides.AddRange(baseClass.Methods.Where(x => (x.Name == Name) && (Descriptors.StripMethodReturnType(x.descriptor) == paramsDescriptor)));
                 }
                 if (baseClass.ClassName == "java/lang/Object")
                 {
                     break;
                 }
                 if (!baseClass.TryGetSuperClass(out baseClass))
                 {
                     break;
                 }
             }
         }
         overrides = tmpOverrides;
     }
     return(overrides);
 }
Exemple #2
0
 public FieldDefinition(ClassFile cf, FieldAccessFlags accessFlags, string name, string descriptor, string signature)
     : base(cf, name)
 {
     this.accessFlags = accessFlags;
     this.descriptor  = descriptor;
     fieldType        = Descriptors.ParseFieldType(descriptor);
     Signature        = (signature != null) ? Signatures.ParseFieldTypeSignature(signature) : fieldType;
 }
Exemple #3
0
 public MethodDefinition(ClassFile cf, MethodAccessFlags accessFlags, string name, string descriptor, string signature)
     : base(cf, name)
 {
     this.accessFlags = accessFlags;
     this.descriptor  = descriptor;
     methodDescriptor = Descriptors.ParseMethodDescriptor(descriptor);
     this.signature   = (signature != null) ? Signatures.ParseMethodSignature(signature) : null;
 }
        /// <summary>
        /// Read a LocalVariableTable attribute
        /// </summary>
        private LocalVariableTableAttribute ReadLocalVariableTableAttribute(ConstantPool cp)
        {
            var result = new LocalVariableTableAttribute();
            var count  = stream.ReadU2();

            for (var i = 0; i < count; i++)
            {
                var startPC         = stream.ReadU2();
                var length          = stream.ReadU2();
                var nameIndex       = stream.ReadU2();
                var name            = cp.GetEntry <ConstantPoolUtf8>(nameIndex).Value;
                var descriptorIndex = stream.ReadU2();
                var descriptor      = cp.GetEntry <ConstantPoolUtf8>(descriptorIndex).Value;
                var variableType    = Descriptors.ParseFieldType(descriptor);
                var index           = stream.ReadU2();
                result.Variables.Add(new LocalVariable(startPC, length, name, variableType, index));
            }
            return(result);
        }