Google OR-Tools: ortools/base/file.h Source File

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15#ifndef ORTOOLS_BASE_FILE_H_

16#define ORTOOLS_BASE_FILE_H_

17

18#include <cstddef>

19#include <cstdint>

20#include <string>

21

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"

27

28

29

31 public:

32#ifndef SWIG

33

34

35

36 static File* Open(absl::string_view file_name, absl::string_view mode);

37

38

39

40

41 static File* OpenOrDie(absl::string_view file_name, absl::string_view mode);

42#endif

43

44 explicit File(absl::string_view name);

45 virtual ~File() = default;

46

47

48 virtual size_t Read(void* buf, size_t size) = 0;

49

50

51 virtual size_t Write(const void* buf, size_t size) = 0;

52

53

54 virtual absl::Status Close(int flags) = 0;

55

56

58

59

60 virtual size_t Size() = 0;

61

62

63 virtual bool Open() const = 0;

64

65

66

67 int64_t ReadToString(std::string* line, uint64_t max_length);

68

69

70 size_t WriteString(absl::string_view str);

71

72

73 static void Init();

74

75

76 absl::string_view filename() const;

77

78 protected:

80};

81

82namespace file {

83

85

87

88

89

90

91

92

93absl::Status Open(absl::string_view file_name, absl::string_view mode, File** f,

95

96

97File* OpenOrDie(absl::string_view file_name, absl::string_view mode,

99

100absl::Status Delete(absl::string_view path, Options options);

101absl::Status Exists(absl::string_view path, Options options);

102

103

104

105absl::StatusOr<std::string> GetContents(absl::string_view path,

107

108absl::Status GetContents(absl::string_view file_name, std::string* output,

110

111absl::Status SetContents(absl::string_view file_name,

112 absl::string_view contents, Options options);

113

116

117

118

119absl::Status GetTextProto(absl::string_view file_name,

120 google::protobuf::Message* proto, Options options);

121

122template <typename T>

124 T proto;

126 return proto;

127}

128

129absl::Status SetTextProto(absl::string_view file_name,

130 const google::protobuf::Message& proto,

132

133absl::Status GetBinaryProto(absl::string_view file_name,

134 google::protobuf::Message* proto, Options options);

135template <typename T>

136

138 T proto;

140 return proto;

141}

142

143absl::Status SetBinaryProto(absl::string_view file_name,

144 const google::protobuf::Message& proto,

146

147}

148

149#endif

#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)

std::string name_

Definition file.h:79

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)

int Options

Definition file.h:84

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)

Options Defaults()

Definition file.h:86

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)