1 : // Copyright 2012 Google Inc. All Rights Reserved.
2 : //
3 : // Licensed under the Apache License, Version 2.0 (the "License");
4 : // you may not use this file except in compliance with the License.
5 : // You may obtain a copy of the License at
6 : //
7 : // http://www.apache.org/licenses/LICENSE-2.0
8 : //
9 : // Unless required by applicable law or agreed to in writing, software
10 : // distributed under the License is distributed on an "AS IS" BASIS,
11 : // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 : // See the License for the specific language governing permissions and
13 : // limitations under the License.
14 : #ifndef SYZYGY_GRINDER_GRINDER_APP_H_
15 : #define SYZYGY_GRINDER_GRINDER_APP_H_
16 :
17 : #include "base/files/file_path.h"
18 : #include "syzygy/application/application.h"
19 : #include "syzygy/grinder/grinder.h"
20 :
21 m : namespace grinder {
22 :
23 : // The application class that takes care of running Grinder over a set of
24 : // profiler trace files.
25 m : class GrinderApp : public application::AppImplBase {
26 m : public:
27 m : GrinderApp();
28 :
29 : // The mode of processing we are performing.
30 m : enum Mode {
31 m : kBasicBlockEntry,
32 m : kCoverage,
33 m : kIndexedFrequencyData,
34 m : kMemReplay,
35 m : kProfile,
36 m : kSample,
37 m : };
38 :
39 : // @name Implementation of the AppImplbase interface.
40 : // @{
41 m : bool ParseCommandLine(const base::CommandLine* command_line);
42 m : int Run();
43 m : void TearDown();
44 : // @}
45 :
46 : // @name Utility functions
47 : // @{
48 m : void PrintUsage(const base::FilePath& program,
49 m : const base::StringPiece& message);
50 : // @}
51 :
52 m : protected:
53 m : std::vector<base::FilePath> trace_files_;
54 m : base::FilePath output_file_;
55 m : Mode mode_;
56 m : scoped_ptr<GrinderInterface> grinder_;
57 m : };
58 :
59 m : } // namespace grinder
60 :
61 : #endif // SYZYGY_GRINDER_GRINDER_APP_H_
|