diff options
Diffstat (limited to 'src/schedule/ScheduleSorter.c')
-rw-r--r-- | src/schedule/ScheduleSorter.c | 163 |
1 files changed, 126 insertions, 37 deletions
diff --git a/src/schedule/ScheduleSorter.c b/src/schedule/ScheduleSorter.c index 4f77689f..a3332742 100644 --- a/src/schedule/ScheduleSorter.c +++ b/src/schedule/ScheduleSorter.c @@ -10,12 +10,14 @@ #include <stdio.h> #include <stdlib.h> +#include "Schedule.h" + static char *rcsid = "$Header$"; static void ScheduleSwap(int size, signed char **array, int *order, int row, int column); /*@@ - @routine ScheduleSort + @routine CCTKi_ScheduleSort @date Mon Aug 30 11:44:35 1999 @author Tom Goodale @desc @@ -29,7 +31,7 @@ static void ScheduleSwap(int size, signed char **array, int *order, int row, int @@*/ -int ScheduleSort(int size, signed char **array, int *order) +int CCTKi_ScheduleSort(int size, signed char **array, int *order) { int iter; int row, column; @@ -70,33 +72,20 @@ int ScheduleSort(int size, signed char **array, int *order) return retval; } -static void ScheduleSwap(int size, signed char **array, int *order, int row, int column) -{ - signed char *tmp; - signed char tmp_char; - int tmp_int; - int this_row; - - /* Swap the rows */ - tmp = array[row]; - array[row] = array[column]; - array[column] = tmp; - - /* Swap the columns */ - for(this_row = 0; this_row < size; this_row++) - { - tmp_char = array[this_row][column]; - array[this_row][column] = array[this_row][row]; - array[this_row][row]=tmp_char; - } - - /* Swap routine orders */ - tmp_int = order[column]; - order[column]=order[row]; - order[row] = tmp_int; - -} + /*@@ + @routine CCTKi_ScheduleAddRow + @date Wed Sep 15 22:28:09 1999 + @author Tom Goodale + @desc + Adds a row to the scheduling array, and fills in the corresponding column entries. + @enddesc + @calls + @calledby + @history + + @endhistory +@@*/ int CCTKi_ScheduleAddRow(int size, signed char **array, int *order, @@ -107,7 +96,6 @@ int CCTKi_ScheduleAddRow(int size, int row; int column; - int i; retval = 0; @@ -128,7 +116,21 @@ int CCTKi_ScheduleAddRow(int size, return retval; } -signed char **ScheduleCreateArray(int size) + /*@@ + @routine CCTKi_ScheduleCreateArray + @date Wed Sep 15 22:28:50 1999 + @author Tom Goodale + @desc + Creates a scheduling array. + @enddesc + @calls + @calledby + @history + + @endhistory + +@@*/ +signed char **CCTKi_ScheduleCreateArray(int size) { int i, j; signed char **array; @@ -147,7 +149,7 @@ signed char **ScheduleCreateArray(int size) if(i < size) { /* Free already allocated memory */ - for(i-1; i >=0; i--) + for(i--; i >=0; i--) { free(array[i]); } @@ -171,7 +173,21 @@ signed char **ScheduleCreateArray(int size) return array; } -void ScheduleDestroyArray(int size, signed char **array) + /*@@ + @routine CCTKi_ScheduleDestroyArray + @date Wed Sep 15 22:29:10 1999 + @author Tom Goodale + @desc + Destroys a scheduling array. + @enddesc + @calls + @calledby + @history + + @endhistory + +@@*/ +void CCTKi_ScheduleDestroyArray(int size, signed char **array) { int i; @@ -181,7 +197,21 @@ void ScheduleDestroyArray(int size, signed char **array) } } -int *ScheduleCreateIVec(int size) + /*@@ + @routine CCTKi_ScheduleCreateIVec + @date Wed Sep 15 22:29:57 1999 + @author Tom Goodale + @desc + Creates a vector of integers. + @enddesc + @calls + @calledby + @history + + @endhistory + +@@*/ +int *CCTKi_ScheduleCreateIVec(int size) { int i; int *vector; @@ -199,11 +229,70 @@ int *ScheduleCreateIVec(int size) return vector; } -void ScheduleDestroyIVec(int size, int *vector) + /*@@ + @routine CCTKi_ScheduleDestroyIVec + @date Wed Sep 15 22:29:29 1999 + @author Tom Goodale + @desc + Destroys a vector of integers. + @enddesc + @calls + @calledby + @history + + @endhistory + +@@*/ +void CCTKi_ScheduleDestroyIVec(int size, int *vector) { free(vector); } + /*@@ + @routine ScheduleSwap + @date Wed Sep 15 22:26:50 1999 + @author Tom Goodale + @desc + Swaps two rows and columns in the scheduling array. + @enddesc + @calls + @calledby + @history + + @endhistory + +@@*/ +static void ScheduleSwap(int size, signed char **array, int *order, int row, int column) +{ + signed char *tmp; + signed char tmp_char; + int tmp_int; + int this_row; + + /* Swap the rows */ + tmp = array[row]; + array[row] = array[column]; + array[column] = tmp; + + /* Swap the columns */ + for(this_row = 0; this_row < size; this_row++) + { + tmp_char = array[this_row][column]; + array[this_row][column] = array[this_row][row]; + array[this_row][row]=tmp_char; + } + + /* Swap routine orders */ + tmp_int = order[column]; + order[column]=order[row]; + order[row] = tmp_int; + +} + +/******************************************************************** + ******************************************************************** + ********************************************************************/ + #ifdef TEST_SORTER int main(int argc, char *argv[]) { @@ -244,9 +333,9 @@ int main(int argc, char *argv[]) size = 5; } - order = ScheduleCreateIVec(size); + order = CCTKi_ScheduleCreateIVec(size); - array = ScheduleCreateArray(size); + array = CCTKi_ScheduleCreateArray(size); for(i=0; i < size; i++) { @@ -296,7 +385,7 @@ int main(int argc, char *argv[]) printf("Sorting array...\n"); - errcode = ScheduleSort(size, array, order); + errcode = CCTKi_ScheduleSort(size, array, order); if(errcode) { |