public static ExternSignature Composite(string sign, ushort index) { var s = new ExternSignature { Signature = sign, MethodIndex = index, Arguments = new List <ExternType>() }; foreach (Match match in new Regex(@"(?<type>i32|i64|i16|i8|i2|u32|u64|u16|u8|u2|f64)+?\,?\s?").Matches(sign)) { s.Arguments.Add(DefinedTypes.First(x => x.GetType().Name == $"{match.Groups["type"]}_Type")); } return(s); }
public ExternStatus Find(ushort sign, out ExternSignature signature) { signature = null; if (!methods.ContainsKey(sign)) { return(ExternStatus.MethodNotFound); } signature = methods[sign]; if (signature?.method is null) { return(ExternStatus.SigFault); } if (!signature.method.IsStatic) { return(ExternStatus.MethodNotStatic); } if (!signature.method.IsSecurityCritical) { return(ExternStatus.SecurityFault); } return(ExternStatus.Found); }