mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
The `block_reader` structure is used to access parsed data of a reftable block. The structure is currently treated as an internal implementation detail and not exposed via our public interfaces. The functionality provided by the structure is useful to external users of the reftable library though, for example when implementing consistency checks that need to scan through the blocks manually. Rename the structure to `reftable_block` now that the name has been made available in the preceding commit. This name is in line with the naming schema used for other data structures like `reftable_table` in that it describes the underlying entity that it provides access to. The new data structure isn't yet exposed via the public interface, which is left for a subsequent commit. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
63 lines
1.4 KiB
C
63 lines
1.4 KiB
C
/*
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Use of this source code is governed by a BSD-style
|
|
* license that can be found in the LICENSE file or at
|
|
* https://developers.google.com/open-source/licenses/bsd
|
|
*/
|
|
|
|
#ifndef TABLE_H
|
|
#define TABLE_H
|
|
|
|
#include "block.h"
|
|
#include "record.h"
|
|
#include "reftable-iterator.h"
|
|
#include "reftable-table.h"
|
|
|
|
/* metadata for a block type */
|
|
struct reftable_table_offsets {
|
|
int is_present;
|
|
uint64_t offset;
|
|
uint64_t index_offset;
|
|
};
|
|
|
|
/* The state for reading a reftable file. */
|
|
struct reftable_table {
|
|
/* for convenience, associate a name with the instance. */
|
|
char *name;
|
|
struct reftable_block_source source;
|
|
|
|
/* Size of the file, excluding the footer. */
|
|
uint64_t size;
|
|
|
|
/* The hash function used for ref records. */
|
|
enum reftable_hash hash_id;
|
|
|
|
uint32_t block_size;
|
|
uint64_t min_update_index;
|
|
uint64_t max_update_index;
|
|
/* Length of the OID keys in the 'o' section */
|
|
int object_id_len;
|
|
int version;
|
|
|
|
struct reftable_table_offsets ref_offsets;
|
|
struct reftable_table_offsets obj_offsets;
|
|
struct reftable_table_offsets log_offsets;
|
|
|
|
uint64_t refcount;
|
|
};
|
|
|
|
const char *reftable_table_name(struct reftable_table *t);
|
|
|
|
int table_init_iter(struct reftable_table *t,
|
|
struct reftable_iterator *it,
|
|
uint8_t typ);
|
|
|
|
/*
|
|
* Initialize a block by reading from the given table and offset.
|
|
*/
|
|
int table_init_block(struct reftable_table *t, struct reftable_block *block,
|
|
uint64_t next_off, uint8_t want_typ);
|
|
|
|
#endif
|