/*
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 STACK_H
#define STACK_H

#include "system.h"
#include "reftable-writer.h"
#include "reftable-stack.h"

struct reftable_stack {
	struct stat list_st;
	char *list_file;
	int list_fd;

	char *reftable_dir;
	int disable_auto_compact;

	struct reftable_write_options config;

	struct reftable_reader **readers;
	size_t readers_len;
	struct reftable_merged_table *merged;
	struct reftable_compaction_stats stats;
};

int read_lines(const char *filename, char ***lines);

struct segment {
	size_t start, end;
	int log;
	uint64_t bytes;
};

int fastlog2(uint64_t sz);
struct segment *sizes_to_segments(size_t *seglen, uint64_t *sizes, size_t n);
struct segment suggest_compaction_segment(uint64_t *sizes, size_t n);

#endif
