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]); }
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); }
public static bool ContainsAttribute(this ICustomAttributeProvider source, string attributeTypeName) { return(source.FindAttribute(attributeTypeName) != null); }
public static bool HasAttribute(this ICustomAttributeProvider p, string fullname) { return(p.FindAttribute(fullname) != null); }