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