|
From: Herton R. K. <he...@us...> - 2005-04-06 03:00:24
|
Update of /cvsroot/kimageprocess/kimageprocess/testclass In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7572/testclass Modified Files: testclass.c Log Message: - Finally finished loading of pattern files. Index: testclass.c =================================================================== RCS file: /cvsroot/kimageprocess/kimageprocess/testclass/testclass.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- testclass.c 5 Apr 2005 06:54:56 -0000 1.12 +++ testclass.c 6 Apr 2005 03:00:14 -0000 1.13 @@ -10,13 +10,19 @@ #define PARSER_ERROR 1 #define CHECK_ERROR 2 +typedef struct { + float **inputValues; + float **outputValues; + int numInputUnits; + int numOutputUnits; + int numPatterns; +} pat; + /* function prototypes */ void usage(char *progname); void fatal(int err); void netLoadFail(int code, char *fileName); -void loadNetwork(float **inputValues, float **outputValues, int *numInputUnits, - int *numOutputUnits, int *numPatterns, FILE *patFile, - char *fileName); +void loadNetwork(pat *patInf, FILE *patFile, char *fileName); void usage(char *progname) { @@ -54,11 +60,9 @@ exit(1); } -void loadNetwork(float **inputValues, float **outputValues, int *numInputUnits, - int *numOutputUnits, int *numPatterns, FILE *patFile, - char *fileName) +void loadNetwork(pat *patInf, FILE *patFile, char *fileName) { - int tok, curPat = 0, i; + int tok, curPat = 0, i, j; float *tempp; yyin = patFile; tok = yylex(); @@ -67,11 +71,11 @@ tok = yylex(); if (tok != PATDATE) netLoadFail(PARSER_ERROR, fileName); - *numInputUnits = -1; - *numOutputUnits = -1; - *numPatterns = -1; - inputValues = NULL; - outputValues = NULL; + patInf->numInputUnits = -1; + patInf->numOutputUnits = -1; + patInf->numPatterns = -1; + patInf->inputValues = NULL; + patInf->outputValues = NULL; tok = yylex(); while (tok != END) { @@ -81,60 +85,73 @@ tok = yylex(); if (tok != INTNUMBER) netLoadFail(PARSER_ERROR, fileName); - *numPatterns = atoi(yytext); + patInf->numPatterns = atoi(yytext); break; case NUMIN: tok = yylex(); if (tok != INTNUMBER) netLoadFail(PARSER_ERROR, fileName); - *numInputUnits = atoi(yytext); + patInf->numInputUnits = atoi(yytext); break; case NUMOUT: tok = yylex(); if (tok != INTNUMBER) netLoadFail(PARSER_ERROR, fileName); - *numOutputUnits = atoi(yytext); + patInf->numOutputUnits = atoi(yytext); break; case FLOATNUMBER: case INTNUMBER: - if (*numPatterns <= 0 || curPat == *numPatterns) + if (patInf->numPatterns <= 0 || curPat == patInf->numPatterns) netLoadFail(CHECK_ERROR, fileName); - if (inputValues == NULL) + if (patInf->inputValues == NULL && patInf->numInputUnits > 0) { - tempp = malloc(sizeof(float) * *numPatterns * *numInputUnits); + tempp = malloc(sizeof(float) * patInf->numPatterns * patInf->numInputUnits); if (tempp == NULL) fatal(errno); - inputValues = malloc(sizeof(float *) * *numPatterns); - if (inputValues == NULL) + patInf->inputValues = malloc(sizeof(float *) * patInf->numPatterns); + if (patInf->inputValues == NULL) fatal(errno); - for (i = 0; i < *numPatterns; i++) - inputValues[i] = tempp + (i * *numInputUnits); + for (i = 0; i < patInf->numPatterns; i++) + patInf->inputValues[i] = tempp + (i * patInf->numInputUnits); } - if (outputValues == NULL) + if (patInf->outputValues == NULL && patInf->numOutputUnits > 0) { - tempp = malloc(sizeof(float) * *numPatterns * *numOutputUnits); + tempp = malloc(sizeof(float) * patInf->numPatterns * patInf->numOutputUnits); if (tempp == NULL) fatal(errno); - outputValues = malloc(sizeof(float *) * *numPatterns); - if (outputValues == NULL) + patInf->outputValues = malloc(sizeof(float *) * patInf->numPatterns); + if (patInf->outputValues == NULL) fatal(errno); - for (i = 0; i < *numPatterns; i++) - outputValues[i] = tempp + (i * *numOutputUnits); + for (i = 0; i < patInf->numPatterns; i++) + patInf->outputValues[i] = tempp + (i * patInf->numOutputUnits); } - inputValues[curPat][0] = atof(yytext); - for (i = 1; i < *numInputUnits; i++) + if (patInf->numInputUnits > 0) + { + patInf->inputValues[curPat][0] = atof(yytext); + i = 1; + j = 0; + } + else + { + patInf->outputValues[curPat][0] = atof(yytext); + i = 0; + j = 1; + } + while (i < patInf->numInputUnits) { tok = yylex(); if (tok != FLOATNUMBER && tok != INTNUMBER) netLoadFail(CHECK_ERROR, fileName); - inputValues[curPat][i] = atof(yytext); + patInf->inputValues[curPat][i] = atof(yytext); + i++; } - for (i = 0; i < *numOutputUnits; i++) + while (j < patInf->numOutputUnits) { tok = yylex(); if (tok != FLOATNUMBER && tok != INTNUMBER) netLoadFail(CHECK_ERROR, fileName); - outputValues[curPat][i] = atof(yytext); + patInf->outputValues[curPat][j] = atof(yytext); + j++; } curPat++; break; @@ -147,7 +164,7 @@ int main(int argc, char **argv) { - int a, b, c; + int c; int option_index = 0; static struct option long_options[] = { @@ -163,6 +180,8 @@ float **in_tvalues, **out_tvalues; int in_cnum, out_cnum, pat_cnum; float **in_cvalues, **out_cvalues; + pat t_patData; + pat c_patData; if (argc == 1) usage(argv[0]); @@ -202,22 +221,43 @@ pt_file = fopen(t_file, "r"); if (pt_file == NULL) fatal(errno); - loadNetwork(in_tvalues, out_tvalues, &in_tnum, &out_tnum, &pat_tnum, - pt_file, t_file); - for (a = 0; a < pat_tnum; a++) - { - for (b = 0; b < in_tnum; b++) - { - printf("%.5f", in_tvalues[a][b]); - } - for (b = 0; b < out_tnum; b++) - { - printf("%.5f", out_tvalues[a][b]); - } - } + loadNetwork(&t_patData, pt_file, t_file); pc_file = fopen(c_file, "r"); if (pc_file == NULL) fatal(errno); + loadNetwork(&c_patData, pc_file, c_file); + if (t_patData.inputValues != NULL) + { + /* free only first element because is a contiguous allocated memory + space (see loadNetwork) */ + if (t_patData.inputValues[0] != NULL) + free(t_patData.inputValues[0]); + free(t_patData.inputValues); + } + if (t_patData.outputValues != NULL) + { + /* free only first element because is a contiguous allocated memory + space (see loadNetwork) */ + if (t_patData.outputValues[0] != NULL) + free(t_patData.outputValues[0]); + free(t_patData.outputValues); + } + if (c_patData.inputValues != NULL) + { + /* free only first element because is a contiguous allocated memory + space (see loadNetwork) */ + if (c_patData.inputValues[0] != NULL) + free(c_patData.inputValues[0]); + free(c_patData.inputValues); + } + if (c_patData.outputValues != NULL) + { + /* free only first element because is a contiguous allocated memory + space (see loadNetwork) */ + if (c_patData.outputValues[0] != NULL) + free(c_patData.outputValues[0]); + free(c_patData.outputValues); + } if (fclose(pt_file) != 0) fatal(errno); if (fclose(pc_file) != 0) |