8#ifndef INCLUDED_BALST_RESOLVER_FILEHELPER
9#define INCLUDED_BALST_RESOLVER_FILEHELPER
150#include <balscm_version.h>
154#if defined(BALST_OBJECTFILEFORMAT_RESOLVER_ELF)
164#include <bsl_variant.h>
181class Resolver_FileHelper {
185 typedef FilesystemUtil::FileDescriptor FileDescriptor;
188 typedef bsl::span<char> Span;
189 typedef bsl::span<const char> CSpan;
190 typedef bsl::ptrdiff_t ptrdiff_t;
197 enum { k_DEFAULT_SCRATCH_BUF_LEN = (1 << 15) - 64 };
200 typedef FilesystemUtil::Offset Offset;
214 FileReader(FileDescriptor fd);
222 Offset fileSize()
const;
231 Offset offset)
const;
239 CSpan readBytes(
const Span& writeSpan, Offset offset)
const;
242 class MappedFileReader {
244 const CSpan d_mappedFile;
251 MappedFileReader(
const CSpan& mappedFile);
256 Offset fileSize()
const;
267 Offset offset)
const;
275 CSpan readBytes(
const Span& writeSpan, Offset offset)
const;
280 MappedFileReader> ReaderType;
282 enum ReaderIndex { e_MONO_STATE,
294 Resolver_FileHelper(
const Resolver_FileHelper&);
295 Resolver_FileHelper& operator=(
const Resolver_FileHelper&);
301 Resolver_FileHelper();
309 int openFile(
const char *fileName);
314 int openMappedFile(
const CSpan& mappedFile);
319 Offset fileSize()
const;
330 Offset offset)
const;
338 CSpan readBytes(
const Span& outSpan, Offset offset)
const;
346 int readExact(
const Span& outSpan, Offset offset)
const;
359int Resolver_FileHelper::readExact(
const Span& outSpan, Offset offset)
const
363 CSpan res = readBytes(outSpan, offset);
364 if (res.size() != outSpan.size() || res.data() != outSpan.data()) {
Definition bslstl_stringview.h:471
Definition bslstl_variant.h:3806
#define BSLS_ASSERT(X)
Definition bsls_assert.h:1976
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
Definition balst_objectfileformat.h:152
Definition bdls_filesystemutil.h:364
Definition bslstl_monostate.h:77
std::size_t UintPtr
Definition bsls_types.h:128
std::ptrdiff_t IntPtr
Definition bsls_types.h:132