/**
* @file abi.h
*
* Contains internal ABI management class
*
* @remark Copyright 2002 OProfile authors
* @remark Read the file COPYING
*
* @author Graydon Hoare
*/
#ifndef OPROF_ABI_H
#define OPROF_ABI_H
#include <string>
#include <map>
#include <iosfwd>
struct abi_exception : std::exception {
std::string const desc;
explicit abi_exception(std::string const d);
~abi_exception() throw() {}
};
class abi {
public:
abi();
int need(std::string const key) const throw (abi_exception);
bool operator==(abi const & other) const;
friend std::ostream & operator<<(std::ostream & o, abi const & abi);
friend std::istream & operator>>(std::istream & i, abi & abi);
private:
std::map<std::string, int> slots;
};
#endif // OPROF_ABI_H