-template<>
-struct ScalarTraits<Hex16> {
- static void output(const Hex16 &Val, void*, llvm::raw_ostream &Out) {
- uint16_t Num = Val;
- Out << format("0x%04X", Num);
- }
- static llvm::StringRef input(llvm::StringRef Scalar, void*, Hex16 &Val) {
- uint64_t n;
- if ( getAsUnsignedInteger(Scalar, 0, n) )
- return "invalid hex16 number";
- if ( n > 0xFFFF )
- return "out of range hex16 number";
- Val = n;
- return StringRef();
- }
-};
-
-template<>
-struct ScalarTraits<Hex32> {
- static void output(const Hex32 &Val, void*, llvm::raw_ostream &Out) {
- uint32_t Num = Val;
- Out << format("0x%08X", Num);
- }
- static llvm::StringRef input(llvm::StringRef Scalar, void*, Hex32 &Val) {
- uint64_t n;
- if ( getAsUnsignedInteger(Scalar, 0, n) )
- return "invalid hex32 number";
- if ( n > 0xFFFFFFFFUL )
- return "out of range hex32 number";
- Val = n;
- return StringRef();
- }
-};
+StringRef ScalarTraits<int64_t>::input(StringRef Scalar, void *, int64_t &Val) {
+ long long N;
+ if (getAsSignedInteger(Scalar, 0, N))
+ return "invalid number";
+ Val = N;
+ return StringRef();
+}