110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/**
210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @file abi.h
310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project *
410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * Contains internal ABI management class
510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project *
610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @remark Copyright 2002 OProfile authors
710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @remark Read the file COPYING
810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project *
910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @author Graydon Hoare
1010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project */
1110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
1210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#ifndef OPROF_ABI_H
1310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#define OPROF_ABI_H
1410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
1510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#include <string>
1610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#include <map>
1710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#include <iosfwd>
1810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
1910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectstruct abi_exception : std::exception {
2010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	std::string const desc;
2110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
2210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	explicit abi_exception(std::string const d);
2310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
2410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	~abi_exception() throw() {}
2510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project};
2610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
2710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
2810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectclass abi {
2910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectpublic:
3010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	abi();
3110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
3210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	int need(std::string const key) const throw (abi_exception);
3310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
3410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	bool operator==(abi const & other) const;
3510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	friend std::ostream & operator<<(std::ostream & o, abi const & abi);
3610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	friend std::istream & operator>>(std::istream & i, abi & abi);
3710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
3810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectprivate:
3910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	std::map<std::string, int> slots;
4010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project};
4110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
4210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#endif // OPROF_ABI_H
43