Files
huishou/node_modules/nodegit/include/repository.h
T
2026-07-27 14:07:26 +08:00

743 lines
18 KiB
C++

// This is a generated file, modify: generate/templates/templates/class_header.h
#ifndef GITREPOSITORY_H
#define GITREPOSITORY_H
#include <nan.h>
#include <string>
#include <queue>
#include <utility>
#include <unordered_map>
#include <sstream>
#include "async_baton.h"
#include "nodegit_wrapper.h"
#include "promise_completion.h"
#include "reference_counter.h"
extern "C" {
#include <git2.h>
}
#include "../include/typedefs.h"
#include "git2/sys/repository.h"
#include "../include/submodule.h"
#include "../include/remote.h"
#include "../include/config.h"
#include "../include/buf.h"
#include "../include/oid.h"
#include "../include/reference.h"
#include "../include/index.h"
#include "../include/repository_init_options.h"
#include "../include/odb.h"
#include "../include/worktree.h"
#include "../include/refdb.h"
#include "../include/annotated_commit.h"
// Forward declaration.
struct git_repository {
};
using namespace node;
using namespace v8;
class GitRepository;
struct GitRepositoryTraits {
typedef GitRepository cppClass;
typedef git_repository cType;
static const bool isDuplicable = false;
static void duplicate(git_repository **dest, git_repository *src) {
Nan::ThrowError("duplicate called on GitRepository which cannot be duplicated");
}
static const bool isSingleton = true;
static const bool isFreeable = true;
static void free(git_repository *raw) {
unsigned long referenceCount = 0;
referenceCount = ReferenceCounter::decrementCountForPointer((void *)raw);
if (referenceCount == 0) {
::git_repository_free(raw); // :: to avoid calling this free recursively
}
}
};
class GitRepository : public
NodeGitWrapper<GitRepositoryTraits>
{
// grant full access to base class
friend class NodeGitWrapper<GitRepositoryTraits>;
public:
static void InitializeComponent (v8::Local<v8::Object> target);
static int FetchheadForeach_callback_cppCallback (
const char * refname
,
const char * remote_url
,
const git_oid * oid
,
unsigned int is_merge
,
void * payload
);
static void FetchheadForeach_callback_async(void *baton);
static void FetchheadForeach_callback_promiseCompleted(bool isFulfilled, AsyncBaton *_baton, v8::Local<v8::Value> result);
struct FetchheadForeach_CallbackBaton : public AsyncBatonWithResult<int> {
const char * refname;
const char * remote_url;
const git_oid * oid;
unsigned int is_merge;
void * payload;
FetchheadForeach_CallbackBaton(const int &defaultResult)
: AsyncBatonWithResult<int>(defaultResult) {
}
};
static int MergeheadForeach_callback_cppCallback (
const git_oid * oid
,
void * payload
);
static void MergeheadForeach_callback_async(void *baton);
static void MergeheadForeach_callback_promiseCompleted(bool isFulfilled, AsyncBaton *_baton, v8::Local<v8::Value> result);
struct MergeheadForeach_CallbackBaton : public AsyncBatonWithResult<int> {
const git_oid * oid;
void * payload;
MergeheadForeach_CallbackBaton(const int &defaultResult)
: AsyncBatonWithResult<int>(defaultResult) {
}
};
private:
GitRepository()
: NodeGitWrapper<GitRepositoryTraits>(
"A new GitRepository cannot be instantiated."
)
{}
GitRepository(git_repository *raw, bool selfFreeing, v8::Local<v8::Object> owner = v8::Local<v8::Object>())
: NodeGitWrapper<GitRepositoryTraits>(raw, selfFreeing, owner)
{}
~GitRepository();
static NAN_METHOD(Commondir);
struct ConfigBaton {
int error_code;
const git_error* error;
git_config * out;
git_repository * repo;
};
class ConfigWorker : public Nan::AsyncWorker {
public:
ConfigWorker(
ConfigBaton *_baton,
Nan::Callback *callback
) : Nan::AsyncWorker(callback)
, baton(_baton) {};
~ConfigWorker() {};
void Execute();
void HandleOKCallback();
private:
ConfigBaton *baton;
};
static NAN_METHOD(Config);
static NAN_METHOD(DetachHead);
struct DiscoverBaton {
int error_code;
const git_error* error;
git_buf * out;
const char * start_path;
int across_fs;
const char * ceiling_dirs;
};
class DiscoverWorker : public Nan::AsyncWorker {
public:
DiscoverWorker(
DiscoverBaton *_baton,
Nan::Callback *callback
) : Nan::AsyncWorker(callback)
, baton(_baton) {};
~DiscoverWorker() {};
void Execute();
void HandleOKCallback();
private:
DiscoverBaton *baton;
};
static NAN_METHOD(Discover);
struct FetchheadForeachBaton {
int error_code;
const git_error* error;
git_repository * repo;
git_repository_fetchhead_foreach_cb callback;
void * payload;
};
class FetchheadForeachWorker : public Nan::AsyncWorker {
public:
FetchheadForeachWorker(
FetchheadForeachBaton *_baton,
Nan::Callback *callback
) : Nan::AsyncWorker(callback)
, baton(_baton) {};
~FetchheadForeachWorker() {};
void Execute();
void HandleOKCallback();
private:
FetchheadForeachBaton *baton;
};
static NAN_METHOD(FetchheadForeach);
static NAN_METHOD(GetNamespace);
struct HeadBaton {
int error_code;
const git_error* error;
git_reference * out;
git_repository * repo;
};
class HeadWorker : public Nan::AsyncWorker {
public:
HeadWorker(
HeadBaton *_baton,
Nan::Callback *callback
) : Nan::AsyncWorker(callback)
, baton(_baton) {};
~HeadWorker() {};
void Execute();
void HandleOKCallback();
private:
HeadBaton *baton;
};
static NAN_METHOD(Head);
static NAN_METHOD(HeadDetached);
static NAN_METHOD(HeadDetachedForWorktree);
struct HeadForWorktreeBaton {
int error_code;
const git_error* error;
git_reference * out;
git_repository * repo;
const char * name;
};
class HeadForWorktreeWorker : public Nan::AsyncWorker {
public:
HeadForWorktreeWorker(
HeadForWorktreeBaton *_baton,
Nan::Callback *callback
) : Nan::AsyncWorker(callback)
, baton(_baton) {};
~HeadForWorktreeWorker() {};
void Execute();
void HandleOKCallback();
private:
HeadForWorktreeBaton *baton;
};
static NAN_METHOD(HeadForWorktree);
static NAN_METHOD(HeadUnborn);
static NAN_METHOD(Ident);
struct IndexBaton {
int error_code;
const git_error* error;
git_index * out;
git_repository * repo;
};
class IndexWorker : public Nan::AsyncWorker {
public:
IndexWorker(
IndexBaton *_baton,
Nan::Callback *callback
) : Nan::AsyncWorker(callback)
, baton(_baton) {};
~IndexWorker() {};
void Execute();
void HandleOKCallback();
private:
IndexBaton *baton;
};
static NAN_METHOD(Index);
struct InitBaton {
int error_code;
const git_error* error;
git_repository * out;
const char * path;
unsigned int is_bare;
};
class InitWorker : public Nan::AsyncWorker {
public:
InitWorker(
InitBaton *_baton,
Nan::Callback *callback
) : Nan::AsyncWorker(callback)
, baton(_baton) {};
~InitWorker() {};
void Execute();
void HandleOKCallback();
private:
InitBaton *baton;
};
static NAN_METHOD(Init);
struct InitExtBaton {
int error_code;
const git_error* error;
git_repository * out;
const char * repo_path;
git_repository_init_options * opts;
};
class InitExtWorker : public Nan::AsyncWorker {
public:
InitExtWorker(
InitExtBaton *_baton,
Nan::Callback *callback
) : Nan::AsyncWorker(callback)
, baton(_baton) {};
~InitExtWorker() {};
void Execute();
void HandleOKCallback();
private:
InitExtBaton *baton;
};
static NAN_METHOD(InitExt);
static NAN_METHOD(IsBare);
static NAN_METHOD(IsEmpty);
static NAN_METHOD(IsShallow);
static NAN_METHOD(IsWorktree);
struct ItemPathBaton {
int error_code;
const git_error* error;
git_buf * out;
const git_repository * repo;
git_repository_item_t item;
};
class ItemPathWorker : public Nan::AsyncWorker {
public:
ItemPathWorker(
ItemPathBaton *_baton,
Nan::Callback *callback
) : Nan::AsyncWorker(callback)
, baton(_baton) {};
~ItemPathWorker() {};
void Execute();
void HandleOKCallback();
private:
ItemPathBaton *baton;
};
static NAN_METHOD(ItemPath);
struct MergeheadForeachBaton {
int error_code;
const git_error* error;
git_repository * repo;
git_repository_mergehead_foreach_cb callback;
void * payload;
};
class MergeheadForeachWorker : public Nan::AsyncWorker {
public:
MergeheadForeachWorker(
MergeheadForeachBaton *_baton,
Nan::Callback *callback
) : Nan::AsyncWorker(callback)
, baton(_baton) {};
~MergeheadForeachWorker() {};
void Execute();
void HandleOKCallback();
private:
MergeheadForeachBaton *baton;
};
static NAN_METHOD(MergeheadForeach);
static NAN_METHOD(MessageRemove);
struct OdbBaton {
int error_code;
const git_error* error;
git_odb * out;
git_repository * repo;
};
class OdbWorker : public Nan::AsyncWorker {
public:
OdbWorker(
OdbBaton *_baton,
Nan::Callback *callback
) : Nan::AsyncWorker(callback)
, baton(_baton) {};
~OdbWorker() {};
void Execute();
void HandleOKCallback();
private:
OdbBaton *baton;
};
static NAN_METHOD(Odb);
struct OpenBaton {
int error_code;
const git_error* error;
git_repository * out;
const char * path;
};
class OpenWorker : public Nan::AsyncWorker {
public:
OpenWorker(
OpenBaton *_baton,
Nan::Callback *callback
) : Nan::AsyncWorker(callback)
, baton(_baton) {};
~OpenWorker() {};
void Execute();
void HandleOKCallback();
private:
OpenBaton *baton;
};
static NAN_METHOD(Open);
struct OpenBareBaton {
int error_code;
const git_error* error;
git_repository * out;
const char * bare_path;
};
class OpenBareWorker : public Nan::AsyncWorker {
public:
OpenBareWorker(
OpenBareBaton *_baton,
Nan::Callback *callback
) : Nan::AsyncWorker(callback)
, baton(_baton) {};
~OpenBareWorker() {};
void Execute();
void HandleOKCallback();
private:
OpenBareBaton *baton;
};
static NAN_METHOD(OpenBare);
struct OpenExtBaton {
int error_code;
const git_error* error;
git_repository * out;
const char * path;
unsigned int flags;
const char * ceiling_dirs;
};
class OpenExtWorker : public Nan::AsyncWorker {
public:
OpenExtWorker(
OpenExtBaton *_baton,
Nan::Callback *callback
) : Nan::AsyncWorker(callback)
, baton(_baton) {};
~OpenExtWorker() {};
void Execute();
void HandleOKCallback();
private:
OpenExtBaton *baton;
};
static NAN_METHOD(OpenExt);
struct OpenFromWorktreeBaton {
int error_code;
const git_error* error;
git_repository * out;
git_worktree * wt;
};
class OpenFromWorktreeWorker : public Nan::AsyncWorker {
public:
OpenFromWorktreeWorker(
OpenFromWorktreeBaton *_baton,
Nan::Callback *callback
) : Nan::AsyncWorker(callback)
, baton(_baton) {};
~OpenFromWorktreeWorker() {};
void Execute();
void HandleOKCallback();
private:
OpenFromWorktreeBaton *baton;
};
static NAN_METHOD(OpenFromWorktree);
static NAN_METHOD(Path);
struct RefdbBaton {
int error_code;
const git_error* error;
git_refdb * out;
git_repository * repo;
};
class RefdbWorker : public Nan::AsyncWorker {
public:
RefdbWorker(
RefdbBaton *_baton,
Nan::Callback *callback
) : Nan::AsyncWorker(callback)
, baton(_baton) {};
~RefdbWorker() {};
void Execute();
void HandleOKCallback();
private:
RefdbBaton *baton;
};
static NAN_METHOD(Refdb);
struct SetHeadBaton {
int error_code;
const git_error* error;
git_repository * repo;
const char * refname;
};
class SetHeadWorker : public Nan::AsyncWorker {
public:
SetHeadWorker(
SetHeadBaton *_baton,
Nan::Callback *callback
) : Nan::AsyncWorker(callback)
, baton(_baton) {};
~SetHeadWorker() {};
void Execute();
void HandleOKCallback();
private:
SetHeadBaton *baton;
};
static NAN_METHOD(SetHead);
static NAN_METHOD(SetHeadDetached);
static NAN_METHOD(SetHeadDetachedFromAnnotated);
static NAN_METHOD(SetIdent);
static NAN_METHOD(SetNamespace);
static NAN_METHOD(SetWorkdir);
static NAN_METHOD(State);
static NAN_METHOD(StateCleanup);
static NAN_METHOD(Workdir);
struct WrapOdbBaton {
int error_code;
const git_error* error;
git_repository * out;
git_odb * odb;
};
class WrapOdbWorker : public Nan::AsyncWorker {
public:
WrapOdbWorker(
WrapOdbBaton *_baton,
Nan::Callback *callback
) : Nan::AsyncWorker(callback)
, baton(_baton) {};
~WrapOdbWorker() {};
void Execute();
void HandleOKCallback();
private:
WrapOdbBaton *baton;
};
static NAN_METHOD(WrapOdb);
struct CleanupBaton {
int error_code;
const git_error* error;
git_repository * repo;
};
class CleanupWorker : public Nan::AsyncWorker {
public:
CleanupWorker(
CleanupBaton *_baton,
Nan::Callback *callback
) : Nan::AsyncWorker(callback)
, baton(_baton) {};
~CleanupWorker() {};
void Execute();
void HandleOKCallback();
private:
CleanupBaton *baton;
};
static NAN_METHOD(Cleanup);
struct GetReferencesBaton {
int error_code;
const git_error* error;
std::vector<git_reference *> * out;
git_repository * repo;
};
class GetReferencesWorker : public Nan::AsyncWorker {
public:
GetReferencesWorker(
GetReferencesBaton *_baton,
Nan::Callback *callback
) : Nan::AsyncWorker(callback)
, baton(_baton) {};
~GetReferencesWorker() {};
void Execute();
void HandleOKCallback();
private:
GetReferencesBaton *baton;
};
static NAN_METHOD(GetReferences);
struct GetSubmodulesBaton {
int error_code;
const git_error* error;
std::vector<git_submodule *> * out;
git_repository * repo;
};
class GetSubmodulesWorker : public Nan::AsyncWorker {
public:
GetSubmodulesWorker(
GetSubmodulesBaton *_baton,
Nan::Callback *callback
) : Nan::AsyncWorker(callback)
, baton(_baton) {};
~GetSubmodulesWorker() {};
void Execute();
void HandleOKCallback();
private:
GetSubmodulesBaton *baton;
};
static NAN_METHOD(GetSubmodules);
struct GetRemotesBaton {
int error_code;
const git_error* error;
std::vector<git_remote *> * out;
git_repository * repo;
};
class GetRemotesWorker : public Nan::AsyncWorker {
public:
GetRemotesWorker(
GetRemotesBaton *_baton,
Nan::Callback *callback
) : Nan::AsyncWorker(callback)
, baton(_baton) {};
~GetRemotesWorker() {};
void Execute();
void HandleOKCallback();
private:
GetRemotesBaton *baton;
};
static NAN_METHOD(GetRemotes);
struct RefreshReferencesBaton {
int error_code;
const git_error* error;
void * out;
git_repository * repo;
};
class RefreshReferencesWorker : public Nan::AsyncWorker {
public:
RefreshReferencesWorker(
RefreshReferencesBaton *_baton,
Nan::Callback *callback
) : Nan::AsyncWorker(callback)
, baton(_baton) {};
~RefreshReferencesWorker() {};
void Execute();
void HandleOKCallback();
private:
RefreshReferencesBaton *baton;
};
static NAN_METHOD(RefreshReferences);
static NAN_METHOD(SetIndex);
static NAN_METHOD(SubmoduleCacheAll);
static NAN_METHOD(SubmoduleCacheClear);
struct FetchheadForeach_globalPayload {
Nan::Callback * callback;
FetchheadForeach_globalPayload() {
callback = NULL;
}
~FetchheadForeach_globalPayload() {
if (callback != NULL) {
delete callback;
}
}
};
struct MergeheadForeach_globalPayload {
Nan::Callback * callback;
MergeheadForeach_globalPayload() {
callback = NULL;
}
~MergeheadForeach_globalPayload() {
if (callback != NULL) {
delete callback;
}
}
};
};
#endif