| 614 | } |
| 615 | |
| 616 | static void dump_variable( FILE *fp, ssc_data_t p_data, const char *name ) |
| 617 | { // .17g to .17g for full double precision. |
| 618 | ssc_number_t value; |
| 619 | ssc_number_t *p; |
| 620 | int len, nr, nc; |
| 621 | wxString str_value; |
| 622 | double dbl_value; |
| 623 | int type = ::ssc_data_query( p_data, name ); |
| 624 | switch( type ) |
| 625 | { |
| 626 | case SSC_STRING: |
| 627 | str_value = wxString::FromUTF8(::ssc_data_get_string( p_data, name )); |
| 628 | str_value.Replace("\\", "/" ); |
| 629 | fprintf(fp, "var( '%s', '%s' );\n", name, (const char*)str_value.c_str() ); |
| 630 | break; |
| 631 | case SSC_NUMBER: |
| 632 | ::ssc_data_get_number( p_data, name, &value ); |
| 633 | dbl_value = (double)value; |
| 634 | if ( dbl_value > 1e38 ) dbl_value = 1e38; |
| 635 | fprintf(fp, "var( '%s', %.17g );\n", name, dbl_value ); |
| 636 | break; |
| 637 | case SSC_ARRAY: |
| 638 | p = ::ssc_data_get_array( p_data, name, &len ); |
| 639 | fprintf(fp, "var( '%s', [", name); |
| 640 | for ( int i=0;i<(len-1);i++ ) |
| 641 | { |
| 642 | dbl_value = (double)p[i]; |
| 643 | if ( dbl_value > 1e38 ) dbl_value = 1e38; |
| 644 | fprintf(fp, " %.17g,", dbl_value ); |
| 645 | } |
| 646 | dbl_value = (double)p[len-1]; |
| 647 | if ( dbl_value > 1e38 ) dbl_value = 1e38; |
| 648 | fprintf(fp, " %.17g ] );\n", dbl_value ); |
| 649 | break; |
| 650 | case SSC_MATRIX: |
| 651 | p = ::ssc_data_get_matrix( p_data, name, &nr, &nc ); |
| 652 | len = nr*nc; |
| 653 | fprintf( fp, "var( '%s', \n[ [", name ); |
| 654 | for (int k=0;k<(len-1);k++) |
| 655 | { |
| 656 | dbl_value = (double)p[k]; |
| 657 | if ( dbl_value > 1e38 ) dbl_value = 1e38; |
| 658 | if ( (k+1)%nc == 0 ) |
| 659 | fprintf(fp, " %.17g ], \n[", dbl_value); |
| 660 | else |
| 661 | fprintf(fp, " %.17g,", dbl_value); |
| 662 | } |
| 663 | dbl_value = (double)p[len-1]; |
| 664 | if ( dbl_value > 1e38 ) dbl_value = 1e38; |
| 665 | fprintf(fp, " %.17g ] ] );\n", dbl_value); |
| 666 | } |
| 667 | } |
| 668 | |
| 669 | bool Simulation::WriteDebugFile( const wxString &file, ssc_module_t p_mod, ssc_data_t p_data ) |
| 670 | { |
no outgoing calls
no test coverage detected