1/** 2 * @file abi.h 3 * 4 * Contains internal ABI management class 5 * 6 * @remark Copyright 2002 OProfile authors 7 * @remark Read the file COPYING 8 * 9 * @author Graydon Hoare 10 */ 11 12#ifndef OPROF_ABI_H 13#define OPROF_ABI_H 14 15#include <string> 16#include <map> 17#include <iosfwd> 18 19struct abi_exception : std::exception { 20 std::string const desc; 21 22 explicit abi_exception(std::string const d); 23 24 ~abi_exception() throw() {} 25}; 26 27 28class abi { 29public: 30 abi(); 31 32 int need(std::string const key) const throw (abi_exception); 33 34 bool operator==(abi const & other) const; 35 friend std::ostream & operator<<(std::ostream & o, abi const & abi); 36 friend std::istream & operator>>(std::istream & i, abi & abi); 37 38private: 39 std::map<std::string, int> slots; 40}; 41 42#endif // OPROF_ABI_H 43