#ifndef INCLUDE_sys_git_config_backend_h__
#define INCLUDE_sys_git_config_backend_h__
#include "git2/common.h"
#include "git2/types.h"
#include "git2/config.h"
GIT_BEGIN_DECL
struct git_config_iterator {
git_config_backend *backend;
unsigned int flags;
int (*next)(git_config_entry **entry, git_config_iterator *iter);
void (*free)(git_config_iterator *iter);
};
struct git_config_backend {
unsigned int version;
int readonly;
struct git_config *cfg;
int (*open)(struct git_config_backend *, git_config_level_t level, const git_repository *repo);
int (*get)(struct git_config_backend *, const char *key, git_config_entry **entry);
int (*set)(struct git_config_backend *, const char *key, const char *value);
int (*set_multivar)(git_config_backend *cfg, const char *name, const char *regexp, const char *value);
int (*del)(struct git_config_backend *, const char *key);
int (*del_multivar)(struct git_config_backend *, const char *key, const char *regexp);
int (*iterator)(git_config_iterator **, struct git_config_backend *);
int (*snapshot)(struct git_config_backend **, struct git_config_backend *);
int (*lock)(struct git_config_backend *);
int (*unlock)(struct git_config_backend *, int success);
void (*free)(struct git_config_backend *);
};
#define GIT_CONFIG_BACKEND_VERSION 1
#define GIT_CONFIG_BACKEND_INIT {GIT_CONFIG_BACKEND_VERSION}
GIT_EXTERN(int) git_config_init_backend(
git_config_backend *backend,
unsigned int version);
GIT_EXTERN(int) git_config_add_backend(
git_config *cfg,
git_config_backend *file,
git_config_level_t level,
const git_repository *repo,
int force);
GIT_END_DECL
#endif