Exemple #1
0
        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);
        }
Exemple #2
0
            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);
            }