blob: b54ef7c5c4a72d88d2dc81538d780c51e2e8d78f [file] [log] [blame]
Mike Dodd8cfa7022010-11-17 11:12:26 -08001/**
2 * @file common_option.h
3 * Declaration of entry point of pp tools, implementation file add common
4 * options of pp tools and some miscelleaneous functions
5 *
6 * @remark Copyright 2003 OProfile authors
7 * @remark Read the file COPYING
8 *
9 * @author John Levon
10 * @author Philippe Elie
11 */
12
13#ifndef COMMON_OPTION_H
14#define COMMON_OPTION_H
15
16#include <vector>
17#include <list>
18
19#include "arrange_profiles.h"
20#include "demangle_symbol.h"
21
22namespace options {
23 extern bool verbose;
24 extern double threshold;
25 extern std::string threshold_opt;
26 extern std::string command_options;
27 extern std::vector<std::string> image_path;
28 extern std::string root_path;
29
30 struct spec {
31 std::list<std::string> common;
32 std::list<std::string> first;
33 std::list<std::string> second;
34 };
35}
36
37/**
38 * prototype of a pp tool entry point. This entry point is called
39 * by run_pp_tool
40 */
41typedef int (*pp_fct_run_t)(options::spec const & spec);
42
43/**
44 * @param argc command line number of argument
45 * @param argv command line argument pointer array
46 * @param fct function to run to start this pp tool
47 *
48 * Provide a common entry to all pp tools, parsing all options, handling
49 * common options and providing the necessary try catch clause
50 */
51int run_pp_tool(int argc, char const * argv[], pp_fct_run_t fct);
52
53/**
54 * @param option one of [smart,none,normal]
55 *
56 * return the demangle_type of option or throw an exception if option
57 * is not valid.
58 */
59demangle_type handle_demangle_option(std::string const & option);
60
61/**
62 * @param mergespec merge option
63 * @param allow_lib is merge)lib allowed in mergespec
64 * @param exclude_dependent user specified --exclude-dependent
65 *
66 * parse merge option and return a merge_option filled from it.
67 *
68 */
69merge_option handle_merge_option(std::vector<std::string> const & mergespec,
70 bool allow_lib, bool exclude_dependent);
71
72#endif /* !COMMON_OPTION_H */