コード例 #1
0
 /// <summary>
 /// Inject a statement
 /// </summary>
 /// <param name="proc">the process where to add the statement</param>
 /// <param name="obj">the statement to add</param>
 /// <param name="modifier">modifier switch (after, before or replace)</param>
 public void InjectObject(IProcess proc, ICompiler obj, string modifier)
 {
     // injecter dans le processus initial mais pas dans les nouveaux processus
     if (this.StackProcesses.Count == 0)
     {
         if (modifier == "after" || modifier == "replace")
         {
             if (this.after < proc.Objects.Count)
             {
                 proc.InsertObject(this.after, obj);
                 ++this.after;
             }
             else
             {
                 proc.AddObject(obj);
                 ++this.after;
             }
         }
         else if (modifier == "before")
         {
             proc.InsertObject(this.current, obj);
             ++this.current;
             // les objets ajoutés en before déplacent les positions inférieures
             ++this.after;
         }
     }
     else
     {
         // on n'est plus dans le processus injecté mais dans une subroutine
         proc.AddObject(obj);
     }
 }