/// <summary> /// Gets the array descriptor which contains information about defined indexes in the specified array. /// </summary> /// <param name="arrayValue">The array value.</param> /// <returns>True whether structure contains array descriptor which contains information about defined indexes in the specified array.</returns> /// <exception cref="System.Exception">Missing array descriptor</exception> internal ArrayDescriptor GetDescriptor(AssociativeArray arrayValue) { ArrayDescriptor descriptor; if (ArrayDescriptors.TryGetValue(arrayValue, out descriptor)) { return(descriptor); } else { throw new Exception("Missing array descriptor " + arrayValue.ToString()); } }
/// <summary> /// Removes the array from specified index. /// </summary> /// <param name="index">The index.</param> /// <param name="arrayValue">The array value.</param> internal void RemoveArray(MemoryIndex index, AssociativeArray arrayValue) { lockedTest(); ArrayDescriptors.Remove(arrayValue); IndexData data; if (!IndexData.TryGetValue(index, out data)) { data = new IndexData(null, null, null); } IndexDataBuilder builder = data.Builder(); builder.Array = null; IndexData[index] = builder.Build(); Arrays[index.CallLevel].Remove(arrayValue); }
/// <summary> /// Tries to get array descriptor which contains information about defined indexes in the specified array. /// </summary> /// <param name="arrayValue">The array value.</param> /// <param name="descriptor">The descriptor.</param> /// <returns>Array descriptor which contains information about defined indexes in the specified array.</returns> internal bool TryGetDescriptor(AssociativeArray arrayValue, out ArrayDescriptor descriptor) { return(ArrayDescriptors.TryGetValue(arrayValue, out descriptor)); }