#ifndef CONVENIENTPATCH_H #define CONVENIENTPATCH_H // generated from class_header.h #include #include #include "async_baton.h" #include "promise_completion.h" extern "C" { #include } #include "../include/typedefs.h" #include "../include/convenient_hunk.h" struct ConvenientLineStats { size_t context; size_t additions; size_t deletions; }; struct PatchData { ConvenientLineStats lineStats; git_delta_t status; git_diff_file new_file; git_diff_file old_file; std::vector *hunks; size_t numHunks; }; PatchData *createFromRaw(git_patch *raw); void PatchDataFree(PatchData *patch); using namespace node; using namespace v8; class ConvenientPatch : public Nan::ObjectWrap { public: static Nan::Persistent constructor_template; static void InitializeComponent (v8::Local target); static v8::Local New(void *raw); ConvenientLineStats GetLineStats(); git_delta_t GetStatus(); git_diff_file GetOldFile(); git_diff_file GetNewFile(); size_t GetNumHunks(); PatchData *GetValue(); private: ConvenientPatch(PatchData *raw); ~ConvenientPatch(); PatchData *patch; static NAN_METHOD(JSNewFunction); // patch methods static NAN_METHOD(LineStats); // hunk methods static NAN_METHOD(Size); struct HunksBaton { PatchData *patch; std::vector *hunks; }; class HunksWorker : public Nan::AsyncWorker { public: HunksWorker( HunksBaton *_baton, Nan::Callback *callback ) : Nan::AsyncWorker(callback) , baton(_baton) {}; ~HunksWorker() {}; void Execute(); void HandleOKCallback(); private: HunksBaton *baton; }; static NAN_METHOD(Hunks); // delta methods static NAN_METHOD(OldFile); static NAN_METHOD(NewFile); // convenient status methods static NAN_METHOD(Status); static NAN_METHOD(IsUnmodified); static NAN_METHOD(IsAdded); static NAN_METHOD(IsDeleted); static NAN_METHOD(IsModified); static NAN_METHOD(IsRenamed); static NAN_METHOD(IsCopied); static NAN_METHOD(IsIgnored); static NAN_METHOD(IsUntracked); static NAN_METHOD(IsTypeChange); static NAN_METHOD(IsUnreadable); static NAN_METHOD(IsConflicted); // Hunk methods }; #endif