From 0165a2ca897598bb95baec031362921565e24f2b Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Thu, 30 Jul 2009 03:47:15 +0000 Subject: Twine: Provide [u]int{32,64} conversions via implicit constructors instead of explicitly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77576 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/ADT/Twine.h | 45 +++++++++++++++++++++++++++++++-------------- 1 file changed, 31 insertions(+), 14 deletions(-) (limited to 'include') diff --git a/include/llvm/ADT/Twine.h b/include/llvm/ADT/Twine.h index 66a4ad3..3022812 100644 --- a/include/llvm/ADT/Twine.h +++ b/include/llvm/ADT/Twine.h @@ -101,14 +101,21 @@ namespace llvm { /// A pointer to a uint64_t value, to render as an unsigned decimal /// integer. - UDecKind, + UDec32Kind, - /// A pointer to a uint64_t value, to render as an unsigned hexadecimal + /// A pointer to a uint64_t value, to render as a signed decimal integer. + SDec32Kind, + + /// A pointer to a uint64_t value, to render as an unsigned decimal /// integer. - UHexKind, + UDec64Kind, /// A pointer to a uint64_t value, to render as a signed decimal integer. - SDecKind + SDec64Kind, + + /// A pointer to a uint64_t value, to render as an unsigned hexadecimal + /// integer. + UHexKind }; private: @@ -244,6 +251,26 @@ namespace llvm { assert(isValid() && "Invalid twine!"); } + /// Construct a twine to print \arg Val as an unsigned decimal integer. + Twine(const uint32_t &Val) + : LHS(&Val), LHSKind(UDec32Kind), RHSKind(EmptyKind) { + } + + /// Construct a twine to print \arg Val as a signed decimal integer. + Twine(const int32_t &Val) + : LHS(&Val), LHSKind(SDec32Kind), RHSKind(EmptyKind) { + } + + /// Construct a twine to print \arg Val as an unsigned decimal integer. + Twine(const uint64_t &Val) + : LHS(&Val), LHSKind(UDec64Kind), RHSKind(EmptyKind) { + } + + /// Construct a twine to print \arg Val as a signed decimal integer. + Twine(const int64_t &Val) + : LHS(&Val), LHSKind(SDec64Kind), RHSKind(EmptyKind) { + } + // FIXME: Unfortunately, to make sure this is as efficient as possible we // need extra binary constructors from particular types. We can't rely on // the compiler to be smart enough to fold operator+()/concat() down to the @@ -271,16 +298,6 @@ namespace llvm { /// @name Numeric Conversions /// @{ - /// Construct a twine to print \arg Val as an unsigned decimal integer. - static Twine utostr(const uint64_t &Val) { - return Twine(&Val, UDecKind, 0, EmptyKind); - } - - /// Construct a twine to print \arg Val as a signed decimal integer. - static Twine itostr(const int64_t &Val) { - return Twine(&Val, SDecKind, 0, EmptyKind); - } - // Construct a twine to print \arg Val as an unsigned hexadecimal integer. static Twine utohexstr(const uint64_t &Val) { return Twine(&Val, UHexKind, 0, EmptyKind); -- cgit v1.1