#ifndef __COMMON__TYPES__HPP
#define __COMMON__TYPES__HPP

#include <set>
#include <map>
#include <tr1/unordered_set>
#include <tr1/unordered_map>

namespace llvm
{
  class Value;
  class Argument;
  class Function;
}

class results_t;
class EscapeAnalysis;
class AliasTracker;

typedef std::map<const llvm::Function*, EscapeAnalysis*> escape_map;
typedef std::map<const llvm::Function*, AliasTracker*> alias_map;
typedef std::set<const llvm::Function*> function_set;
typedef std::set<const llvm::Value*> value_set;
typedef std::tr1::unordered_set<const llvm::Value*> vset;
typedef std::set<const llvm::Argument*> arg_set;
typedef std::map<const llvm::Value*, const llvm::Value*> value_map;
typedef std::multimap<const llvm::Value*, const llvm::Value*> value_multimap;
typedef std::set<short> level_set;

#endif // __COMMON__TYPES__HPP
