#ifndef LLVM_IR_VALUE_H
#define LLVM_IR_VALUE_H
#include "llvm-c/Types.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/iterator_range.h"
#include "llvm/IR/Use.h"
#include "llvm/Support/Alignment.h"
#include "llvm/Support/CBindingWrapping.h"
#include "llvm/Support/Casting.h"
#include <cassert>
#include <iterator>
#include <memory>
namespace llvm {
class APInt;
class Argument;
class BasicBlock;
class Constant;
class ConstantData;
class ConstantAggregate;
class DataLayout;
class Function;
class GlobalAlias;
class GlobalIFunc;
class GlobalObject;
class GlobalValue;
class GlobalVariable;
class InlineAsm;
class Instruction;
class LLVMContext;
class MDNode;
class Module;
class ModuleSlotTracker;
class raw_ostream;
template<typename ValueTy> class StringMapEntry;
class Twine;
class Type;
class User;
ValueName;
class Value { … };
struct ValueDeleter { … };
unique_value;
inline raw_ostream &operator<<(raw_ostream &OS, const Value &V) { … }
void Use::set(Value *V) { … }
Value *Use::operator=(Value *RHS) { … }
const Use &Use::operator=(const Use &RHS) { … }
template <class Compare> void Value::sortUseList(Compare Cmp) { … }
template <> struct isa_impl<Constant, Value> { … };
template <> struct isa_impl<ConstantData, Value> { … };
template <> struct isa_impl<ConstantAggregate, Value> { … };
template <> struct isa_impl<Argument, Value> { … };
template <> struct isa_impl<InlineAsm, Value> { … };
template <> struct isa_impl<Instruction, Value> { … };
template <> struct isa_impl<BasicBlock, Value> { … };
template <> struct isa_impl<Function, Value> { … };
template <> struct isa_impl<GlobalVariable, Value> { … };
template <> struct isa_impl<GlobalAlias, Value> { … };
template <> struct isa_impl<GlobalIFunc, Value> { … };
template <> struct isa_impl<GlobalValue, Value> { … };
template <> struct isa_impl<GlobalObject, Value> { … };
DEFINE_ISA_CONVERSION_FUNCTIONS(…)
inline Value **unwrap(LLVMValueRef *Vals) { … }
template<typename T>
inline T **unwrap(LLVMValueRef *Vals, unsigned Length) { … }
inline LLVMValueRef *wrap(const Value **Vals) { … }
}
#endif