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 }
0 commit comments