mirror of
https://github.com/SkinnyMind/libgit2dart.git
synced 2025-05-05 04:39:07 -04:00
feat: generate bindings with ffigen
This commit is contained in:
parent
9d81c715ff
commit
1414d5f6d7
95 changed files with 38582 additions and 6 deletions
135
libgit2-1.1.0/headers/git2/odb_backend.h
Normal file
135
libgit2-1.1.0/headers/git2/odb_backend.h
Normal file
|
@ -0,0 +1,135 @@
|
|||
/*
|
||||
* Copyright (C) the libgit2 contributors. All rights reserved.
|
||||
*
|
||||
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
||||
* a Linking Exception. For full terms see the included COPYING file.
|
||||
*/
|
||||
#ifndef INCLUDE_git_odb_backend_h__
|
||||
#define INCLUDE_git_odb_backend_h__
|
||||
|
||||
#include "common.h"
|
||||
#include "types.h"
|
||||
#include "indexer.h"
|
||||
|
||||
/**
|
||||
* @file git2/backend.h
|
||||
* @brief Git custom backend functions
|
||||
* @defgroup git_odb Git object database routines
|
||||
* @ingroup Git
|
||||
* @{
|
||||
*/
|
||||
GIT_BEGIN_DECL
|
||||
|
||||
/*
|
||||
* Constructors for in-box ODB backends.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Create a backend for the packfiles.
|
||||
*
|
||||
* @param out location to store the odb backend pointer
|
||||
* @param objects_dir the Git repository's objects directory
|
||||
*
|
||||
* @return 0 or an error code
|
||||
*/
|
||||
GIT_EXTERN(int) git_odb_backend_pack(git_odb_backend **out, const char *objects_dir);
|
||||
|
||||
/**
|
||||
* Create a backend for loose objects
|
||||
*
|
||||
* @param out location to store the odb backend pointer
|
||||
* @param objects_dir the Git repository's objects directory
|
||||
* @param compression_level zlib compression level to use
|
||||
* @param do_fsync whether to do an fsync() after writing
|
||||
* @param dir_mode permissions to use creating a directory or 0 for defaults
|
||||
* @param file_mode permissions to use creating a file or 0 for defaults
|
||||
*
|
||||
* @return 0 or an error code
|
||||
*/
|
||||
GIT_EXTERN(int) git_odb_backend_loose(
|
||||
git_odb_backend **out,
|
||||
const char *objects_dir,
|
||||
int compression_level,
|
||||
int do_fsync,
|
||||
unsigned int dir_mode,
|
||||
unsigned int file_mode);
|
||||
|
||||
/**
|
||||
* Create a backend out of a single packfile
|
||||
*
|
||||
* This can be useful for inspecting the contents of a single
|
||||
* packfile.
|
||||
*
|
||||
* @param out location to store the odb backend pointer
|
||||
* @param index_file path to the packfile's .idx file
|
||||
*
|
||||
* @return 0 or an error code
|
||||
*/
|
||||
GIT_EXTERN(int) git_odb_backend_one_pack(git_odb_backend **out, const char *index_file);
|
||||
|
||||
/** Streaming mode */
|
||||
typedef enum {
|
||||
GIT_STREAM_RDONLY = (1 << 1),
|
||||
GIT_STREAM_WRONLY = (1 << 2),
|
||||
GIT_STREAM_RW = (GIT_STREAM_RDONLY | GIT_STREAM_WRONLY),
|
||||
} git_odb_stream_t;
|
||||
|
||||
/**
|
||||
* A stream to read/write from a backend.
|
||||
*
|
||||
* This represents a stream of data being written to or read from a
|
||||
* backend. When writing, the frontend functions take care of
|
||||
* calculating the object's id and all `finalize_write` needs to do is
|
||||
* store the object with the id it is passed.
|
||||
*/
|
||||
struct git_odb_stream {
|
||||
git_odb_backend *backend;
|
||||
unsigned int mode;
|
||||
void *hash_ctx;
|
||||
|
||||
git_object_size_t declared_size;
|
||||
git_object_size_t received_bytes;
|
||||
|
||||
/**
|
||||
* Write at most `len` bytes into `buffer` and advance the stream.
|
||||
*/
|
||||
int GIT_CALLBACK(read)(git_odb_stream *stream, char *buffer, size_t len);
|
||||
|
||||
/**
|
||||
* Write `len` bytes from `buffer` into the stream.
|
||||
*/
|
||||
int GIT_CALLBACK(write)(git_odb_stream *stream, const char *buffer, size_t len);
|
||||
|
||||
/**
|
||||
* Store the contents of the stream as an object with the id
|
||||
* specified in `oid`.
|
||||
*
|
||||
* This method might not be invoked if:
|
||||
* - an error occurs earlier with the `write` callback,
|
||||
* - the object referred to by `oid` already exists in any backend, or
|
||||
* - the final number of received bytes differs from the size declared
|
||||
* with `git_odb_open_wstream()`
|
||||
*/
|
||||
int GIT_CALLBACK(finalize_write)(git_odb_stream *stream, const git_oid *oid);
|
||||
|
||||
/**
|
||||
* Free the stream's memory.
|
||||
*
|
||||
* This method might be called without a call to `finalize_write` if
|
||||
* an error occurs or if the object is already present in the ODB.
|
||||
*/
|
||||
void GIT_CALLBACK(free)(git_odb_stream *stream);
|
||||
};
|
||||
|
||||
/** A stream to write a pack file to the ODB */
|
||||
struct git_odb_writepack {
|
||||
git_odb_backend *backend;
|
||||
|
||||
int GIT_CALLBACK(append)(git_odb_writepack *writepack, const void *data, size_t size, git_indexer_progress *stats);
|
||||
int GIT_CALLBACK(commit)(git_odb_writepack *writepack, git_indexer_progress *stats);
|
||||
void GIT_CALLBACK(free)(git_odb_writepack *writepack);
|
||||
};
|
||||
|
||||
GIT_END_DECL
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue