/// <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); } }