18cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/** 28cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @file common_option.h 38cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * Declaration of entry point of pp tools, implementation file add common 48cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * options of pp tools and some miscelleaneous functions 58cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * 68cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @remark Copyright 2003 OProfile authors 78cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @remark Read the file COPYING 88cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * 98cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @author John Levon 108cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @author Philippe Elie 118cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd */ 128cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 138cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#ifndef COMMON_OPTION_H 148cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#define COMMON_OPTION_H 158cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 168cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include <vector> 178cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include <list> 188cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 198cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include "arrange_profiles.h" 208cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include "demangle_symbol.h" 218cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 228cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddnamespace options { 238cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd extern bool verbose; 248cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd extern double threshold; 258cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd extern std::string threshold_opt; 268cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd extern std::string command_options; 278cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd extern std::vector<std::string> image_path; 288cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd extern std::string root_path; 298cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 308cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd struct spec { 318cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd std::list<std::string> common; 328cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd std::list<std::string> first; 338cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd std::list<std::string> second; 348cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd }; 358cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd} 368cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 378cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/** 388cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * prototype of a pp tool entry point. This entry point is called 398cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * by run_pp_tool 408cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd */ 418cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddtypedef int (*pp_fct_run_t)(options::spec const & spec); 428cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 438cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/** 448cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @param argc command line number of argument 458cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @param argv command line argument pointer array 468cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @param fct function to run to start this pp tool 478cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * 488cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * Provide a common entry to all pp tools, parsing all options, handling 498cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * common options and providing the necessary try catch clause 508cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd */ 518cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddint run_pp_tool(int argc, char const * argv[], pp_fct_run_t fct); 528cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 538cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/** 548cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @param option one of [smart,none,normal] 558cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * 568cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * return the demangle_type of option or throw an exception if option 578cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * is not valid. 588cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd */ 598cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodddemangle_type handle_demangle_option(std::string const & option); 608cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 618cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/** 628cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @param mergespec merge option 638cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @param allow_lib is merge)lib allowed in mergespec 648cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @param exclude_dependent user specified --exclude-dependent 658cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * 668cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * parse merge option and return a merge_option filled from it. 678cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * 688cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd */ 698cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddmerge_option handle_merge_option(std::vector<std::string> const & mergespec, 708cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd bool allow_lib, bool exclude_dependent); 718cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 728cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#endif /* !COMMON_OPTION_H */ 73