13#ifndef LLVM_EXECUTIONENGINE_ORC_MEMORYACCESS_H
14#define LLVM_EXECUTIONENGINE_ORC_MEMORYACCESS_H
90 std::promise<MSVCPError> ResultP;
91 auto ResultF = ResultP.get_future();
92 writeUInt8sAsync(Ws, [&](
Error Err) { ResultP.set_value(std::move(Err)); });
97 std::promise<MSVCPError> ResultP;
98 auto ResultF = ResultP.get_future();
100 [&](
Error Err) { ResultP.set_value(std::move(Err)); });
101 return ResultF.get();
105 std::promise<MSVCPError> ResultP;
106 auto ResultF = ResultP.get_future();
107 writeUInt32sAsync(Ws,
108 [&](
Error Err) { ResultP.set_value(std::move(Err)); });
109 return ResultF.get();
113 std::promise<MSVCPError> ResultP;
114 auto ResultF = ResultP.get_future();
115 writeUInt64sAsync(Ws,
116 [&](
Error Err) { ResultP.set_value(std::move(Err)); });
117 return ResultF.get();
121 std::promise<MSVCPError> ResultP;
122 auto ResultF = ResultP.get_future();
123 writePointersAsync(Ws,
124 [&](
Error Err) { ResultP.set_value(std::move(Err)); });
125 return ResultF.get();
129 std::promise<MSVCPError> ResultP;
130 auto ResultF = ResultP.get_future();
131 writeBuffersAsync(Ws,
132 [&](
Error Err) { ResultP.set_value(std::move(Err)); });
133 return ResultF.get();
137 std::promise<MSVCPExpected<ReadUIntsResult<uint8_t>>>
P;
139 P.set_value(std::move(Result));
141 return P.get_future().get();
145 std::promise<MSVCPExpected<ReadUIntsResult<uint16_t>>>
P;
147 P.set_value(std::move(Result));
149 return P.get_future().get();
153 std::promise<MSVCPExpected<ReadUIntsResult<uint32_t>>>
P;
155 P.set_value(std::move(Result));
157 return P.get_future().get();
161 std::promise<MSVCPExpected<ReadUIntsResult<uint64_t>>>
P;
163 P.set_value(std::move(Result));
165 return P.get_future().get();
169 std::promise<MSVCPExpected<ReadPointersResult>>
P;
171 P.set_value(std::move(Result));
173 return P.get_future().get();
177 std::promise<MSVCPExpected<ReadBuffersResult>>
P;
179 P.set_value(std::move(Result));
181 return P.get_future().get();
185 std::promise<MSVCPExpected<ReadStringsResult>>
P;
187 P.set_value(std::move(Result));
189 return P.get_future().get();
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
Lightweight error class with error context and mandatory checking.
Tagged union holding either a T or a Error.
APIs for manipulating memory in the target process.
Expected< ReadUIntsResult< uint64_t > > readUInt64s(ArrayRef< ExecutorAddr > Rs)
Expected< ReadBuffersResult > readBuffers(ArrayRef< ExecutorAddrRange > Rs)
Error writeBuffers(ArrayRef< tpctypes::BufferWrite > Ws)
virtual void writeUInt64sAsync(ArrayRef< tpctypes::UInt64Write > Ws, WriteResultFn OnWriteComplete)=0
virtual void readPointersAsync(ArrayRef< ExecutorAddr > Rs, OnReadPointersCompleteFn OnComplete)=0
virtual void readUInt8sAsync(ArrayRef< ExecutorAddr > Rs, OnReadUIntsCompleteFn< uint8_t > OnComplete)=0
Error writeUInt8s(ArrayRef< tpctypes::UInt8Write > Ws)
virtual void readUInt16sAsync(ArrayRef< ExecutorAddr > Rs, OnReadUIntsCompleteFn< uint16_t > OnComplete)=0
virtual void readUInt32sAsync(ArrayRef< ExecutorAddr > Rs, OnReadUIntsCompleteFn< uint32_t > OnComplete)=0
Expected< ReadStringsResult > readStrings(ArrayRef< ExecutorAddr > Rs)
std::vector< std::string > ReadStringsResult
virtual void writeUInt16sAsync(ArrayRef< tpctypes::UInt16Write > Ws, WriteResultFn OnWriteComplete)=0
Error writeUInt16s(ArrayRef< tpctypes::UInt16Write > Ws)
virtual void writeUInt32sAsync(ArrayRef< tpctypes::UInt32Write > Ws, WriteResultFn OnWriteComplete)=0
virtual void writeBuffersAsync(ArrayRef< tpctypes::BufferWrite > Ws, WriteResultFn OnWriteComplete)=0
virtual void writeUInt8sAsync(ArrayRef< tpctypes::UInt8Write > Ws, WriteResultFn OnWriteComplete)=0
virtual void readUInt64sAsync(ArrayRef< ExecutorAddr > Rs, OnReadUIntsCompleteFn< uint64_t > OnComplete)=0
virtual void readStringsAsync(ArrayRef< ExecutorAddr > Rs, OnReadStringsCompleteFn OnComplete)=0
virtual void writePointersAsync(ArrayRef< tpctypes::PointerWrite > Ws, WriteResultFn OnWriteComplete)=0
std::vector< ExecutorAddr > ReadPointersResult
Expected< ReadPointersResult > readPointers(ArrayRef< ExecutorAddr > Rs)
Error writePointers(ArrayRef< tpctypes::PointerWrite > Ws)
Expected< ReadUIntsResult< uint8_t > > readUInt8s(ArrayRef< ExecutorAddr > Rs)
std::vector< std::vector< uint8_t > > ReadBuffersResult
Error writeUInt32s(ArrayRef< tpctypes::UInt32Write > Ws)
Error writeUInt64s(ArrayRef< tpctypes::UInt64Write > Ws)
std::vector< T > ReadUIntsResult
virtual void readBuffersAsync(ArrayRef< ExecutorAddrRange > Rs, OnReadBuffersCompleteFn OnComplete)=0
Expected< ReadUIntsResult< uint32_t > > readUInt32s(ArrayRef< ExecutorAddr > Rs)
Expected< ReadUIntsResult< uint16_t > > readUInt16s(ArrayRef< ExecutorAddr > Rs)