Add llvm::hexDigitValue to convert single characters to hex.

This is duplicated in a couple places in the codebase. Adopt this in APFloat.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172851 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Jordan Rose 2013-01-18 21:45:30 +00:00
parent c91cbb9b0c
commit 8a53a8329f
2 changed files with 12 additions and 20 deletions

View File

@ -27,6 +27,17 @@ static inline char hexdigit(unsigned X, bool LowerCase = false) {
return X < 10 ? '0' + X : HexChar + X - 10;
}
/// Interpret the given character \p C as a hexadecimal digit and return its
/// value.
///
/// If \p C is not a valid hex digit, -1U is returned.
static inline unsigned hexDigitValue(char C) {
if (C >= '0' && C <= '9') return C-'0';
if (C >= 'a' && C <= 'f') return C-'a'+10U;
if (C >= 'A' && C <= 'F') return C-'A'+10U;
return -1U;
}
/// utohex_buffer - Emit the specified number into the buffer specified by
/// BufferEnd, returning a pointer to the start of the string. This can be used
/// like this: (note that the buffer must be large enough to handle any number):

View File

@ -16,6 +16,7 @@
#include "llvm/ADT/APSInt.h"
#include "llvm/ADT/FoldingSet.h"
#include "llvm/ADT/Hashing.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/MathExtras.h"
@ -101,26 +102,6 @@ decDigitValue(unsigned int c)
return c - '0';
}
static unsigned int
hexDigitValue(unsigned int c)
{
unsigned int r;
r = c - '0';
if (r <= 9)
return r;
r = c - 'A';
if (r <= 5)
return r + 10;
r = c - 'a';
if (r <= 5)
return r + 10;
return -1U;
}
/* Return the value of a decimal exponent of the form
[+-]ddddddd.