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