コード例 #1
0
        public ClassSignature(string signature)
        {
            int index = 0;

            Signature.AssertSignatureIndex(signature, index);
            Signature.ExtractFormalTypeParameters(TypeParameters, signature, ref index);
            Signature.AssertSignatureIndex(signature, index);
            SuperclassSignature = Signature.ExtractType(signature, ref index);
            while (index < signature.Length)
            {
                var t = Signature.ExtractType(signature, ref index);
                SuperinterfaceSignatures.Add(t);
            }
        }
コード例 #2
0
        public MethodTypeSignature(string signature)
        {
            int index = 0;

            Signature.AssertSignatureIndex(signature, index);
            Signature.ExtractFormalTypeParameters(TypeParameters, signature, ref index);
            Signature.AssertSignatureIndex(signature, index);
            if (signature [index] != '(')
            {
                throw new ArgumentException(string.Format("Method signature needs to contain '(' at index {0} in: {1}", index, signature));
            }
            index++;
            while (index < signature.Length && signature [index] != ')')
            {
                Parameters.Add(Signature.ExtractType(signature, ref index));
            }
            if (signature [index] != ')')
            {
                throw new ArgumentException(string.Format("Method signature needs to contain ')' at index {0} in: {1}", index, signature));
            }
            index++;
            ReturnTypeSignature = Signature.ExtractType(signature, ref index);
            if (index == signature.Length)
            {
                return;
            }
            if (signature [index] != '^')
            {
                throw new ArgumentException(string.Format("Method signature should end with exception '^' types; found: '{0}' at {1} in: {2}",
                                                          signature [index], index, signature));
            }
            while (index < signature.Length && signature [index] == '^')
            {
                index++;
                var t = Signature.ExtractType(signature, ref index);
                Throws.Add(t);
            }
        }