LLDB  mainline
DumpDataExtractor.h
Go to the documentation of this file.
1 //===-- DumpDataExtractor.h -------------------------------------*- 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 LLDB_CORE_DUMPDATAEXTRACTOR_H
10 #define LLDB_CORE_DUMPDATAEXTRACTOR_H
11 
12 #include "lldb/lldb-enumerations.h"
13 #include "lldb/lldb-types.h"
14 
15 #include <stddef.h>
16 #include <stdint.h>
17 
18 namespace lldb_private {
19 class DataExtractor;
20 class ExecutionContextScope;
21 class Stream;
22 
23 /// Dumps \a item_count objects into the stream \a s.
24 ///
25 /// Dumps \a item_count objects using \a item_format, each of which
26 /// are \a item_byte_size bytes long starting at offset \a offset
27 /// bytes into the contained data, into the stream \a s. \a
28 /// num_per_line objects will be dumped on each line before a new
29 /// line will be output. If \a base_addr is a valid address, then
30 /// each new line of output will be preceded by the address value
31 /// plus appropriate offset, and a colon and space. Bitfield values
32 /// can be dumped by calling this function multiple times with the
33 /// same start offset, format and size, yet differing \a
34 /// item_bit_size and \a item_bit_offset values.
35 ///
36 /// \param[in] s
37 /// The stream to dump the output to. This value can not be nullptr.
38 ///
39 /// \param[in] offset
40 /// The offset into the data at which to start dumping.
41 ///
42 /// \param[in] item_format
43 /// The format to use when dumping each item.
44 ///
45 /// \param[in] item_byte_size
46 /// The byte size of each item.
47 ///
48 /// \param[in] item_count
49 /// The number of items to dump.
50 ///
51 /// \param[in] num_per_line
52 /// The number of items to display on each line.
53 ///
54 /// \param[in] base_addr
55 /// The base address that gets added to the offset displayed on
56 /// each line if the value is valid. Is \a base_addr is
57 /// LLDB_INVALID_ADDRESS then no address values will be prepended
58 /// to any lines.
59 ///
60 /// \param[in] item_bit_size
61 /// If the value to display is a bitfield, this value should
62 /// be the number of bits that the bitfield item has within the
63 /// item's byte size value. This function will need to be called
64 /// multiple times with identical \a offset and \a item_byte_size
65 /// values in order to display multiple bitfield values that
66 /// exist within the same integer value. If the items being
67 /// displayed are not bitfields, this value should be zero.
68 ///
69 /// \param[in] item_bit_offset
70 /// If the value to display is a bitfield, this value should
71 /// be the offset in bits, or shift right amount, that the
72 /// bitfield item occupies within the item's byte size value.
73 /// This function will need to be called multiple times with
74 /// identical \a offset and \a item_byte_size values in order
75 /// to display multiple bitfield values that exist within the
76 /// same integer value. If the items being displayed are not
77 /// bitfields, this value should be zero.
78 ///
79 /// \return
80 /// The offset at which dumping ended.
82 DumpDataExtractor(const DataExtractor &DE, Stream *s, lldb::offset_t offset,
83  lldb::Format item_format, size_t item_byte_size,
84  size_t item_count, size_t num_per_line, uint64_t base_addr,
85  uint32_t item_bit_size, uint32_t item_bit_offset,
86  ExecutionContextScope *exe_scope = nullptr);
87 
88 void DumpHexBytes(Stream *s, const void *src, size_t src_len,
89  uint32_t bytes_per_line, lldb::addr_t base_addr);
90 }
91 
92 #endif
Enumerations for broadcasting.
Definition: SBLaunchInfo.h:14
void DumpHexBytes(Stream *s, const void *src, size_t src_len, uint32_t bytes_per_line, lldb::addr_t base_addr)
uint64_t offset_t
Definition: lldb-types.h:87
lldb::offset_t DumpDataExtractor(const DataExtractor &DE, Stream *s, lldb::offset_t offset, lldb::Format item_format, size_t item_byte_size, size_t item_count, size_t num_per_line, uint64_t base_addr, uint32_t item_bit_size, uint32_t item_bit_offset, ExecutionContextScope *exe_scope=nullptr)
Dumps item_count objects into the stream s.
uint64_t addr_t
Definition: lldb-types.h:83