15#ifndef ORTOOLS_BASE_FILE_H_
16#define ORTOOLS_BASE_FILE_H_
22#include "absl/status/status.h"
23#include "absl/status/statusor.h"
24#include "absl/strings/string_view.h"
25#include "google/protobuf/message.h"
36 static File*
Open(absl::string_view file_name, absl::string_view mode);
41 static File*
OpenOrDie(absl::string_view file_name, absl::string_view mode);
44 explicit File(absl::string_view name);
48 virtual size_t Read(
void* buf,
size_t size) = 0;
51 virtual size_t Write(
const void* buf,
size_t size) = 0;
54 virtual absl::Status
Close(
int flags) = 0;
63 virtual bool Open()
const = 0;
67 int64_t
ReadToString(std::string* line, uint64_t max_length);
93absl::Status
Open(absl::string_view file_name, absl::string_view mode,
File** f,
97File*
OpenOrDie(absl::string_view file_name, absl::string_view mode,
105absl::StatusOr<std::string>
GetContents(absl::string_view path,
108absl::Status
GetContents(absl::string_view file_name, std::string* output,
111absl::Status
SetContents(absl::string_view file_name,
112 absl::string_view contents,
Options options);
120 google::protobuf::Message* proto,
Options options);
130 const google::protobuf::Message& proto,
134 google::protobuf::Message* proto,
Options options);
144 const google::protobuf::Message& proto,
#define RETURN_IF_ERROR(expr)
absl::string_view filename() const
virtual absl::Status Close(int flags)=0
virtual size_t Write(const void *buf, size_t size)=0
virtual size_t Read(void *buf, size_t size)=0
static File * OpenOrDie(absl::string_view file_name, absl::string_view mode)
size_t WriteString(absl::string_view str)
File(absl::string_view name)
virtual bool Open() const =0
int64_t ReadToString(std::string *line, uint64_t max_length)
absl::StatusOr< std::string > GetContents(absl::string_view path, Options options)
absl::Status Exists(absl::string_view path, Options options)
absl::Status SetBinaryProto(absl::string_view file_name, const google::protobuf::Message &proto, Options options)
absl::Status SetTextProto(absl::string_view file_name, const google::protobuf::Message &proto, Options options)
absl::Status GetTextProto(absl::string_view file_name, google::protobuf::Message *proto, Options options)
File * OpenOrDie(absl::string_view file_name, absl::string_view mode, Options options)
absl::Status WriteString(File *file, absl::string_view contents, Options options)
absl::Status GetBinaryProto(const absl::string_view file_name, google::protobuf::Message *proto, Options options)
absl::Status Delete(absl::string_view path, Options options)
absl::Status Open(absl::string_view file_name, absl::string_view mode, File **f, Options options)
absl::Status SetContents(absl::string_view file_name, absl::string_view contents, Options options)