Changeset 19803


Ignore:
Timestamp:
11/25/15 13:41:18 (9 years ago)
Author:
Eric.Larour
Message:

CHG: added new CleanupJS javascript cleanup routine, which dumps the output file content into
a memory buffer, which is then returned to the issm.js javascript routine.

Location:
issm/trunk-jpl/src/c/classes
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/FemModel.cpp

    r19793 r19803  
    24262426        if(output_fid==NULL)_error_("FemModel::InitFromBuffers error message: could not initialize output stream");
    24272427        this->parameters->SetParam(output_fid,OutputFilePointerEnum);
    2428        
     2428        this->parameters->AddObject(new GenericParam<char**>(&outputbuffer,OutputBufferPointerEnum));
     2429        this->parameters->AddObject(new GenericParam<size_t*>(&outputsize,OutputBufferSizePointerEnum));
     2430
    24292431        /*Clean up*/
    24302432        delete iomodel;
    24312433}/*}}}*/
    2432 void FemModel::CleanUpJs(void){/*{{{*/
     2434void FemModel::CleanUpJs(char** poutput, size_t* psize){/*{{{*/
    24332435
    24342436        /*Intermediary*/
    24352437        FILE *output_fid;
    2436 
    2437         /*Close output file: */
    2438         this->parameters->FindParam(&output_fid,OutputFilePointerEnum);
    2439         fclose(output_fid);
    2440 
     2438        GenericParam<char**>* outputbufferparam=NULL;
     2439        GenericParam<size_t*>* outputbuffersizeparam=NULL;
     2440        char** poutputbuffer;
     2441        size_t* poutputbuffersize;
     2442
     2443       
    24412444        /*Before we delete the profiler, report statistics for this run: */
    24422445        profiler->Tag(Finish);  //final tagging
     
    24512454                                );
    24522455        _printf0_("\n");
     2456       
     2457        /*Before we close the output file, recover the buffer and size:*/
     2458        outputbufferparam = xDynamicCast<GenericParam<char**>*>(this->parameters->FindParamObject(OutputBufferPointerEnum));
     2459        poutputbuffer=outputbufferparam->GetParameterValue();
     2460        outputbuffersizeparam = xDynamicCast<GenericParam<size_t*>*>(this->parameters->FindParamObject(OutputBufferSizePointerEnum));
     2461        poutputbuffersize=outputbuffersizeparam->GetParameterValue();
     2462
     2463        /*Close output file. Watch out, only close the output file after recovering the buffer pointers. Not sure
     2464         * why, but otherwise, the buffers are garbage: */
     2465        this->parameters->FindParam(&output_fid,OutputFilePointerEnum);
     2466        fclose(output_fid);
     2467
     2468        /*Assign output values: */
     2469        *poutput=*poutputbuffer;
     2470        *psize=*poutputbuffersize;
    24532471}
    24542472/*}}}*/
  • issm/trunk-jpl/src/c/classes/FemModel.h

    r19793 r19803  
    123123                FemModel(IssmDouble* buffer, int buffersize, char* toolkits, char* solution, char* modelname,ISSM_MPI_Comm incomm, bool trace=false);
    124124                void InitFromBuffers(char* buffer, int buffersize, char* toolkits, int solution_type,bool trace,IssmPDouble* X=NULL);
    125                 void CleanUpJs(void);
     125                void CleanUpJs(char** poutput, size_t* psize);
    126126                #endif
    127127};
Note: See TracChangeset for help on using the changeset viewer.