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