Files
huishou/node_modules/nodegit/include/revwalk.h
T
2026-07-27 13:37:48 +08:00

203 lines
4.7 KiB
C++

// This is a generated file, modify: generate/templates/templates/class_header.h
#ifndef GITREVWALK_H
#define GITREVWALK_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 "../include/commit.h"
#include "../include/functions/copy.h"
#include "../include/oid.h"
#include "../include/repository.h"
// Forward declaration.
struct git_revwalk {
};
using namespace node;
using namespace v8;
class GitRevwalk;
struct GitRevwalkTraits {
typedef GitRevwalk cppClass;
typedef git_revwalk cType;
static const bool isDuplicable = false;
static void duplicate(git_revwalk **dest, git_revwalk *src) {
Nan::ThrowError("duplicate called on GitRevwalk which cannot be duplicated");
}
static const bool isSingleton = false;
static const bool isFreeable = true;
static void free(git_revwalk *raw) {
unsigned long referenceCount = 0;
if (referenceCount == 0) {
::git_revwalk_free(raw); // :: to avoid calling this free recursively
}
}
};
class GitRevwalk : public
NodeGitWrapper<GitRevwalkTraits>
{
// grant full access to base class
friend class NodeGitWrapper<GitRevwalkTraits>;
public:
static void InitializeComponent (v8::Local<v8::Object> target);
private:
GitRevwalk()
: NodeGitWrapper<GitRevwalkTraits>(
"A new GitRevwalk cannot be instantiated."
)
{}
GitRevwalk(git_revwalk *raw, bool selfFreeing, v8::Local<v8::Object> owner = v8::Local<v8::Object>())
: NodeGitWrapper<GitRevwalkTraits>(raw, selfFreeing, owner)
{}
~GitRevwalk();
static NAN_METHOD(Hide);
static NAN_METHOD(HideGlob);
static NAN_METHOD(HideHead);
static NAN_METHOD(HideRef);
static NAN_METHOD(Create);
struct NextBaton {
int error_code;
const git_error* error;
git_oid * out;
git_revwalk * walk;
};
class NextWorker : public Nan::AsyncWorker {
public:
NextWorker(
NextBaton *_baton,
Nan::Callback *callback
) : Nan::AsyncWorker(callback)
, baton(_baton) {};
~NextWorker() {};
void Execute();
void HandleOKCallback();
private:
NextBaton *baton;
};
static NAN_METHOD(Next);
static NAN_METHOD(Push);
static NAN_METHOD(PushGlob);
static NAN_METHOD(PushHead);
static NAN_METHOD(PushRange);
static NAN_METHOD(PushRef);
static NAN_METHOD(Repository);
static NAN_METHOD(Reset);
static NAN_METHOD(SimplifyFirstParent);
static NAN_METHOD(Sorting);
struct CommitWalkBaton {
int error_code;
const git_error* error;
int max_count;
void * out;
bool returnPlainObjects;
git_revwalk * walk;
};
class CommitWalkWorker : public Nan::AsyncWorker {
public:
CommitWalkWorker(
CommitWalkBaton *_baton,
Nan::Callback *callback
) : Nan::AsyncWorker(callback)
, baton(_baton) {};
~CommitWalkWorker() {};
void Execute();
void HandleOKCallback();
private:
CommitWalkBaton *baton;
};
static NAN_METHOD(CommitWalk);
struct FastWalkBaton {
int error_code;
const git_error* error;
int max_count;
std::vector<git_oid*> * out;
git_revwalk * walk;
};
class FastWalkWorker : public Nan::AsyncWorker {
public:
FastWalkWorker(
FastWalkBaton *_baton,
Nan::Callback *callback
) : Nan::AsyncWorker(callback)
, baton(_baton) {};
~FastWalkWorker() {};
void Execute();
void HandleOKCallback();
private:
FastWalkBaton *baton;
};
static NAN_METHOD(FastWalk);
struct FileHistoryWalkBaton {
int error_code;
const git_error* error;
const char * file_path;
unsigned int max_count;
std::vector<void *> * out;
git_revwalk * walk;
};
class FileHistoryWalkWorker : public Nan::AsyncWorker {
public:
FileHistoryWalkWorker(
FileHistoryWalkBaton *_baton,
Nan::Callback *callback
) : Nan::AsyncWorker(callback)
, baton(_baton) {};
~FileHistoryWalkWorker() {};
void Execute();
void HandleOKCallback();
private:
FileHistoryWalkBaton *baton;
};
static NAN_METHOD(FileHistoryWalk);
};
#endif