23 #include <system_error>
24 #if !defined(_MSC_VER) && !defined(__MINGW32__)
31 #define DEBUG_TYPE "Data-stream"
44 STATISTIC(NumStreamFetches,
"Number of calls to Data stream fetch");
57 DataFileStreamer() : Fd(0) {}
58 ~DataFileStreamer()
override { close(Fd); }
59 size_t GetBytes(
unsigned char *buf,
size_t len)
override {
61 return read(Fd, buf, len);
64 std::error_code OpenFile(
const std::string &Filename) {
65 if (Filename ==
"-") {
68 return std::error_code();
77 std::unique_ptr<DataStreamer>
79 std::unique_ptr<DataFileStreamer> s = make_unique<DataFileStreamer>();
80 if (std::error_code e = s->OpenFile(Filename)) {
81 *StrError = std::string(
"Could not open ") + Filename +
": " +
STATISTIC(NumFunctions,"Total number of functions")
value_type read(const void *memory)
Read a value of a particular endianness from memory.
std::string StrError()
Returns a string representation of the errno value, using whatever thread-safe variant of strerror() ...
virtual size_t GetBytes(unsigned char *buf, size_t len)=0
Fetch bytes [start-end) from the stream, and write them to the buffer pointed to by buf...
std::error_code ChangeStdinToBinary()
std::error_code openFileForRead(const Twine &Name, int &ResultFD)
std::unique_ptr< DataStreamer > getDataFileStreamer(const std::string &Filename, std::string *Err)