Esempio n. 1
0
        private static void RegisterTagger(string locale, string tagName, ITagger tagger)
        {
            if (IsTagRegistered(locale, tagName))
            {
                throw new Exception(String.Format("{0} and {1} taggers for locale \"{2}\" share common tag name {3}",
                                                  tagger.GetType().Name,
                                                  s_taggers[locale][tagName].GetType().Name, locale,
                                                  tagName));
            }

            locale  = locale.ToLower();
            tagName = tagName.ToLower();

            if (!s_taggers.ContainsKey(locale))
            {
                s_taggers.Add(locale, new Dictionary <string, ITagger>());
            }

            s_taggers[locale].Add(tagName, tagger);
        }
        public ITagger <TTagType> CreateTagger(ITextBuffer buffer)
        {
            if (taggerAdapters.Count == 0)
            {
                Singleton = createTagger(buffer);
                Debug.WriteLine($"SLVS SingletonDisposableTaggerManager ({this.GetHashCode()}): Created new singleton tagger: {Singleton.GetType().Name}");
            }

            var tagger = new FlyweightTaggerWrapper(Singleton, RemoveTagger);

            taggerAdapters.Add(tagger);
            Debug.WriteLine($"SLVS SingletonDisposableTaggerManager ({this.GetHashCode()}): Created new flyweight tagger. New count: {taggerAdapters.Count}. Singleton: {Singleton.GetType().Name}, hash code: {Singleton.GetHashCode()}");

            return(tagger);
        }