Cast NULL when requested.

llvm-svn: 803
This commit is contained in:
Vikram S. Adve 2001-10-14 23:21:06 +00:00
parent de04672797
commit 6e4d106c21
1 changed files with 3 additions and 2 deletions

View File

@ -193,14 +193,15 @@ inline bool isa(Y Val) { return X::classof(Val); }
// cast<X> - Return the argument parameter cast to the specified type. This // cast<X> - Return the argument parameter cast to the specified type. This
// casting operator asserts that the type is correct, so it does not return null // casting operator asserts that the type is correct, so it does not return null
// on failure. Used Like this: // on failure. But it will correctly return NULL when the input is NULL.
// Used Like this:
// //
// cast< Instruction>(myVal)->getParent() // cast< Instruction>(myVal)->getParent()
// cast<const Instruction>(myVal)->getParent() // cast<const Instruction>(myVal)->getParent()
// //
template <class X, class Y> template <class X, class Y>
inline X *cast(Y Val) { inline X *cast(Y Val) {
assert(isa<X>(Val) && "Invalid cast argument type!"); assert((Val == 0 || isa<X>(Val)) && "Invalid cast argument type!");
return (X*)(real_type<Y>::Type)Val; return (X*)(real_type<Y>::Type)Val;
} }