/** * @file parse_filename.h * Split a sample filename into its constituent parts * * @remark Copyright 2003 OProfile authors * @remark Read the file COPYING * * @author Philippe Elie */ #ifndef PARSE_FILENAME_H #define PARSE_FILENAME_H #include <string> class extra_images; /** * a convenience class to store result of parse_filename() */ struct parsed_filename { std::string image; std::string lib_image; /// destination image for call graph file, empty if this sample /// file is not a callgraph file. std::string cg_image; std::string event; std::string count; std::string unitmask; std::string tgid; std::string tid; std::string cpu; /// return true if the profile specification are identical. bool profile_spec_equal(parsed_filename const & parsed); /** * the original sample filename from which the * above components are built */ std::string filename; bool jit_dumpfile_exists; }; /// debugging helper std::ostream & operator<<(std::ostream &, parsed_filename const &); /** * parse a sample filename * @param filename in: a sample filename * @param extra_found_images binary image location * * filename is split into constituent parts, the lib_image is optional * and can be empty on successfull call. All other error are fatal. * Filenames are encoded as according to PP:3.19 to PP:3.25 * * all errors throw an std::invalid_argument exception */ parsed_filename parse_filename(std::string const & filename, extra_images const & extra_found_images); #endif /* !PARSE_FILENAME_H */