/** * @file common_option.h * Declaration of entry point of pp tools, implementation file add common * options of pp tools and some miscelleaneous functions * * @remark Copyright 2003 OProfile authors * @remark Read the file COPYING * * @author John Levon * @author Philippe Elie */ #ifndef COMMON_OPTION_H #define COMMON_OPTION_H #include <vector> #include <list> #include "arrange_profiles.h" #include "demangle_symbol.h" namespace options { extern bool verbose; extern double threshold; extern std::string threshold_opt; extern std::string command_options; extern std::vector<std::string> image_path; extern std::string root_path; struct spec { std::list<std::string> common; std::list<std::string> first; std::list<std::string> second; }; } /** * prototype of a pp tool entry point. This entry point is called * by run_pp_tool */ typedef int (*pp_fct_run_t)(options::spec const & spec); /** * @param argc command line number of argument * @param argv command line argument pointer array * @param fct function to run to start this pp tool * * Provide a common entry to all pp tools, parsing all options, handling * common options and providing the necessary try catch clause */ int run_pp_tool(int argc, char const * argv[], pp_fct_run_t fct); /** * @param option one of [smart,none,normal] * * return the demangle_type of option or throw an exception if option * is not valid. */ demangle_type handle_demangle_option(std::string const & option); /** * @param mergespec merge option * @param allow_lib is merge)lib allowed in mergespec * @param exclude_dependent user specified --exclude-dependent * * parse merge option and return a merge_option filled from it. * */ merge_option handle_merge_option(std::vector<std::string> const & mergespec, bool allow_lib, bool exclude_dependent); #endif /* !COMMON_OPTION_H */