1*9880d681SAndroid Build Coastguard Worker //===---- llvm/Support/DataStream.h - Lazy bitcode streaming ----*- C++ -*-===// 2*9880d681SAndroid Build Coastguard Worker // 3*9880d681SAndroid Build Coastguard Worker // The LLVM Compiler Infrastructure 4*9880d681SAndroid Build Coastguard Worker // 5*9880d681SAndroid Build Coastguard Worker // This file is distributed under the University of Illinois Open Source 6*9880d681SAndroid Build Coastguard Worker // License. See LICENSE.TXT for details. 7*9880d681SAndroid Build Coastguard Worker // 8*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===// 9*9880d681SAndroid Build Coastguard Worker // 10*9880d681SAndroid Build Coastguard Worker // This header defines DataStreamer, which fetches bytes of data from 11*9880d681SAndroid Build Coastguard Worker // a stream source. It provides support for streaming (lazy reading) of 12*9880d681SAndroid Build Coastguard Worker // data, e.g. bitcode 13*9880d681SAndroid Build Coastguard Worker // 14*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===// 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker #ifndef LLVM_SUPPORT_DATASTREAM_H 18*9880d681SAndroid Build Coastguard Worker #define LLVM_SUPPORT_DATASTREAM_H 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker #include <memory> 21*9880d681SAndroid Build Coastguard Worker #include <string> 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Worker namespace llvm { 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Worker class DataStreamer { 26*9880d681SAndroid Build Coastguard Worker public: 27*9880d681SAndroid Build Coastguard Worker /// Fetch bytes [start-end) from the stream, and write them to the 28*9880d681SAndroid Build Coastguard Worker /// buffer pointed to by buf. Returns the number of bytes actually written. 29*9880d681SAndroid Build Coastguard Worker virtual size_t GetBytes(unsigned char *buf, size_t len) = 0; 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Worker virtual ~DataStreamer(); 32*9880d681SAndroid Build Coastguard Worker }; 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Worker std::unique_ptr<DataStreamer> getDataFileStreamer(const std::string &Filename, 35*9880d681SAndroid Build Coastguard Worker std::string *Err); 36*9880d681SAndroid Build Coastguard Worker } 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Worker #endif // LLVM_SUPPORT_DATASTREAM_H_ 39