Ejemplo n.º 1
0
        /// <summary>
        /// Traverses the specified visitor.
        /// </summary>
        /// <param name="visitor">The visitor.</param>
        /// <param name="element">The element.</param>
        public void Traverse(IReferenceVisitor visitor, ModelElement element)
        {
            if (visitor == null)
            {
                throw new ArgumentNullException("visitor");
            }
            if (element == null)
            {
                return;
            }

            _visitor = visitor;

            // Il faut toujours commencer par un modèle pour initialiser le contexte
            CandleModel model = null;

            if (!(element is CandleModel))
            {
                model = CandleModel.GetInstance(element.Store);
                visitor.Accept(new ReferenceItem(null, model, false)); // Initialisation du contexte
            }

            // Parcours de l'élément choisi
            Traverse(new ReferenceItem(null, element, false));

            if (model != null)
            {
                visitor.ExitElement(new ReferenceItem(null, model, false));
            }
        }
 public static void DispatchOn(ModuleDefinition module, IReferenceVisitor visitor)
 {
     new ReferenceDispatcher(module, visitor).Dispatch();
 }
 private ReferenceDispatcher(ModuleDefinition module, IReferenceVisitor visitor)
 {
     _module = module;
     _visitor = visitor;
 }
Ejemplo n.º 4
0
 public static void DispatchOn(ModuleDefinition module, IReferenceVisitor visitor)
 {
     new ReferenceDispatcher(module, visitor).Dispatch();
 }
Ejemplo n.º 5
0
 private ReferenceDispatcher(ModuleDefinition module, IReferenceVisitor visitor)
 {
     _module  = module;
     _visitor = visitor;
 }