1//===- NativeFormatting.h - Low level formatting helpers ---------*- C++-*-===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8 9#ifndef LLVM_SUPPORT_NATIVE_FORMATTING_H 10#define LLVM_SUPPORT_NATIVE_FORMATTING_H 11 12#include "llvm/ADT/Optional.h" 13#include "llvm/Support/raw_ostream.h" 14 15#include <cstdint> 16 17namespace llvm { 18enum class FloatStyle { Exponent, ExponentUpper, Fixed, Percent }; 19enum class IntegerStyle { 20 Integer, 21 Number, 22}; 23enum class HexPrintStyle { Upper, Lower, PrefixUpper, PrefixLower }; 24 25size_t getDefaultPrecision(FloatStyle Style); 26 27bool isPrefixedHexStyle(HexPrintStyle S); 28 29void write_integer(raw_ostream &S, unsigned int N, size_t MinDigits, 30 IntegerStyle Style); 31void write_integer(raw_ostream &S, int N, size_t MinDigits, IntegerStyle Style); 32void write_integer(raw_ostream &S, unsigned long N, size_t MinDigits, 33 IntegerStyle Style); 34void write_integer(raw_ostream &S, long N, size_t MinDigits, 35 IntegerStyle Style); 36void write_integer(raw_ostream &S, unsigned long long N, size_t MinDigits, 37 IntegerStyle Style); 38void write_integer(raw_ostream &S, long long N, size_t MinDigits, 39 IntegerStyle Style); 40 41void write_hex(raw_ostream &S, uint64_t N, HexPrintStyle Style, 42 Optional<size_t> Width = None); 43void write_double(raw_ostream &S, double D, FloatStyle Style, 44 Optional<size_t> Precision = None); 45} 46 47#endif 48 49