Example #1
0
        private AbcFile GetAbcFileCore(ICustomAttributeProvider cp)
        {
            if (_abc != null)
            {
                return(_abc);
            }
            if (_swc == null)
            {
                return(null);
            }

            var attr = cp.FindAttribute(Attrs.SwcAbcFile);

            if (attr == null)
            {
                return(null);
            }

            int lib = 0;
            int file;

            if (attr.Arguments.Count == 1)
            {
                file = GetInt(attr, 0);
            }
            else
            {
                lib  = GetInt(attr, 0);
                file = GetInt(attr, 1);
            }
            return(_swc.GetLibrary(lib).GetAbcFiles()[file]);
        }
Example #2
0
        private AbcTrait GetTrait(ICustomAttributeProvider cp, IAbcTraitProvider owner)
        {
            foreach (var attr in cp.CustomAttributes)
            {
                switch (attr.TypeName)
                {
                case Attrs.AbcInstanceTrait:
                {
                    int index = GetIndex(attr);
                    return(owner.Traits[index]);
                }

                case Attrs.AbcClassTrait:
                {
                    int index = GetIndex(attr);
                    return(((AbcInstance)owner).Class.Traits[index]);
                }

                case Attrs.AbcScriptTrait:
                {
                    var abc = GetAbcFileCore(cp);
                    if (abc == null)
                    {
                        return(null);
                    }

                    var scriptAttr = cp.FindAttribute(Attrs.AbcScript);
                    if (scriptAttr == null)
                    {
                        return(null);
                    }

                    int scriptIndex = GetIndex(scriptAttr);
                    int index       = GetIndex(attr);

                    return(abc.Scripts[scriptIndex].Traits[index]);
                }
                }
            }
            return(null);
        }
Example #3
0
 public static bool ContainsAttribute(this ICustomAttributeProvider source, string attributeTypeName)
 {
     return(source.FindAttribute(attributeTypeName) != null);
 }
Example #4
0
 public static bool HasAttribute(this ICustomAttributeProvider p, string fullname)
 {
     return(p.FindAttribute(fullname) != null);
 }