Exemple #1
0
        private static string Prefix(AbcTraitKind kind)
        {
            switch (kind)
            {
            case AbcTraitKind.Slot:
            case AbcTraitKind.Const:
                return("f:");

            case AbcTraitKind.Method:
            case AbcTraitKind.Function:
                return("m:");

            case AbcTraitKind.Getter:
                return("g:");

            case AbcTraitKind.Setter:
                return("s:");

            case AbcTraitKind.Class:
                return("t:");

            default:
                throw new ArgumentOutOfRangeException("kind");
            }
        }
Exemple #2
0
        public AbcTrait FindSuperTrait(AbcMultiname name, AbcTraitKind kind)
        {
            var st = BaseInstance;

            while (st != null)
            {
                var t = st.Traits.Find(name, kind);
                if (t != null)
                {
                    return(t);
                }
                st = st.BaseInstance;
            }
            return(null);
        }
Exemple #3
0
 public AbcTrait(AbcTraitKind kind, AbcMethod method)
 {
     Kind   = kind;
     Method = method;
 }
Exemple #4
0
 public AbcTrait(AbcTraitKind kind)
 {
     Kind = kind;
 }
Exemple #5
0
 internal static string MakeKey(AbcTraitKind kind, AbcMultiname name)
 {
     return((int)kind + ":" + name.Key);
 }
Exemple #6
0
 public bool Contains(AbcMultiname name, AbcTraitKind kind)
 {
     return(Find(name, kind) != null);
 }
Exemple #7
0
 public AbcTrait Find(string name, AbcTraitKind kind)
 {
     return(_list.FirstOrDefault(t => t.Kind == kind && t.NameString == name));
 }
Exemple #8
0
        public AbcTrait Find(AbcMultiname name, AbcTraitKind kind)
        {
            string key = AbcTrait.MakeKey(kind, name);

            return(_cache[key] as AbcTrait);
        }
Exemple #9
0
 public AbcTrait[] GetRange(AbcTraitKind kind)
 {
     return(this.Where(trait => trait.Kind == kind).ToArray());
 }