1//===- EndianStream.h - Stream ops with endian specific data ----*- C++ -*-===//
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
7//===----------------------------------------------------------------------===//
9// This file defines utilities for operating on streams that have endian
12//===----------------------------------------------------------------------===//
14#ifndef LLVM_SUPPORT_ENDIANSTREAM_H
15#define LLVM_SUPPORT_ENDIANSTREAM_H
27template <
typename value_type>
30 for (
const auto orig : values) {
32 os.
write((
const char *)&value,
sizeof(value_type));
36template <
typename value_type>
39 os.
write((
const char *)&value,
sizeof(value_type));
53template <
typename value_type>
56 for (value_type v : vals)
60template <
typename value_type>
63 Out.
append((
const char *)&V, (
const char *)&V +
sizeof(value_type));
66/// Adapter to write values to a stream in a particular byte order.
74 template <
typename value_type>
void write(value_type Val) {
79}
// end namespace endian
81}
// end namespace support
82}
// end namespace llvm
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
This file defines the SmallVector class.
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
void append(ItTy in_start, ItTy in_end)
Add the specified range to the end of the SmallVector.
This class implements an extremely fast bulk output stream that can only output to a stream.
raw_ostream & write(unsigned char C)
void write_array(raw_ostream &os, ArrayRef< value_type > values, endianness endian)
value_type byte_swap(value_type value, endianness endian)
void write< float >(raw_ostream &os, float value, endianness endian)
void write< double >(raw_ostream &os, double value, endianness endian)
void write(void *memory, value_type value, endianness endian)
Write a value to memory with a particular endianness.
This is an optimization pass for GlobalISel generic memory operations.
To bit_cast(const From &from) noexcept
void write(ArrayRef< value_type > Val)
void write(value_type Val)
Writer(raw_ostream &OS, endianness Endian)