[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/nodegit/nodegit/v0.0.3/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 EventEmitter {
  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 tree pointer to the looked up tree
     * @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_tree** tree, 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 EntryCount(const Arguments& args);
    static Handle EntryByIndex(const Arguments& args);
    static Handle EntryByName(const Arguments& args);
    static Handle SortEntries(const Arguments& args);
    static Handle ClearEntries(const Arguments& args);

  private:
    /**
     * Internal reference to git_tree object
     */
    git_tree* tree;
};

#endif

Web Proxy Viewer  |  New URL  |  Original Page