/// <summary> /// /// </summary> /// <param name="indexers">List containing all of the indexes</param> /// <param name="indexpos"></param> /// <param name="currentIdx">Array containing the current indexes</param> /// <returns></returns> public static AType VectorIndexing(this AType input, List <AType> indexers, int indexpos, AType currentIdx, bool isAssign, bool isMemoryMapped) { if (currentIdx.Length == 0) { // A Null item found!, select all of the current items for (int i = 0; i < input.Length; i++) { currentIdx.Add(AInteger.Create(i)); } } // Create an array for the results AType result = AArray.Create(input.Type); // Iterate over the indexes foreach (AType index in currentIdx) { AType item = index.IsArray ? input.VectorIndexing(indexers, indexpos, index, isAssign, isMemoryMapped) : input.SimpleIndex(indexers, indexpos, index, isAssign, isMemoryMapped); result.AddWithNoUpdate(item); } result.UpdateInfo(); return(result); }
public static AType Indexing(this AType input, List <AType> indexers, int indexpos, bool isAssign, bool isMemoryMapped) { // Select the current indexer element AType currentIdx = indexers[indexpos]; if (currentIdx.IsArray) { // The indexer element is an Array handle that way return(input.VectorIndexing(indexers, indexpos, currentIdx, isAssign, isMemoryMapped)); } else { // The indexer element is a simple AType return(input.SimpleIndex(indexers, indexpos, currentIdx, isAssign, isMemoryMapped)); } }