/* * w r i t e I n t o F i l e */ returnValue writeIntoFile( const real_t* const data, int_t nrow, int_t ncol, const char* datafilename, BooleanType append ) { #ifndef __SUPPRESSANYOUTPUT__ int_t i, j; FILE* datafile; /* 1) Open file. */ if ( append == BT_TRUE ) { /* append data */ if ( ( datafile = fopen( datafilename, "a" ) ) == 0 ) { char errstr[MAX_STRING_LENGTH]; snprintf( errstr,MAX_STRING_LENGTH,"(%s)",datafilename ); return getGlobalMessageHandler( )->throwError( RET_UNABLE_TO_OPEN_FILE,errstr,__FUNC__,__FILE__,__LINE__,VS_VISIBLE ); } } else { /* do not append data */ if ( ( datafile = fopen( datafilename, "w" ) ) == 0 ) { char errstr[MAX_STRING_LENGTH]; snprintf( errstr,MAX_STRING_LENGTH,"(%s)",datafilename ); return getGlobalMessageHandler( )->throwError( RET_UNABLE_TO_OPEN_FILE,errstr,__FUNC__,__FILE__,__LINE__,VS_VISIBLE ); } } /* 2) Write data into file. */ for( i=0; i<nrow; ++i ) { for( j=0; j<ncol; ++j ) fprintf( datafile, "%.16e ", data[i*ncol+j] ); fprintf( datafile, "\n" ); } /* 3) Close file. */ fclose( datafile ); return SUCCESSFUL_RETURN; #else /* __SUPPRESSANYOUTPUT__ */ return RET_NOT_YET_IMPLEMENTED; #endif /* __SUPPRESSANYOUTPUT__ */ }
/* * r e a d F r o m F i l e */ returnValue readFromFile( real_t* data, int_t nrow, int_t ncol, const char* datafilename ) { #ifndef __SUPPRESSANYOUTPUT__ int_t i, j; real_t float_data; FILE* datafile; /* 1) Open file. */ if ( ( datafile = fopen( datafilename, "r" ) ) == 0 ) { char errstr[MAX_STRING_LENGTH]; snprintf( errstr,MAX_STRING_LENGTH,"(%s)",datafilename ); return getGlobalMessageHandler( )->throwError( RET_UNABLE_TO_OPEN_FILE,errstr,__FUNC__,__FILE__,__LINE__,VS_VISIBLE ); } /* 2) Read data from file. */ for( i=0; i<nrow; ++i ) { for( j=0; j<ncol; ++j ) { #ifdef __USE_SINGLE_PRECISION__ if ( fscanf( datafile, "%f ", &float_data ) == 0 ) #else if ( fscanf( datafile, "%lf ", &float_data ) == 0 ) #endif /* __USE_SINGLE_PRECISION__ */ { fclose( datafile ); char errstr[MAX_STRING_LENGTH]; snprintf( errstr,MAX_STRING_LENGTH,"(%s)",datafilename ); return getGlobalMessageHandler( )->throwError( RET_UNABLE_TO_READ_FILE,errstr,__FUNC__,__FILE__,__LINE__,VS_VISIBLE ); } data[i*ncol + j] = ( (real_t) float_data ); } } /* 3) Close file. */ fclose( datafile ); return SUCCESSFUL_RETURN; #else /* __SUPPRESSANYOUTPUT__ */ return RET_NOT_YET_IMPLEMENTED; #endif /* __SUPPRESSANYOUTPUT__ */ }
/* * m y P r i n t f */ returnValue myPrintf( const char* s ) { #ifndef __SUPPRESSANYOUTPUT__ if ( s == 0 ) return RET_INVALID_ARGUMENTS; #ifdef __MATLAB__ mexPrintf( s ); #else #ifdef __SCILAB__ sciprint( s ); #else FILE* outputfile = getGlobalMessageHandler( )->getOutputFile( ); if ( outputfile == 0 ) return THROWERROR( RET_NO_GLOBAL_MESSAGE_OUTPUTFILE ); fprintf( outputfile, "%s", s ); #endif /* __SCILAB__ */ #endif /* __MATLAB__ */ #endif /* __SUPPRESSANYOUTPUT__ */ return SUCCESSFUL_RETURN; }
/* * g e t S i m p l e S t a t u s */ int_t getSimpleStatus( returnValue returnvalue, BooleanType doPrintStatus ) { int_t simpleStatus = -1; /* determine simple status from returnvalue */ switch ( returnvalue ) { case SUCCESSFUL_RETURN: simpleStatus = 0; break; case RET_MAX_NWSR_REACHED: simpleStatus = 1; break; case RET_INIT_FAILED_INFEASIBILITY: case RET_HOTSTART_STOPPED_INFEASIBILITY: simpleStatus = -2; break; case RET_INIT_FAILED_UNBOUNDEDNESS: case RET_HOTSTART_STOPPED_UNBOUNDEDNESS: simpleStatus = -3; break; default: simpleStatus = -1; break; } if ( doPrintStatus == BT_TRUE ) { VisibilityStatus vsInfo = getGlobalMessageHandler( )->getInfoVisibilityStatus( ); getGlobalMessageHandler( )->setInfoVisibilityStatus( VS_VISIBLE ); getGlobalMessageHandler( )->setErrorCount( -1 ); int_t retValNumber = (int_t)RET_SIMPLE_STATUS_P0 - simpleStatus; THROWINFO( (returnValue)retValNumber ); getGlobalMessageHandler( )->setInfoVisibilityStatus( vsInfo ); } return simpleStatus; }
/* * w r i t e I n t o F i l e */ returnValue writeIntoFile( const int* const data, int n, const char* datafilename, BooleanType append ) { #ifndef __XPCTARGET__ int i; FILE* datafile; /* 1) Open file. */ if ( append == BT_TRUE ) { /* append data */ if ( ( datafile = fopen( datafilename, "a" ) ) == 0 ) { char errstr[80]; snprintf( errstr,80,"(%s)",datafilename ); return getGlobalMessageHandler( )->throwError( RET_UNABLE_TO_OPEN_FILE,errstr,__FUNCTION__,__FILE__,__LINE__,VS_VISIBLE ); } } else { /* do not append data */ if ( ( datafile = fopen( datafilename, "w" ) ) == 0 ) { char errstr[80]; snprintf( errstr,80,"(%s)",datafilename ); return getGlobalMessageHandler( )->throwError( RET_UNABLE_TO_OPEN_FILE,errstr,__FUNCTION__,__FILE__,__LINE__,VS_VISIBLE ); } } /* 2) Write data into file. */ for( i=0; i<n; ++i ) fprintf( datafile, "%d\n", data[i] ); /* 3) Close file. */ fclose( datafile ); return SUCCESSFUL_RETURN; #else return RET_NOT_YET_IMPLEMENTED; #endif }
/* * r e a d F r o m F i l e */ returnValue readFromFile( int_t* data, int_t n, const char* datafilename ) { #ifndef __SUPPRESSANYOUTPUT__ int_t i; FILE* datafile; /* 1) Open file. */ if ( ( datafile = fopen( datafilename, "r" ) ) == 0 ) { char errstr[MAX_STRING_LENGTH]; snprintf( errstr,MAX_STRING_LENGTH,"(%s)",datafilename ); return getGlobalMessageHandler( )->throwError( RET_UNABLE_TO_OPEN_FILE,errstr,__FUNC__,__FILE__,__LINE__,VS_VISIBLE ); } /* 2) Read data from file. */ for( i=0; i<n; ++i ) { #ifdef __USE_LONG_INTEGERS__ if ( fscanf( datafile, "%ld\n", &(data[i]) ) == 0 ) #else if ( fscanf( datafile, "%d\n", &(data[i]) ) == 0 ) #endif { fclose( datafile ); char errstr[MAX_STRING_LENGTH]; snprintf( errstr,MAX_STRING_LENGTH,"(%s)",datafilename ); return getGlobalMessageHandler( )->throwError( RET_UNABLE_TO_READ_FILE,errstr,__FUNC__,__FILE__,__LINE__,VS_VISIBLE ); } } /* 3) Close file. */ fclose( datafile ); return SUCCESSFUL_RETURN; #else /* __SUPPRESSANYOUTPUT__ */ return RET_NOT_YET_IMPLEMENTED; #endif /* __SUPPRESSANYOUTPUT__ */ }
/* * r e a d F r o m F i l e */ returnValue readFromFile( double* data, int nrow, int ncol, const char* datafilename ) { #ifndef __XPCTARGET__ int i, j; float float_data; FILE* datafile; /* 1) Open file. */ if ( ( datafile = fopen( datafilename, "r" ) ) == 0 ) { char errstr[80]; snprintf( errstr,80,"(%s)",datafilename ); return getGlobalMessageHandler( )->throwError( RET_UNABLE_TO_OPEN_FILE,errstr,__FUNCTION__,__FILE__,__LINE__,VS_VISIBLE ); } /* 2) Read data from file. */ for( i=0; i<nrow; ++i ) { for( j=0; j<ncol; ++j ) { if ( fscanf( datafile, "%f ", &float_data ) == 0 ) { fclose( datafile ); char errstr[80]; snprintf( errstr,80,"(%s)",datafilename ); return getGlobalMessageHandler( )->throwError( RET_UNABLE_TO_READ_FILE,errstr,__FUNCTION__,__FILE__,__LINE__,VS_VISIBLE ); } data[i*ncol + j] = ( (double) float_data ); } } /* 3) Close file. */ fclose( datafile ); return SUCCESSFUL_RETURN; #else return RET_NOT_YET_IMPLEMENTED; #endif }
/* * m y P r i n t f */ returnValue myPrintf( const char* s ) { #ifdef __MATLAB__ mexPrintf( s ); #else FILE* outputfile = getGlobalMessageHandler( )->getOutputFile( ); if ( outputfile == 0 ) return THROWERROR( RET_NO_GLOBAL_MESSAGE_OUTPUTFILE ); fprintf( outputfile, "%s", s ); #endif return SUCCESSFUL_RETURN; }
static void mdlTerminate(SimStruct *S) { USING_NAMESPACE_QPOASES int i; /* reset global message handler */ getGlobalMessageHandler( )->reset( ); if ( ssGetPWork(S)[0] != 0 ) delete ssGetPWork(S)[0]; for ( i=1; i<5; ++i ) { if ( ssGetPWork(S)[i] != 0 ) free( ssGetPWork(S)[i] ); } }