diff options
author | Chris Lattner <sabre@nondot.org> | 2002-04-28 19:55:58 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2002-04-28 19:55:58 +0000 |
commit | 31bcdb822fe9133b1973de51519d34e5813a6184 (patch) | |
tree | 63e213a6696aae199bddfb55496afd6523468ca1 /include/llvm/Constant.h | |
parent | 9ae93cdcc81c50cb865a56b51eb70b2d7d961ad6 (diff) | |
download | external_llvm-31bcdb822fe9133b1973de51519d34e5813a6184.zip external_llvm-31bcdb822fe9133b1973de51519d34e5813a6184.tar.gz external_llvm-31bcdb822fe9133b1973de51519d34e5813a6184.tar.bz2 |
Split ConstantVals.h into Constant.h and Constants.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2378 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Constant.h')
-rw-r--r-- | include/llvm/Constant.h | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/include/llvm/Constant.h b/include/llvm/Constant.h new file mode 100644 index 0000000..572d1d1 --- /dev/null +++ b/include/llvm/Constant.h @@ -0,0 +1,47 @@ +//===-- llvm/Constant.h - Constant class definition --------------*- C++ -*--=// +// +// This file contains the declaration of the Constant class. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CONSTANT_H +#define LLVM_CONSTANT_H + +#include "llvm/User.h" + +class Constant : public User { +protected: + inline Constant(const Type *Ty) : User(Ty, Value::ConstantVal) {} + ~Constant() {} + + // destroyConstant - Called if some element of this constant is no longer + // valid. At this point only other constants may be on the use_list for this + // constant. Any constants on our Use list must also be destroy'd. The + // implementation must be sure to remove the constant from the list of + // available cached constants. Implementations should call + // destroyConstantImpl as the last thing they do, to destroy all users and + // delete this. + // + virtual void destroyConstant() { assert(0 && "Not reached!"); } + void destroyConstantImpl(); +public: + // Specialize setName to handle symbol table majik... + virtual void setName(const std::string &name, SymbolTable *ST = 0); + + // Static constructor to get a '0' constant of arbitrary type... + static Constant *getNullValue(const Type *Ty); + + // isNullValue - Return true if this is the value that would be returned by + // getNullValue. + virtual bool isNullValue() const = 0; + + virtual void print(std::ostream &O) const; + + // Methods for support type inquiry through isa, cast, and dyn_cast: + static inline bool classof(const Constant *) { return true; } + static inline bool classof(const Value *V) { + return V->getValueType() == Value::ConstantVal; + } +}; + +#endif |