Skip to content

Commit 62c9de2

Browse files
jjYBdx4ILjjYBdx4IL
authored andcommitted
modify function signatures to allow passing back errors
1 parent d71d547 commit 62c9de2

File tree

6 files changed

+35
-33
lines changed

6 files changed

+35
-33
lines changed

src/fann_cascade.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ FANN_EXTERNAL void FANN_API fann_cascadetrain_on_file(struct fann *ann, const ch
130130
unsigned int neurons_between_reports,
131131
float desired_error)
132132
{
133-
struct fann_train_data *data = fann_read_train_from_file(filename);
133+
struct fann_train_data *data = fann_read_train_from_file((struct fann_error *) ann, filename);
134134

135135
if(data == NULL)
136136
{

src/fann_train_data.c

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,18 @@
2828
/*
2929
* Reads training data from a file.
3030
*/
31-
FANN_EXTERNAL struct fann_train_data *FANN_API fann_read_train_from_file(const char *configuration_file)
31+
FANN_EXTERNAL struct fann_train_data *FANN_API fann_read_train_from_file(struct fann_error *err, const char *configuration_file)
3232
{
3333
struct fann_train_data *data;
3434
FILE *file = fopen(configuration_file, "r");
3535

3636
if(!file)
3737
{
38-
fann_error(NULL, FANN_E_CANT_OPEN_CONFIG_R, configuration_file);
38+
fann_error(err, FANN_E_CANT_OPEN_CONFIG_R, configuration_file);
3939
return NULL;
4040
}
4141

42-
data = fann_read_train_from_fd(file, configuration_file);
42+
data = fann_read_train_from_fd(err, file, configuration_file);
4343
fclose(file);
4444
return data;
4545
}
@@ -302,7 +302,7 @@ FANN_EXTERNAL void FANN_API fann_train_on_file(struct fann *ann, const char *fil
302302
unsigned int epochs_between_reports,
303303
float desired_error)
304304
{
305-
struct fann_train_data *data = fann_read_train_from_file(filename);
305+
struct fann_train_data *data = fann_read_train_from_file((struct fann_error *)ann, filename);
306306

307307
if(data == NULL)
308308
{
@@ -806,7 +806,7 @@ int fann_save_train_internal_fd(struct fann_train_data *data, FILE * file, const
806806
/*
807807
* Creates an empty set of training data
808808
*/
809-
FANN_EXTERNAL struct fann_train_data * FANN_API fann_create_train(unsigned int num_data, unsigned int num_input, unsigned int num_output)
809+
FANN_EXTERNAL struct fann_train_data * FANN_API fann_create_train(struct fann_error *err, unsigned int num_data, unsigned int num_input, unsigned int num_output)
810810
{
811811
fann_type *data_input, *data_output;
812812
unsigned int i;
@@ -815,7 +815,7 @@ FANN_EXTERNAL struct fann_train_data * FANN_API fann_create_train(unsigned int n
815815

816816
if(data == NULL)
817817
{
818-
fann_error(NULL, FANN_E_CANT_ALLOCATE_MEM);
818+
fann_error(err, FANN_E_CANT_ALLOCATE_MEM);
819819
return NULL;
820820
}
821821

@@ -827,31 +827,31 @@ FANN_EXTERNAL struct fann_train_data * FANN_API fann_create_train(unsigned int n
827827
data->input = (fann_type **) calloc(num_data, sizeof(fann_type *));
828828
if(data->input == NULL)
829829
{
830-
fann_error(NULL, FANN_E_CANT_ALLOCATE_MEM);
830+
fann_error(err, FANN_E_CANT_ALLOCATE_MEM);
831831
fann_destroy_train(data);
832832
return NULL;
833833
}
834834

835835
data->output = (fann_type **) calloc(num_data, sizeof(fann_type *));
836836
if(data->output == NULL)
837837
{
838-
fann_error(NULL, FANN_E_CANT_ALLOCATE_MEM);
838+
fann_error(err, FANN_E_CANT_ALLOCATE_MEM);
839839
fann_destroy_train(data);
840840
return NULL;
841841
}
842842

843843
data_input = (fann_type *) calloc(num_input * num_data, sizeof(fann_type));
844844
if(data_input == NULL)
845845
{
846-
fann_error(NULL, FANN_E_CANT_ALLOCATE_MEM);
846+
fann_error(err, FANN_E_CANT_ALLOCATE_MEM);
847847
fann_destroy_train(data);
848848
return NULL;
849849
}
850850

851851
data_output = (fann_type *) calloc(num_output * num_data, sizeof(fann_type));
852852
if(data_output == NULL)
853853
{
854-
fann_error(NULL, FANN_E_CANT_ALLOCATE_MEM);
854+
fann_error(err, FANN_E_CANT_ALLOCATE_MEM);
855855
fann_destroy_train(data);
856856
return NULL;
857857
}
@@ -866,11 +866,11 @@ FANN_EXTERNAL struct fann_train_data * FANN_API fann_create_train(unsigned int n
866866
return data;
867867
}
868868

869-
FANN_EXTERNAL struct fann_train_data * FANN_API fann_create_train_pointer_array(unsigned int num_data, unsigned int num_input, fann_type **input, unsigned int num_output, fann_type **output)
869+
FANN_EXTERNAL struct fann_train_data * FANN_API fann_create_train_pointer_array(struct fann_error *err, unsigned int num_data, unsigned int num_input, fann_type **input, unsigned int num_output, fann_type **output)
870870
{
871871
unsigned int i;
872872
struct fann_train_data *data;
873-
data = fann_create_train(num_data, num_input, num_output);
873+
data = fann_create_train(err, num_data, num_input, num_output);
874874

875875
if(data == NULL)
876876
return NULL;
@@ -884,11 +884,11 @@ FANN_EXTERNAL struct fann_train_data * FANN_API fann_create_train_pointer_array(
884884
return data;
885885
}
886886

887-
FANN_EXTERNAL struct fann_train_data * FANN_API fann_create_train_array(unsigned int num_data, unsigned int num_input, fann_type *input, unsigned int num_output, fann_type *output)
887+
FANN_EXTERNAL struct fann_train_data * FANN_API fann_create_train_array(struct fann_error *err, unsigned int num_data, unsigned int num_input, fann_type *input, unsigned int num_output, fann_type *output)
888888
{
889889
unsigned int i;
890890
struct fann_train_data *data;
891-
data = fann_create_train(num_data, num_input, num_output);
891+
data = fann_create_train(err, num_data, num_input, num_output);
892892

893893
if(data == NULL)
894894
return NULL;
@@ -906,7 +906,8 @@ FANN_EXTERNAL struct fann_train_data * FANN_API fann_create_train_array(unsigned
906906
/*
907907
* Creates training data from a callback function.
908908
*/
909-
FANN_EXTERNAL struct fann_train_data * FANN_API fann_create_train_from_callback(unsigned int num_data,
909+
FANN_EXTERNAL struct fann_train_data * FANN_API fann_create_train_from_callback(struct fann_error *err,
910+
unsigned int num_data,
910911
unsigned int num_input,
911912
unsigned int num_output,
912913
void (FANN_API *user_function)( unsigned int,
@@ -916,7 +917,7 @@ FANN_EXTERNAL struct fann_train_data * FANN_API fann_create_train_from_callback(
916917
fann_type * ))
917918
{
918919
unsigned int i;
919-
struct fann_train_data *data = fann_create_train(num_data, num_input, num_output);
920+
struct fann_train_data *data = fann_create_train(err, num_data, num_input, num_output);
920921
if(data == NULL)
921922
{
922923
return NULL;
@@ -948,20 +949,20 @@ FANN_EXTERNAL fann_type * FANN_API fann_get_train_output(struct fann_train_data
948949
/*
949950
* INTERNAL FUNCTION Reads training data from a file descriptor.
950951
*/
951-
struct fann_train_data *fann_read_train_from_fd(FILE * file, const char *filename)
952+
struct fann_train_data *fann_read_train_from_fd(struct fann_error *err, FILE * file, const char *filename)
952953
{
953954
unsigned int num_input, num_output, num_data, i, j;
954955
unsigned int line = 1;
955956
struct fann_train_data *data;
956957

957958
if(fscanf(file, "%u %u %u\n", &num_data, &num_input, &num_output) != 3)
958959
{
959-
fann_error(NULL, FANN_E_CANT_READ_TD, filename, line);
960+
fann_error(err, FANN_E_CANT_READ_TD, filename, line);
960961
return NULL;
961962
}
962963
line++;
963964

964-
data = fann_create_train(num_data, num_input, num_output);
965+
data = fann_create_train(err, num_data, num_input, num_output);
965966
if(data == NULL)
966967
{
967968
return NULL;
@@ -973,7 +974,7 @@ struct fann_train_data *fann_read_train_from_fd(FILE * file, const char *filenam
973974
{
974975
if(fscanf(file, FANNSCANF " ", &data->input[i][j]) != 1)
975976
{
976-
fann_error(NULL, FANN_E_CANT_READ_TD, filename, line);
977+
fann_error(err, FANN_E_CANT_READ_TD, filename, line);
977978
fann_destroy_train(data);
978979
return NULL;
979980
}
@@ -984,7 +985,7 @@ struct fann_train_data *fann_read_train_from_fd(FILE * file, const char *filenam
984985
{
985986
if(fscanf(file, FANNSCANF " ", &data->output[i][j]) != 1)
986987
{
987-
fann_error(NULL, FANN_E_CANT_READ_TD, filename, line);
988+
fann_error(err, FANN_E_CANT_READ_TD, filename, line);
988989
fann_destroy_train(data);
989990
return NULL;
990991
}

src/include/config.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
/* #undef PACKAGE */
33

44
/* Version number of package */
5-
#define VERSION "2.2.0"
5+
/* #undef VERSION */
66

77
/* Define for the x86_64 CPU famyly */
88
/* #undef X86_64 */

src/include/fann_internal.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ void fann_error(struct fann_error *errdat, const enum fann_errno_enum errno_f, .
7676
void fann_init_error_data(struct fann_error *errdat);
7777

7878
struct fann *fann_create_from_fd(FILE * conf, const char *configuration_file);
79-
struct fann_train_data *fann_read_train_from_fd(FILE * file, const char *filename);
79+
struct fann_train_data *fann_read_train_from_fd(struct fann_error * err, FILE * file, const char *filename);
8080

8181
void fann_compute_MSE(struct fann *ann, fann_type * desired_output);
8282
void fann_update_output_weights(struct fann *ann);

src/include/fann_train.h

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ FANN_EXTERNAL float FANN_API fann_test_data(struct fann *ann, struct fann_train_
249249
250250
This function appears in FANN >= 1.0.0
251251
*/
252-
FANN_EXTERNAL struct fann_train_data *FANN_API fann_read_train_from_file(const char *filename);
252+
FANN_EXTERNAL struct fann_train_data *FANN_API fann_read_train_from_file(struct fann_error * err, const char *filename);
253253

254254

255255
/* Function: fann_create_train
@@ -261,7 +261,7 @@ FANN_EXTERNAL struct fann_train_data *FANN_API fann_read_train_from_file(const c
261261
262262
This function appears in FANN >= 2.2.0
263263
*/
264-
FANN_EXTERNAL struct fann_train_data * FANN_API fann_create_train(unsigned int num_data, unsigned int num_input, unsigned int num_output);
264+
FANN_EXTERNAL struct fann_train_data * FANN_API fann_create_train(struct fann_error *err, unsigned int num_data, unsigned int num_input, unsigned int num_output);
265265

266266
/* Function: fann_create_train_pointer_array
267267
Creates an training data struct and fills it with data from provided arrays of pointer.
@@ -276,7 +276,7 @@ FANN_EXTERNAL struct fann_train_data * FANN_API fann_create_train(unsigned int n
276276
277277
This function appears in FANN >= 2.3.0
278278
*/
279-
FANN_EXTERNAL struct fann_train_data * FANN_API fann_create_train_pointer_array(unsigned int num_data, unsigned int num_input, fann_type **input, unsigned int num_output, fann_type **output);
279+
FANN_EXTERNAL struct fann_train_data * FANN_API fann_create_train_pointer_array(struct fann_error *err, unsigned int num_data, unsigned int num_input, fann_type **input, unsigned int num_output, fann_type **output);
280280

281281
/* Function: fann_create_train_array
282282
Creates an training data struct and fills it with data from provided arrays, where the arrays must have the dimensions:
@@ -293,7 +293,7 @@ FANN_EXTERNAL struct fann_train_data * FANN_API fann_create_train_pointer_array(
293293
294294
This function appears in FANN >= 2.3.0
295295
*/
296-
FANN_EXTERNAL struct fann_train_data * FANN_API fann_create_train_array(unsigned int num_data, unsigned int num_input, fann_type *input, unsigned int num_output, fann_type *output);
296+
FANN_EXTERNAL struct fann_train_data * FANN_API fann_create_train_array(struct fann_error *err, unsigned int num_data, unsigned int num_input, fann_type *input, unsigned int num_output, fann_type *output);
297297

298298
/* Function: fann_create_train_from_callback
299299
Creates the training data struct from a user supplied function.
@@ -325,7 +325,8 @@ FANN_EXTERNAL struct fann_train_data * FANN_API fann_create_train_array(unsigned
325325
326326
This function appears in FANN >= 2.1.0
327327
*/
328-
FANN_EXTERNAL struct fann_train_data * FANN_API fann_create_train_from_callback(unsigned int num_data,
328+
FANN_EXTERNAL struct fann_train_data * FANN_API fann_create_train_from_callback(struct fann_error *err,
329+
unsigned int num_data,
329330
unsigned int num_input,
330331
unsigned int num_output,
331332
void (FANN_API *user_function)( unsigned int,

src/include/fann_training_data_cpp.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ namespace FANN {
106106
*/
107107
bool read_train_from_file(const std::string &filename) {
108108
destroy_train();
109-
train_data = fann_read_train_from_file(filename.c_str());
109+
train_data = fann_read_train_from_file(NULL, filename.c_str());
110110
return (train_data != NULL);
111111
}
112112

@@ -333,7 +333,7 @@ namespace FANN {
333333
void set_train_data(unsigned int num_data,
334334
unsigned int num_input, fann_type **input,
335335
unsigned int num_output, fann_type **output) {
336-
set_train_data(fann_create_train_pointer_array(num_data, num_input, input, num_output, output));
336+
set_train_data(fann_create_train_pointer_array(NULL, num_data, num_input, input, num_output, output));
337337
}
338338

339339
/* Method: set_train_data
@@ -357,7 +357,7 @@ namespace FANN {
357357
void set_train_data(unsigned int num_data,
358358
unsigned int num_input, fann_type *input,
359359
unsigned int num_output, fann_type *output) {
360-
set_train_data(fann_create_train_array(num_data, num_input, input, num_output, output));
360+
set_train_data(fann_create_train_array(NULL, num_data, num_input, input, num_output, output));
361361
}
362362

363363
private:
@@ -406,7 +406,7 @@ namespace FANN {
406406
fann_type *,
407407
fann_type *)) {
408408
destroy_train();
409-
train_data = fann_create_train_from_callback(num_data, num_input, num_output, user_function);
409+
train_data = fann_create_train_from_callback(NULL, num_data, num_input, num_output, user_function);
410410
}
411411

412412
#ifndef FIXEDFANN

0 commit comments

Comments
 (0)