#ifndef FETCH_OBJECT_INFO_H
#define FETCH_OBJECT_INFO_H

#include "object.h"
#include "pkt-line.h"
#include "protocol.h"

struct fetch_object_info_results {
	size_t *sizes;
	enum object_type *types;
	uint8_t *unrecognized;
	size_t nr;
	unsigned wants_size:1;
	unsigned wants_type:1;
};

#define FETCH_OBJECT_INFO_RESULTS_INIT { 0 }

struct oid_array;
/*
 * Sends git-cat-file object-info command into the request buf and reads the
 * results from packets.
 *
 * The caller sets the wants_* flags in "results" to indicate which attributes
 * it is interested in. On return, "results" holds one array per attribute that
 * the server both advertised and answered with. An array left NULL means the
 * attribute is not available.
 * Release them with free_fetch_object_info_results().
 */
void fetch_object_info(enum protocol_version version,
		       const struct string_list *server_options,
		       const struct oid_array *oids,
		       struct packet_reader *reader,
		       struct fetch_object_info_results *results,
		       int stateless_rpc,
		       int fd_out);

void free_fetch_object_info_results(struct fetch_object_info_results *results);

#endif /* FETCH_OBJECT_INFO_H */
