#macro Transpose_Array(OriginalArray) #if(dimensions(OriginalArray) = 2) #local OldRows = dimension_size (OriginalArray, 1); #local OldCols = dimension_size (OriginalArray, 2); #local NewRows = OldCols; #local NewCols = OldRows; #local NewArray = array[NewRows][NewCols]; #for (i, 0, OldCols-1) #for (j, 0, OldRows-1) #ifdef (OriginalArray[j][i]) #local NewArray[i][j] = OriginalArray[j][i]; #end // end ifdef #end // end j loop #end // end i loop //#local Transposed_Array = array [NewRows][NewCols] NewArray; #else #error "The Transpose_Array() macro only works for 2D arrays." #end // end if-else NewArray #end // end macro Transpose_Array //#################################################################### #macro ReverseTranspose_Array(OriginalArray) #if(dimensions(OriginalArray) = 2) #local OldRows = dimension_size (OriginalArray, 1); #local OldCols = dimension_size (OriginalArray, 2); #local NewRows = OldCols; #local NewCols = OldRows; #local NewArray = array[NewRows][NewCols]; #local Column = OldCols-1; #local Row = OldRows-1; #for (i, 0, Column) #for (j, 0, Row) #ifdef (OriginalArray[Row-j][Column-i]) #local NewArray[i][j] = OriginalArray[Row-j][Column-i]; #end // end ifdef #end // end j loop #end // end i loop //#local Transposed_Array = array [NewRows][NewCols] NewArray; #else #error "The ReverseTranspose_Array() macro only works for 2D arrays." #end // end if-else NewArray #end // end macro Transpose_Array //#################################################################### /* #declare TestArray = array[5][3]{ {11, 12, 13}, {21, 22, 23}, {31, 32, 33}, {41, 42, 43}, {51, 52, 53} }; #debug "Transpose_Array \n\n" #declare TransposedArray = Transpose_Array(TestArray); #local Rows = dimension_size (TransposedArray, 1); #local Cols = dimension_size (TransposedArray, 2); #for (i, 0, Rows-1) #for (j, 0, Cols-1) #ifdef (TransposedArray[i][j]) #debug concat( str(TransposedArray[i][j], 2, 0), " ") #end #end #debug " \n\n" #end #debug "ReverseTranspose_Array \n\n" #declare TransposedArray = ReverseTranspose_Array(TestArray); #local Rows = dimension_size (TransposedArray, 1); #local Cols = dimension_size (TransposedArray, 2); #for (i, 0, Rows-1) #for (j, 0, Cols-1) #ifdef (TransposedArray[i][j]) #debug concat( str(TransposedArray[i][j], 2, 0), " ") #end #end #debug " \n\n" #end */ //####################################################################