xref: /aosp_15_r20/external/lzma/CPP/7zip/UI/Console/BenchCon.cpp (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker // BenchCon.cpp
2*f6dc9357SAndroid Build Coastguard Worker 
3*f6dc9357SAndroid Build Coastguard Worker #include "StdAfx.h"
4*f6dc9357SAndroid Build Coastguard Worker 
5*f6dc9357SAndroid Build Coastguard Worker #include "../Common/Bench.h"
6*f6dc9357SAndroid Build Coastguard Worker 
7*f6dc9357SAndroid Build Coastguard Worker #include "BenchCon.h"
8*f6dc9357SAndroid Build Coastguard Worker #include "ConsoleClose.h"
9*f6dc9357SAndroid Build Coastguard Worker 
10*f6dc9357SAndroid Build Coastguard Worker struct CPrintBenchCallback Z7_final: public IBenchPrintCallback
11*f6dc9357SAndroid Build Coastguard Worker {
12*f6dc9357SAndroid Build Coastguard Worker   FILE *_file;
13*f6dc9357SAndroid Build Coastguard Worker 
14*f6dc9357SAndroid Build Coastguard Worker   void Print(const char *s) Z7_override;
15*f6dc9357SAndroid Build Coastguard Worker   void NewLine() Z7_override;
16*f6dc9357SAndroid Build Coastguard Worker   HRESULT CheckBreak() Z7_override;
17*f6dc9357SAndroid Build Coastguard Worker };
18*f6dc9357SAndroid Build Coastguard Worker 
Print(const char * s)19*f6dc9357SAndroid Build Coastguard Worker void CPrintBenchCallback::Print(const char *s)
20*f6dc9357SAndroid Build Coastguard Worker {
21*f6dc9357SAndroid Build Coastguard Worker   fputs(s, _file);
22*f6dc9357SAndroid Build Coastguard Worker }
23*f6dc9357SAndroid Build Coastguard Worker 
NewLine()24*f6dc9357SAndroid Build Coastguard Worker void CPrintBenchCallback::NewLine()
25*f6dc9357SAndroid Build Coastguard Worker {
26*f6dc9357SAndroid Build Coastguard Worker   fputc('\n', _file);
27*f6dc9357SAndroid Build Coastguard Worker }
28*f6dc9357SAndroid Build Coastguard Worker 
CheckBreak()29*f6dc9357SAndroid Build Coastguard Worker HRESULT CPrintBenchCallback::CheckBreak()
30*f6dc9357SAndroid Build Coastguard Worker {
31*f6dc9357SAndroid Build Coastguard Worker   return NConsoleClose::TestBreakSignal() ? E_ABORT: S_OK;
32*f6dc9357SAndroid Build Coastguard Worker }
33*f6dc9357SAndroid Build Coastguard Worker 
BenchCon(DECL_EXTERNAL_CODECS_LOC_VARS const CObjectVector<CProperty> & props,UInt32 numIterations,FILE * f)34*f6dc9357SAndroid Build Coastguard Worker HRESULT BenchCon(DECL_EXTERNAL_CODECS_LOC_VARS
35*f6dc9357SAndroid Build Coastguard Worker     const CObjectVector<CProperty> &props, UInt32 numIterations, FILE *f)
36*f6dc9357SAndroid Build Coastguard Worker {
37*f6dc9357SAndroid Build Coastguard Worker   CPrintBenchCallback callback;
38*f6dc9357SAndroid Build Coastguard Worker   callback._file = f;
39*f6dc9357SAndroid Build Coastguard Worker   return Bench(EXTERNAL_CODECS_LOC_VARS
40*f6dc9357SAndroid Build Coastguard Worker       &callback, NULL, props, numIterations, true);
41*f6dc9357SAndroid Build Coastguard Worker }
42