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); } }
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); } }