Esempio n. 1
0
        public virtual bool IsMethodValid(metadata.MethodSpec ms)
        {
            if (!IsTypeValid(ms.type))
            {
                return(false);
            }
            if (ms.HasCustomAttribute("_ZN14libsupcs#2Edll8libsupcs19Bits32OnlyAttribute_7#2Ector_Rv_P1u1t") &&
                GetPointerSize() != 4)
            {
                return(false);
            }
            if (ms.HasCustomAttribute("_ZN14libsupcs#2Edll8libsupcs19Bits64OnlyAttribute_7#2Ector_Rv_P1u1t") &&
                GetPointerSize() != 8)
            {
                return(false);
            }

            bool is_arch_dependent = false;
            bool is_required_arch  = false;

            foreach (var idx in ms.CustomAttributes("_ZN14libsupcs#2Edll8libsupcs22ArchDependentAttribute_7#2Ector_Rv_P2u1tu1S"))
            {
                var sig_idx = ms.m.GetCustomAttrSigIdx(idx);
                var arch    = ms.m.ReadCustomAttrString(ref sig_idx);
                is_arch_dependent = true;
                if (arch.Equals(name))
                {
                    is_required_arch = true;
                }
            }

            if (is_arch_dependent && !is_required_arch)
            {
                return(false);
            }

            return(true);
        }