[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/nodegit/nodegit/v0.0.75/include/tree.h [Back]  [Original]

/*
Copyright (c) 2011, Tim Branyen @tbranyen 
*/

#ifndef GITTREE_H
#define GITTREE_H

#include 
#include 
#include 

#include "../vendor/libgit2/include/git2.h"

#include "repo.h"
#include "tree_entry.h"

using namespace v8;
using namespace node;

/**
 * Class wrapper for libgit2 git_tree
 */
class GitTree : public ObjectWrap {
  public:
    /**
     * v8::FunctionTemplate used to create Node.js constructor
     */
    static Persistent constructor_template;

    /**
     * Used to intialize the EventEmitter from Node.js
     *
     * @param target v8::Object the Node.js module object
     */
    static void Initialize(Handle target);
    /**
     * Accessor for GitTree
     *
     * @return the internal git_tree reference
     */
    git_tree* GetValue();
    /**
     * Mutator for GitTree
     *
     * @param obj a git_tree object
     */
    void SetValue(git_tree* tree);
    /**
     * Lookup a tree object from a repository.
     *
     * @param repo the repo to use when locating the tree.
     * @param id identity of the tree to locate.
     *
     * @return 0 on success; error code otherwise
     */
    int Lookup(git_repository* repo, const git_oid* id);
    /**
     * Get number of entries in the looked up tree.
     *
     * @return number of entries
     */
    size_t EntryCount();
    /**
     * Get entry by index in the looked up tree.
     *
     * @param idx index of the entry
     *
     * @return git tree entry
     */
    git_tree_entry* EntryByIndex(int idx);

    git_tree_entry* EntryByName(const char* name);

    int SortEntries();
    void ClearEntries();

  protected:
    /**
     * Constructor
     */
    GitTree() {};
    /**
     * Deconstructor
     */
    ~GitTree() {};
    /**
     * Creates a new instance of GitTree to Node.js
     *
     * @param args v8::Arguments function call arguments from Node.js
     *
     * @return v8::Object args.This()
     */
    static Handle New(const Arguments& args);

    static Handle Lookup(const Arguments& args);
    static void EIO_Lookup(uv_work_t *req);
    static void EIO_AfterLookup(uv_work_t *req);
    static Handle EntryCount(const Arguments& args);
    static Handle EntryByIndex(const Arguments& args);
    static void EIO_EntryByIndex(uv_work_t *req);
    static void EIO_AfterEntryByIndex(uv_work_t *req);
    static Handle EntryByName(const Arguments& args);
    static void EIO_EntryByName(uv_work_t *req);
    static void EIO_AfterEntryByName(uv_work_t *req);
    static Handle SortEntries(const Arguments& args);
    static Handle ClearEntries(const Arguments& args);

  private:
    /**
     * Internal reference to git_tree object
     */
    git_tree* tree;
    /**
     * Structure to handle async lookups
     */
    struct lookup_request {
      GitTree* tree;
      GitRepo* repo;
      GitOid* oid;
      int err;
      Persistent callback;
    };
    /**
     * Structure to handle async entryByIndex
     */
    struct entryindex_request {
      GitTree* tree;
      GitTreeEntry* entry;
      int idx;
      Persistent callback;
    };
    /**
     * Structure to handle async entryByName
     */
    struct entryname_request {
      GitTree* tree;
      GitTreeEntry* entry;
      std::string name;
      Persistent callback;
    };
};

#endif

Web Proxy Viewer  |  New URL  |  Original Page