reftable/table: add `reftable_table` to the public interface

The `reftable_table` interface is an internal implementation detail that
callers have no access to. Having direct access to this structure is
important though for a subsequent patch series that will implement
consistency checks for the reftable backend.

Move the structure into "reftable-table.h" so that it part of the public
interface.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Patrick Steinhardt 2025-04-07 15:16:25 +02:00 committed by Junio C Hamano
parent 50d8459477
commit c8cbe85a23
2 changed files with 31 additions and 34 deletions

View File

@ -20,8 +20,38 @@
* reftable_merged_table and struct reftable_stack.
*/

/* Metadata for a block type. */
struct reftable_table_offsets {
int is_present;
uint64_t offset;
uint64_t index_offset;
};

/* The table struct is a handle to an open reftable file. */
struct reftable_table;
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;
};

/* reftable_table_new opens a reftable for reading. If successful,
* returns 0 code and sets pp. The name is used for creating a

View File

@ -14,39 +14,6 @@
#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,