MCPcopy Create free account
hub / github.com/git/git / reftable_ref_record_encode

Function reftable_ref_record_encode

reftable/record.c:319–358  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

317}
318
319static int reftable_ref_record_encode(const void *rec, struct string_view s,
320 uint32_t hash_size)
321{
322 const struct reftable_ref_record *r =
323 (const struct reftable_ref_record *)rec;
324 struct string_view start = s;
325 int n = put_var_int(&s, r->update_index);
326 if (n < 0)
327 return n;
328 string_view_consume(&s, n);
329
330 switch (r->value_type) {
331 case REFTABLE_REF_SYMREF:
332 n = encode_string(r->value.symref, s);
333 if (n < 0)
334 return n;
335 string_view_consume(&s, n);
336 break;
337 case REFTABLE_REF_VAL2:
338 if (s.len < 2 * hash_size)
339 return REFTABLE_ENTRY_TOO_BIG_ERROR;
340 memcpy(s.buf, r->value.val2.value, hash_size);
341 string_view_consume(&s, hash_size);
342 memcpy(s.buf, r->value.val2.target_value, hash_size);
343 string_view_consume(&s, hash_size);
344 break;
345 case REFTABLE_REF_VAL1:
346 if (s.len < hash_size)
347 return REFTABLE_ENTRY_TOO_BIG_ERROR;
348 memcpy(s.buf, r->value.val1, hash_size);
349 string_view_consume(&s, hash_size);
350 break;
351 case REFTABLE_REF_DELETION:
352 break;
353 default:
354 abort();
355 }
356
357 return start.len - s.len;
358}
359
360static int reftable_ref_record_decode(void *rec, struct reftable_buf key,
361 uint8_t val_type, struct string_view in,

Callers

nothing calls this directly

Calls 3

put_var_intFunction · 0.85
string_view_consumeFunction · 0.85
encode_stringFunction · 0.85

Tested by

no test coverage detected