@@ -222,12 +222,12 @@ struct gguf_reader {
222222 gguf_reader (FILE * file) : file(file) {}
223223
224224 template <typename T>
225- bool read (T & dst) {
225+ bool read (T & dst) const {
226226 return fread (&dst, 1 , sizeof (dst), file) == sizeof (dst);
227227 }
228228
229229 template <typename T>
230- bool read (std::vector<T> & dst, const size_t n) {
230+ bool read (std::vector<T> & dst, const size_t n) const {
231231 dst.resize (n);
232232 for (size_t i = 0 ; i < dst.size (); ++i) {
233233 if constexpr (std::is_same<T, bool >::value) {
@@ -245,7 +245,7 @@ struct gguf_reader {
245245 return true ;
246246 }
247247
248- bool read (bool & dst) {
248+ bool read (bool & dst) const {
249249 int8_t tmp = -1 ;
250250 if (!read (tmp)) {
251251 return false ;
@@ -254,7 +254,7 @@ struct gguf_reader {
254254 return true ;
255255 }
256256
257- bool read (enum ggml_type & dst) {
257+ bool read (enum ggml_type & dst) const {
258258 int32_t tmp = -1 ;
259259 if (!read (tmp)) {
260260 return false ;
@@ -263,7 +263,7 @@ struct gguf_reader {
263263 return true ;
264264 }
265265
266- bool read (enum gguf_type & dst) {
266+ bool read (enum gguf_type & dst) const {
267267 int32_t tmp = -1 ;
268268 if (!read (tmp)) {
269269 return false ;
@@ -272,7 +272,7 @@ struct gguf_reader {
272272 return true ;
273273 }
274274
275- bool read (std::string & dst) {
275+ bool read (std::string & dst) const {
276276 uint64_t size = -1 ;
277277 if (!read (size)) {
278278 return false ;
@@ -281,7 +281,7 @@ struct gguf_reader {
281281 return fread (dst.data (), 1 , dst.length (), file) == dst.length ();
282282 }
283283
284- bool read (void * dst, const size_t size) {
284+ bool read (void * dst, const size_t size) const {
285285 return fread (dst, 1 , size, file) == size;
286286 }
287287};
@@ -291,7 +291,7 @@ struct gguf_context * gguf_init_empty(void) {
291291}
292292
293293template <typename T>
294- bool gguf_read_emplace_helper (struct gguf_reader & gr, std::vector<struct gguf_kv > & kv, const std::string & key, const bool is_array, const size_t n) {
294+ bool gguf_read_emplace_helper (const struct gguf_reader & gr, std::vector<struct gguf_kv > & kv, const std::string & key, const bool is_array, const size_t n) {
295295 if (is_array) {
296296 std::vector<T> value;
297297 try {
@@ -317,7 +317,7 @@ bool gguf_read_emplace_helper(struct gguf_reader & gr, std::vector<struct gguf_k
317317}
318318
319319struct gguf_context * gguf_init_from_file_impl (FILE * file, struct gguf_init_params params) {
320- struct gguf_reader gr (file);
320+ const struct gguf_reader gr (file);
321321 struct gguf_context * ctx = new gguf_context;
322322
323323 bool ok = true ;
@@ -1139,22 +1139,22 @@ struct gguf_writer {
11391139 gguf_writer (std::vector<int8_t > & buf) : buf(buf) {}
11401140
11411141 template <typename T>
1142- void write (const T & val) {
1142+ void write (const T & val) const {
11431143 for (size_t i = 0 ; i < sizeof (val); ++i) {
11441144 buf.push_back (reinterpret_cast <const int8_t *>(&val)[i]);
11451145 }
11461146 }
11471147
1148- void write (const std::vector<int8_t > & val) {
1148+ void write (const std::vector<int8_t > & val) const {
11491149 buf.insert (buf.end (), val.begin (), val.end ());
11501150 }
11511151
1152- void write (const bool & val) {
1152+ void write (const bool & val) const {
11531153 const int8_t val8 = val ? 1 : 0 ;
11541154 write (val8);
11551155 }
11561156
1157- void write (const std::string & val) {
1157+ void write (const std::string & val) const {
11581158 {
11591159 const uint64_t n = val.length ();
11601160 write (n);
@@ -1164,19 +1164,19 @@ struct gguf_writer {
11641164 }
11651165 }
11661166
1167- void write (const char * val) {
1167+ void write (const char * val) const {
11681168 write (std::string (val));
11691169 }
11701170
1171- void write (const enum ggml_type & val) {
1171+ void write (const enum ggml_type & val) const {
11721172 write (int32_t (val));
11731173 }
11741174
1175- void write (const enum gguf_type & val) {
1175+ void write (const enum gguf_type & val) const {
11761176 write (int32_t (val));
11771177 }
11781178
1179- void write (const struct gguf_kv & kv) {
1179+ void write (const struct gguf_kv & kv) const {
11801180 const uint64_t ne = kv.get_ne ();
11811181
11821182 write (kv.get_key ());
@@ -1217,7 +1217,7 @@ struct gguf_writer {
12171217 }
12181218 }
12191219
1220- void write_tensor_meta (const struct gguf_tensor_info & info) {
1220+ void write_tensor_meta (const struct gguf_tensor_info & info) const {
12211221 write (info.t .name );
12221222
12231223 const uint32_t n_dims = ggml_n_dims (&info.t );
@@ -1230,14 +1230,14 @@ struct gguf_writer {
12301230 write (info.offset );
12311231 }
12321232
1233- void pad (const size_t alignment) {
1233+ void pad (const size_t alignment) const {
12341234 while (buf.size () % alignment != 0 ) {
12351235 const int8_t zero = 0 ;
12361236 write (zero);
12371237 }
12381238 }
12391239
1240- void write_tensor_data (const struct gguf_tensor_info & info, const size_t offset_data, const size_t alignment) {
1240+ void write_tensor_data (const struct gguf_tensor_info & info, const size_t offset_data, const size_t alignment) const {
12411241 GGML_ASSERT (buf.size () - offset_data == info.offset );
12421242
12431243 GGML_ASSERT (ggml_is_contiguous (&info.t ));
@@ -1257,7 +1257,7 @@ struct gguf_writer {
12571257};
12581258
12591259void gguf_write_to_buf (const struct gguf_context * ctx, std::vector<int8_t > & buf, bool only_meta) {
1260- struct gguf_writer gw (buf);
1260+ const struct gguf_writer gw (buf);
12611261
12621262 const int64_t n_kv = gguf_get_n_kv (ctx);
12631263 const int64_t n_tensors = gguf_get_n_tensors (ctx);
0 commit comments