Exemple #1
0
 public MethodInfo(JavaClass @class, MethodAccessFlags accessFlags, string name, string descriptor, IDictionary <string, AttributeBase> attributes)
     : base(@class, name, descriptor, attributes)
 {
     this.AccessFlags = accessFlags;
     this.Signature   = JVMdotNET.Core.ClassFile.Signature.Signature.ParseMethodSignature(descriptor);
     this.Key         = Name + Descriptor;
 }
Exemple #2
0
 /// <summary>
 /// Creates a new <see cref="JvmMethodInfo"/>.
 /// </summary>
 /// <param name="accessFlags">The <see cref="MethodAccessFlags"/>.</param>
 /// <param name="nameIndex">The index into the <see cref="ConstantPool"/> representing the name of the method.</param>
 /// <param name="descriptorIndex">The index into the <see cref="ConstantPool"/> representing the signature of the method.</param>
 /// <param name="attributes">All of the method's attributes.</param>
 public JvmMethodInfo(MethodAccessFlags accessFlags, ushort nameIndex, ushort descriptorIndex, IList <JvmAttribute> attributes)
 {
     AccessFlags     = accessFlags;
     NameIndex       = nameIndex;
     DescriptorIndex = descriptorIndex;
     Attributes      = attributes;
 }
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;
 }
Exemple #4
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;
 }
Exemple #5
0
        private MethodInfo LoadMethodInfo(BigEndianBinaryReader reader, JavaClass javaClass)
        {
            MethodAccessFlags flags      = (MethodAccessFlags)reader.ReadUInt16();
            string            name       = constantPool.GetItem <Utf8ConstantPoolItem>(reader.ReadUInt16()).String;
            string            descriptor = constantPool.GetItem <Utf8ConstantPoolItem>(reader.ReadUInt16()).String;

            var attributes = attributeLoader.Load(reader);

            return(new MethodInfo(javaClass, flags, name, descriptor, attributes));
        }
		static string GetMethodVisibility (MethodAccessFlags accessFlags)
		{
			if ((accessFlags & MethodAccessFlags.Public) != 0)
				return "public";
			if ((accessFlags & MethodAccessFlags.Protected) != 0)
				return "protected";
			if ((accessFlags & MethodAccessFlags.Private) != 0)
				return "private";
			return "";
		}
Exemple #7
0
        public void PersistentAccessFlags()
        {
            const MethodAccessFlags flags = MethodAccessFlags.Public | MethodAccessFlags.Static;

            var method = CreateDummyMethod();

            method.AccessFlags = flags;

            var newMethod = RebuildImageWithMethod(method);

            Assert.Equal(flags, newMethod.AccessFlags);
        }
Exemple #8
0
        public MethodInfo(ClassFile classFile, BigEndianBinaryReader reader) : base(classFile)
        {
            AccessFlags      = (MethodAccessFlags)reader.ReadUInt16();
            NameIndex        = reader.ReadUInt16();
            DescriptionIndex = reader.ReadUInt16();
            AttributesCount  = reader.ReadUInt16();
            Attributes       = new AttributeInfo[AttributesCount];

            for (int i = 0; i < AttributesCount; i++)
            {
                Attributes[i] = AttributeInfo.GetAttributeInfo(AttributeTarget.Method, classFile, reader);
            }
        }
Exemple #9
0
        static MethodAccessFlags SetVisibility(MethodAccessFlags existing, MethodAccessFlags newVisibility)
        {
            // First we need to remove any existing visibility flags,
            // without modifying other flags like Abstract
            existing = (existing ^ MethodAccessFlags.Public) & existing;
            existing = (existing ^ MethodAccessFlags.Protected) & existing;
            existing = (existing ^ MethodAccessFlags.Private) & existing;
            existing = (existing ^ MethodAccessFlags.Internal) & existing;

            existing |= newVisibility;

            return(existing);
        }
Exemple #10
0
 public NativeMethodInfo(JavaClass @class, MethodAccessFlags accessFlags, string name, string descriptor,
                         Func <JavaInstance, object[], RuntimeEnvironment, object> implementation)
     : base(@class, accessFlags | MethodAccessFlags.Native, name, descriptor, ClassDefaults.EmptyAttributes)
 {
     if (implementation == null)
     {
         this.Implementation = ClassDefaults.EmptyImplementation;
     }
     else
     {
         this.Implementation = implementation;
     }
 }
Exemple #11
0
 static string GetMethodVisibility(MethodAccessFlags accessFlags)
 {
     if ((accessFlags & MethodAccessFlags.Public) != 0)
     {
         return("public");
     }
     if ((accessFlags & MethodAccessFlags.Protected) != 0)
     {
         return("protected");
     }
     if ((accessFlags & MethodAccessFlags.Private) != 0)
     {
         return("private");
     }
     return("");
 }
        private string AccessFlagsAsString(MethodAccessFlags accessFlags)
        {
            string result = accessFlags.HasFlag(MethodAccessFlags.Public) ? "public " : string.Empty;

            result += accessFlags.HasFlag(MethodAccessFlags.Private) ? "private " : string.Empty;
            result += accessFlags.HasFlag(MethodAccessFlags.Protected) ? "protected " : string.Empty;
            result += accessFlags.HasFlag(MethodAccessFlags.Static) ? "static " : string.Empty;
            result += accessFlags.HasFlag(MethodAccessFlags.Final) ? "final " : string.Empty;
            result += accessFlags.HasFlag(MethodAccessFlags.Synchronized) ? "synchronized " : string.Empty;
            result += accessFlags.HasFlag(MethodAccessFlags.Bridge) ? "bridge " : string.Empty;
            result += accessFlags.HasFlag(MethodAccessFlags.VarArgs) ? "varargs " : string.Empty;
            result += accessFlags.HasFlag(MethodAccessFlags.Native) ? "native " : string.Empty;
            result += accessFlags.HasFlag(MethodAccessFlags.Abstract) ? "abstract " : string.Empty;
            result += accessFlags.HasFlag(MethodAccessFlags.Strict) ? "strict " : string.Empty;
            result += accessFlags.HasFlag(MethodAccessFlags.Synthetic) ? "synthetic " : string.Empty;

            return(result.Trim());
        }
 static string GetMethodVisibility(MethodAccessFlags accessFlags)
 {
     if (accessFlags.HasFlag(MethodAccessFlags.Internal))
     {
         return("kotlin-internal");
     }
     if ((accessFlags & MethodAccessFlags.Public) != 0)
     {
         return("public");
     }
     if ((accessFlags & MethodAccessFlags.Protected) != 0)
     {
         return("protected");
     }
     if ((accessFlags & MethodAccessFlags.Private) != 0)
     {
         return("private");
     }
     return("");
 }
Exemple #14
0
 public MethodInfo(MethodAccessFlags accessFlags, ushort nameIndex, ushort descriptorIndex)
 {
     AccessFlags     = (ushort)accessFlags;
     NameIndex       = nameIndex;
     DescriptorIndex = descriptorIndex;
 }
        private string AccessFlagsAsString(MethodAccessFlags accessFlags)
        {
            string result = accessFlags.HasFlag(MethodAccessFlags.Public) ? "public " : string.Empty;
            result += accessFlags.HasFlag(MethodAccessFlags.Private) ? "private " : string.Empty;
            result += accessFlags.HasFlag(MethodAccessFlags.Protected) ? "protected " : string.Empty;
            result += accessFlags.HasFlag(MethodAccessFlags.Static) ? "static " : string.Empty;
            result += accessFlags.HasFlag(MethodAccessFlags.Final) ? "final " : string.Empty;
            result += accessFlags.HasFlag(MethodAccessFlags.Synchronized) ? "synchronized " : string.Empty;
            result += accessFlags.HasFlag(MethodAccessFlags.Bridge) ? "bridge " : string.Empty;
            result += accessFlags.HasFlag(MethodAccessFlags.VarArgs) ? "varargs " : string.Empty;
            result += accessFlags.HasFlag(MethodAccessFlags.Native) ? "native " : string.Empty;
            result += accessFlags.HasFlag(MethodAccessFlags.Abstract) ? "abstract " : string.Empty;
            result += accessFlags.HasFlag(MethodAccessFlags.Strict) ? "strict " : string.Empty;
            result += accessFlags.HasFlag(MethodAccessFlags.Synthetic) ? "synthetic " : string.Empty;

            return result.Trim();
        }