Add a Rust string ostream for LLVM
This commit is contained in:
@@ -69,3 +69,31 @@
|
||||
#endif
|
||||
|
||||
void LLVMRustSetLastError(const char*);
|
||||
|
||||
typedef struct OpaqueRustString *RustStringRef;
|
||||
|
||||
extern "C" void
|
||||
rust_llvm_string_write_impl(RustStringRef str, const char *ptr, size_t size);
|
||||
|
||||
class raw_rust_string_ostream : public llvm::raw_ostream {
|
||||
RustStringRef str;
|
||||
uint64_t pos;
|
||||
|
||||
void write_impl(const char *ptr, size_t size) override {
|
||||
rust_llvm_string_write_impl(str, ptr, size);
|
||||
pos += size;
|
||||
}
|
||||
|
||||
uint64_t current_pos() const override {
|
||||
return pos;
|
||||
}
|
||||
|
||||
public:
|
||||
explicit raw_rust_string_ostream(RustStringRef str)
|
||||
: str(str), pos(0) { }
|
||||
|
||||
~raw_rust_string_ostream() {
|
||||
// LLVM requires this.
|
||||
flush();
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user