1baa3858d3f5d128a5c8466b700098109edcad5f2repo sync// BenchCon.cpp 2baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 3baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "StdAfx.h" 4baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 5baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "../Common/Bench.h" 6baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 7baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "BenchCon.h" 8baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "ConsoleClose.h" 9baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 10cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbeckystruct CPrintBenchCallback: public IBenchPrintCallback 11baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 12cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbecky FILE *_file; 13baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 14cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbecky void Print(const char *s); 15cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbecky void NewLine(); 16cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbecky HRESULT CheckBreak(); 17baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}; 18baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 19cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbeckyvoid CPrintBenchCallback::Print(const char *s) 20baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 21cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbecky fputs(s, _file); 22baa3858d3f5d128a5c8466b700098109edcad5f2repo sync} 23baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 24cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbeckyvoid CPrintBenchCallback::NewLine() 25baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 26f955a79a9fffb09826cf7547f70d08c3798a2f50Tetsuo Osaka fputc('\n', _file); 27baa3858d3f5d128a5c8466b700098109edcad5f2repo sync} 28baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 29cd66d540cead3f8200b0c73bad9c276d67896c3dDavid SrbeckyHRESULT CPrintBenchCallback::CheckBreak() 30baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 31cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbecky return NConsoleClose::TestBreakSignal() ? E_ABORT: S_OK; 32baa3858d3f5d128a5c8466b700098109edcad5f2repo sync} 33baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 34cd66d540cead3f8200b0c73bad9c276d67896c3dDavid SrbeckyHRESULT BenchCon(DECL_EXTERNAL_CODECS_LOC_VARS 35cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbecky const CObjectVector<CProperty> &props, UInt32 numIterations, FILE *f) 36baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 37cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbecky CPrintBenchCallback callback; 38cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbecky callback._file = f; 39cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbecky return Bench(EXTERNAL_CODECS_LOC_VARS 40cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbecky &callback, NULL, props, numIterations, true); 41baa3858d3f5d128a5c8466b700098109edcad5f2repo sync} 42