public ClassData(VarCollection varCollection) { ClassArray = varCollection.Assign("_classArray", true, false); if (DefinedType.CLASS_INDEX_WORKAROUND) { ClassIndexes = varCollection.Assign("_classIndexes", true, false); } }
public static IndexedVar AssignVar(VarCollection collection, ScopeGroup scope, string name, bool isGlobal, Node node) { WorkshopVariable assignedVariable = collection.Assign(name, isGlobal); IndexedVar var = CreateVar(collection.WorkshopArrayBuilder, scope, name, isGlobal, assignedVariable, null, node); collection.AllVars.Add(var); return(var); }
public IndexReference GetClassVariableStack(VarCollection collection, int index) { if (index > VariableStacks.Count) { throw new Exception("Variable stack skipped"); } if (index == VariableStacks.Count) { VariableStacks.Add(collection.Assign("_objectVariable_" + index, true, false)); } return(VariableStacks[index]); }
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); }
public IndexReference AddIndexReference(VarCollection varCollection, Var var, bool isGlobal, bool recursive = false) { if (varCollection == null) { throw new ArgumentNullException(nameof(varCollection)); } if (var == null) { throw new ArgumentNullException(nameof(var)); } CheckIfAdded(var); IndexReference assigned = varCollection.Assign(var, isGlobal); if (recursive) { assigned = new RecursiveIndexReference((IndexReference)assigned); } references.Add(var, assigned); return(assigned); }
public void 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)); } // A gettable/settable variable if (var.Settable()) { var assigned = varCollection.Assign(var, isGlobal); if (recursive) { assigned = new RecursiveIndexReference(assigned); } references.Add(var, assigned); } // Element reference else if (var.VariableType == VariableType.ElementReference) { if (referenceValue == null) { throw new ArgumentNullException(nameof(referenceValue)); } references.Add(var, new WorkshopElementReference(referenceValue)); } else { throw new NotImplementedException(); } }
public ClassData(VarCollection varCollection) { ClassIndexes = varCollection.Assign("_classIndexes", true, false); }