public WorkshopElementReference Add(IVariable variable, IWorkshopTree value) { CheckIfAdded(variable); var created = new WorkshopElementReference(value); _references.Add(variable, created); return(created); }
public IGettable Add(IIndexReferencer var, IWorkshopTree reference) { if (reference == null) { throw new ArgumentNullException(nameof(reference)); } CheckIfAdded(var); var weRef = new WorkshopElementReference(reference); references.Add(var, weRef); return(weRef); }
public IGettable Add(VarCollection varCollection, Var var, bool isGlobal, IWorkshopTree referenceValue, bool recursive = false) { if (varCollection == null) { throw new ArgumentNullException(nameof(varCollection)); } if (var == null) { throw new ArgumentNullException(nameof(var)); } if (references.ContainsKey(var)) { throw new Exception(var.Name + " was already added into the variable index assigner."); } IGettable assigned; // A gettable/settable variable if (var.Settable()) { assigned = varCollection.Assign(var, isGlobal); if (recursive) { assigned = new RecursiveIndexReference((IndexReference)assigned); } references.Add(var, assigned); } // Element reference else if (var.VariableType == VariableType.ElementReference) { if (referenceValue == null) { throw new ArgumentNullException(nameof(referenceValue)); } assigned = new WorkshopElementReference(referenceValue); references.Add(var, assigned); } else { throw new NotImplementedException(); } return(assigned); }
public IGettable Add(VarCollection varCollection, IIndexReferencer var, bool isGlobal, IWorkshopTree referenceValue, bool recursive = false) { if (varCollection == null) { throw new ArgumentNullException(nameof(varCollection)); } if (var == null) { throw new ArgumentNullException(nameof(var)); } CheckIfAdded(var); IGettable assigned; // A gettable/settable variable if (var.Settable()) { assigned = varCollection.Assign(var, isGlobal); if (recursive || var.Recursive) { assigned = new RecursiveIndexReference((IndexReference)assigned); } references.Add(var, assigned); } // Element reference else if (var.VariableType == VariableType.ElementReference) { if (referenceValue == null) { throw new ArgumentNullException(nameof(referenceValue)); } assigned = new WorkshopElementReference(referenceValue); references.Add(var, assigned); } else { throw new NotImplementedException(); } return(assigned); }