mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-04-10 11:41:37 +00:00

This introduces a new type-safe general purpose formatting library. It provides compile-time type safety, does not require a format specifier (since the type is deduced), and provides mechanisms for extending the format capability to user defined types, and overriding the formatting behavior for existing types. This patch additionally adds documentation for the API to the LLVM programmer's manual. Mailing List Thread: http://lists.llvm.org/pipermail/llvm-dev/2016-October/105836.html Differential Revision: https://reviews.llvm.org/D25587 llvm-svn: 286682
48 lines
1.6 KiB
C++
48 lines
1.6 KiB
C++
//===- NativeFormatting.h - Low level formatting helpers ---------*- C++-*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_SUPPORT_NATIVE_FORMATTING_H
|
|
#define LLVM_SUPPORT_NATIVE_FORMATTING_H
|
|
|
|
#include "llvm/ADT/Optional.h"
|
|
#include "llvm/Support/raw_ostream.h"
|
|
|
|
#include <cstdint>
|
|
|
|
namespace llvm {
|
|
enum class FloatStyle { Exponent, ExponentUpper, Fixed, Percent };
|
|
enum class IntegerStyle {
|
|
Integer,
|
|
Number,
|
|
};
|
|
enum class HexPrintStyle { Upper, Lower, PrefixUpper, PrefixLower };
|
|
|
|
size_t getDefaultPrecision(FloatStyle Style);
|
|
|
|
bool isPrefixedHexStyle(HexPrintStyle S);
|
|
|
|
void write_integer(raw_ostream &S, unsigned int N, size_t MinDigits,
|
|
IntegerStyle Style);
|
|
void write_integer(raw_ostream &S, int N, size_t MinDigits, IntegerStyle Style);
|
|
void write_integer(raw_ostream &S, unsigned long N, size_t MinDigits,
|
|
IntegerStyle Style);
|
|
void write_integer(raw_ostream &S, long N, size_t MinDigits,
|
|
IntegerStyle Style);
|
|
void write_integer(raw_ostream &S, unsigned long long N, size_t MinDigits,
|
|
IntegerStyle Style);
|
|
void write_integer(raw_ostream &S, long long N, size_t MinDigits,
|
|
IntegerStyle Style);
|
|
|
|
void write_hex(raw_ostream &S, uint64_t N, HexPrintStyle Style,
|
|
Optional<size_t> Width = None);
|
|
void write_double(raw_ostream &S, double D, FloatStyle Style,
|
|
Optional<size_t> Precision = None);
|
|
}
|
|
|
|
#endif |