From 8fcc9f34d7bc1eed7ce6724e407c77eeca8b4eaf Mon Sep 17 00:00:00 2001 From: "Robert G. Jakabosky" Date: Sat, 2 Apr 2011 14:11:34 -0700 Subject: Update luagit2 to latest libgit2 interface (3e3e4631a0362ba23) --- CMakeLists.txt | 11 + LIBGIT2_VERSION | 2 +- git2.nobj.lua | 59 +- src/blob.nobj.lua | 25 +- src/commit.nobj.lua | 65 +- src/database.nobj.lua | 43 +- src/object.nobj.lua | 18 +- src/odb_object.nobj.lua | 50 ++ src/pre_generated-git2.nobj.c | 1605 ++++++++++++++++++----------------------- src/rawobject.nobj.lua | 135 ---- src/reference.nobj.lua | 86 +++ src/repository.nobj.lua | 14 - src/revwalk.nobj.lua | 11 +- src/strarray.nobj.lua | 66 ++ src/tag.nobj.lua | 18 +- src/tree.nobj.lua | 14 - src/tree_entry.nobj.lua | 13 +- 17 files changed, 1028 insertions(+), 1207 deletions(-) create mode 100644 src/odb_object.nobj.lua delete mode 100644 src/rawobject.nobj.lua create mode 100644 src/reference.nobj.lua create mode 100644 src/strarray.nobj.lua diff --git a/CMakeLists.txt b/CMakeLists.txt index c38efda..ffa4a7a 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,6 +46,17 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${LUA_INCLUDE_DIR}) +# +# Setup CMAKE_C_FLAGS* and CMAKE_CXX_FLAGS* +# +if(CMAKE_COMPILER_IS_GNUCC) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pipe -Wall -Wextra -Wshadow -W -pedantic -std=gnu99 -fgnu89-inline") + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -march=native -g") + set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 -g") + set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_PROFILE} -O2 -g -DNDEBUG") + set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_WITHDEBINFO} -O2 -g") +endif(CMAKE_COMPILER_IS_GNUCC) + ## LuaGit2 set(LUA_GIT2_SRC git2.nobj.lua diff --git a/LIBGIT2_VERSION b/LIBGIT2_VERSION index b55fdc4..6570deb 100644 --- a/LIBGIT2_VERSION +++ b/LIBGIT2_VERSION @@ -1 +1 @@ -fc70832a4fe26e3a237876a865e723fb7f4cc79d +3e3e4631a0362ba2358c9a2227e3cf0aaec8cf53 diff --git a/git2.nobj.lua b/git2.nobj.lua index be01b6c..66dd456 100644 --- a/git2.nobj.lua +++ b/git2.nobj.lua @@ -7,34 +7,54 @@ hide_meta_info = false, --true, include "git2.h", -- Error codes +export_definitions { +SUCCESS = "GIT_SUCCESS", +ERROR = "GIT_ERROR", +ENOTOID = "GIT_ENOTOID", +ENOTFOUND = "GIT_ENOTFOUND", +ENOMEM = "GIT_ENOMEM", +EOSERR = "GIT_EOSERR", +EOBJTYPE = "GIT_EOBJTYPE", +EOBJCORRUPTED = "GIT_EOBJCORRUPTED", +ENOTAREPO = "GIT_ENOTAREPO", +EINVALIDTYPE = "GIT_EINVALIDTYPE", +EMISSINGOBJDATA = "GIT_EMISSINGOBJDATA", +EPACKCORRUPTED = "GIT_EPACKCORRUPTED", +EFLOCKFAIL = "GIT_EFLOCKFAIL", +EZLIB = "GIT_EZLIB", +EBUSY = "GIT_EBUSY", +EBAREINDEX = "GIT_EBAREINDEX", +EINVALIDREFNAME = "GIT_EINVALIDREFNAME", +EREFCORRUPTED = "GIT_EREFCORRUPTED", +ETOONESTEDSYMREF = "GIT_ETOONESTEDSYMREF", +EPACKEDREFSCORRUPTED = "GIT_EPACKEDREFSCORRUPTED", +EINVALIDPATH = "GIT_EINVALIDPATH", +EREVWALKOVER = "GIT_EREVWALKOVER", +EINVALIDREFSTATE = "GIT_EINVALIDREFSTATE", +ENOTIMPLEMENTED = "GIT_ENOTIMPLEMENTED", +EEXISTS = "GIT_EEXISTS", +}, + +-- reference types constants { -SUCCESS = 0, -ERROR = -1, -ENOTOID = -2, -ENOTFOUND = -3, -ENOMEM = -4, -EOSERR = -5, -EOBJTYPE = -6, -EOBJCORRUPTED = -7, -ENOTAREPO = -8, -EINVALIDTYPE = -9, -EMISSINGOBJDATA = -10, -EPACKCORRUPTED = -11, -EFLOCKFAIL = -12, -EZLIB = -13, -EBUSY = -14, -EBAREINDEX = -15, +REF_INVALID = 0, -- Invalid reference */ +REF_OID = 1, -- A reference which points at an object id */ +REF_SYMBOLIC = 2, -- A reference which points at another reference */ +REF_PACKED = 4, +REF_HAS_PEEL = 8, +REF_LISTALL = 0x07, -- GIT_REF_OID|GIT_REF_SYMBOLIC|GIT_REF_PACKED, }, subfiles { +"src/strarray.nobj.lua", +"src/error.nobj.lua", "src/repository.nobj.lua", -"src/rawobject.nobj.lua", +"src/odb_object.nobj.lua", "src/oid.nobj.lua", "src/database.nobj.lua", -"src/database_backend.nobj.lua", +--"src/database_backend.nobj.lua", "src/index.nobj.lua", "src/index_entry.nobj.lua", -"src/error.nobj.lua", "src/object.nobj.lua", "src/blob.nobj.lua", "src/signature.nobj.lua", @@ -43,6 +63,7 @@ subfiles { "src/tree_entry.nobj.lua", "src/tag.nobj.lua", "src/revwalk.nobj.lua", +"src/reference.nobj.lua", }, } diff --git a/src/blob.nobj.lua b/src/blob.nobj.lua index 94232b0..2b7bfa4 100644 --- a/src/blob.nobj.lua +++ b/src/blob.nobj.lua @@ -23,31 +23,22 @@ object "Blob" { typedef git_blob Blob; ]], extends "Object", - constructor "new" { - c_call { "GitError", "err" } "git_blob_new" { "Blob *", "&this", "Repository *", "repo" }, - }, constructor "lookup" { c_call { "GitError", "err" } "git_blob_lookup" { "Blob *", "&this", "Repository *", "repo", "OID", "&id" }, }, - c_function "writefile" { - c_call { "GitError", "err>2" } "git_blob_writefile" + c_function "fromfile" { + c_call { "GitError", "err>2" } "git_blob_create_fromfile" { "OID", "&written_id>1", "Repository *", "repo", "const char *", "path" }, }, - method "set_rawcontent_fromfile" { - c_method_call { "GitError", "err" } "git_blob_set_rawcontent_fromfile" - { "const char *", "filename" } - }, - method "set_rawcontent" { - c_method_call { "GitError", "err" } "git_blob_set_rawcontent" - { "const char *", "buffer", "size_t", "#buffer" } + c_function "frombuffer" { + c_call { "GitError", "err" } "git_blob_create_frombuffer" + { "OID", "&written_id>1", "Repository *", "repo", + "const char *", "buffer", "size_t", "#buffer" }, }, method "rawcontent" { - var_out{"const char *", "buffer", has_length = true}, - c_source [[ - ${buffer} = git_blob_rawcontent(${this}); - ${buffer_len} = git_blob_rawsize(${this}); -]] + c_method_call { "const char *", "buff" } "git_blob_rawcontent" {}, + c_method_call { "size_t", "#buff" } "git_blob_rawsize" {}, }, method "rawsize" { c_method_call "int" "git_blob_rawsize" {} diff --git a/src/commit.nobj.lua b/src/commit.nobj.lua index e2bdbb6..7cd8d46 100644 --- a/src/commit.nobj.lua +++ b/src/commit.nobj.lua @@ -23,51 +23,76 @@ object "Commit" { typedef git_commit Commit; ]], extends "Object", - constructor "new" { - c_call {"GitError", "err"} "git_commit_new" { "Commit *", "&this", "Repository *", "repo" }, - }, constructor "lookup" { c_call {"GitError", "err"} "git_commit_lookup" { "Commit *", "&this", "Repository *", "repo", "OID", "&id" }, }, + c_function "create" { + var_in{ "OID", "oid" }, + var_in{ "Repository *", "repo" }, + var_in{ "const char *", "update_ref" }, + var_in{ "Signature *", "author" }, + var_in{ "Signature *", "committer" }, + var_in{ "const char *", "message" }, + var_in{ "Tree *", "tree" }, + var_in{ "Commit *", "parent" }, + var_out{"GitError", "err"}, + c_source "pre" [[ + int parent_count = 0; + const git_oid **p_oids; + int n; +]], + c_source[[ + /* count parents. */ + parent_count = lua_gettop(L) - ${parent::idx} + 1; + /* valid parents. The first parent commit is already validated. */ + for(n = 1; n < parent_count; n++) { + obj_type_Commit_check(L, ${parent::idx} + n); + } + /* now it is safe to allocate oid array. */ + p_oids = malloc(parent_count * sizeof(git_oid *)); + + /* copy oids from all parents into oid array. */ + p_oids[0] = git_object_id((git_object *)${parent}); + for(n = 1; n < parent_count; n++) { + ${parent} = obj_type_Commit_check(L, ${parent::idx} + n); + p_oids[n] = git_object_id((git_object *)${parent}); + } + + ${err} = git_commit_create(&(${oid}), ${repo}, ${update_ref}, + ${author}, ${committer}, ${message}, git_object_id((git_object *)${tree}), + parent_count, p_oids); + /* free parent oid array. */ + free(p_oids); +]] + }, method "message" { c_method_call "const char *" "git_commit_message" {} }, method "message_short" { c_method_call "const char *" "git_commit_message_short" {} }, - method "set_message" { - c_method_call "void" "git_commit_set_message" { "const char *", "message" } - }, method "time" { c_method_call "time_t" "git_commit_time" {} }, + method "time_offset" { + c_method_call "int" "git_commit_time_offset" {} + }, method "committer" { c_method_call "const Signature *" "git_commit_committer" {} }, - method "set_committer" { - c_method_call "void" "git_commit_set_committer" { "const Signature *", "sig" } - }, method "author" { c_method_call "const Signature *" "git_commit_author" {} }, - method "set_author" { - c_method_call "void" "git_commit_set_author" { "const Signature *", "sig" } - }, method "tree" { - c_method_call "const Tree *" "git_commit_tree" {} - }, - method "set_tree" { - c_method_call "void" "git_commit_set_tree" { "Tree *", "tree" } + c_call "GitError" "git_commit_tree" { "Tree *", "&tree>1", "Commit *", "this" } }, method "parentcount" { c_method_call "unsigned int" "git_commit_parentcount" {} }, method "parent" { - c_method_call "Commit *" "git_commit_parent" { "unsigned int", "n" } - }, - method "add_parent" { - c_method_call "GitError" "git_commit_add_parent" { "Commit *", "parent" } + c_call "GitError" "git_commit_parent" + { "Commit *", "&parent>1", "Commit *", "this", "unsigned int", "n" } }, } diff --git a/src/database.nobj.lua b/src/database.nobj.lua index 73118d5..83520d1 100644 --- a/src/database.nobj.lua +++ b/src/database.nobj.lua @@ -32,6 +32,7 @@ typedef git_odb Database; destructor "close" { c_method_call "void" "git_odb_close" {} }, + --[=[ method "add_backend" { var_in{"DatabaseBackend *", "backend"}, var_in{"int", "priority"}, @@ -50,43 +51,21 @@ typedef git_odb Database; DatabaseBackend_ref(${backend}); ]], }, + --]=] method "read" { - var_in{"OID", "id"}, - var_out{"RawObject *", "obj"}, - var_out{"GitError", "err"}, - c_source [[ - RawObject raw; - git_rawobj git; - ${err} = git_odb_read(&(git), ${this}, &(${id})); - if(${err} == GIT_SUCCESS) { - /* convert git_rawobj to RawObject */ - RawObject_from_git_rawobj(L, &raw, &git, 1); - ${obj} = &(raw); - } -]], + c_call "GitError" "git_odb_read" + { "OdbObject *", "&out>1", "Database *", "this", "OID", "&id"}, }, method "read_header" { - var_in{"OID", "id"}, - var_out{"RawObject *", "obj"}, - var_out{"GitError", "err"}, - c_source [[ - RawObject raw; - git_rawobj git; - ${err} = git_odb_read_header(&(git), ${this}, &(${id})); - if(${err} == GIT_SUCCESS) { - /* convert git_rawobj to RawObject */ - RawObject_from_git_rawobj(L, &raw, &git, 1); - ${obj} = &(raw); - } -]], + c_call { "GitError", "err>3" } "git_odb_read_header" + { "size_t", "&size>1", "git_otype", "&(otype)", "Database *", "this", "OID", "&id"}, + c_call { "const char *", "type>2" } "git_object_type2string" { "git_otype", "otype" }, }, method "write" { - var_in{"RawObject *", "obj"}, - var_out{"OID", "id"}, - var_out{"GitError", "err"}, - c_source [[ - ${err} = git_odb_write(&(${id}), ${this}, &(${obj}->git)); -]], + c_call { "git_otype", "(otype)" } "git_object_string2type" { "const char *", "type<4" }, + c_call "GitError" "git_odb_write" + { "OID", "&id<2", "Database *", "this<1", "const char *", "data", "size_t", "#data", + "git_otype", "otype"}, }, method "exists" { c_method_call { "GitError", "err" } "git_odb_exists" { "OID", "&id" } diff --git a/src/object.nobj.lua b/src/object.nobj.lua index 70a88ae..54baa1d 100644 --- a/src/object.nobj.lua +++ b/src/object.nobj.lua @@ -19,6 +19,7 @@ -- THE SOFTWARE. object "Object" { + basetype "git_otype" "integer", c_source [[ typedef git_object Object; ]], @@ -29,23 +30,18 @@ typedef git_object Object; GIT_OBJ_BLOB = "Blob", GIT_OBJ_COMMIT = "Commit", GIT_OBJ_TREE = "Tree", + GIT_OBJ_TAG = "Tag", }, }, - destructor { - c_method_call "void" "git_object_free" {} - }, - method "write" { - c_method_call "GitError" "git_object_write" {} + destructor "close" { + c_method_call "void" "git_object_close" {} }, method "id" { - var_out{ "OID", "id" }, - c_source [[ - ${id} = *(git_object_id(${this})); -]] + c_method_call { "OID", "*id" } "git_object_id" {}, }, method "type" { - var_out{"const char *", "type"}, - c_source "${type} = git_object_type2string(git_object_type(${this}));" + c_method_call { "git_otype", "(otype)" } "git_object_type" {}, + c_call { "const char *", "type" } "git_object_type2string" { "git_otype", "otype" }, }, method "owner" { c_method_call "Repository *" "git_object_owner" {} diff --git a/src/odb_object.nobj.lua b/src/odb_object.nobj.lua new file mode 100644 index 0000000..708f953 --- /dev/null +++ b/src/odb_object.nobj.lua @@ -0,0 +1,50 @@ +-- Copyright (c) 2011 by Robert G. Jakabosky +-- +-- Permission is hereby granted, free of charge, to any person obtaining a copy +-- of this software and associated documentation files (the "Software"), to deal +-- in the Software without restriction, including without limitation the rights +-- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +-- copies of the Software, and to permit persons to whom the Software is +-- furnished to do so, subject to the following conditions: +-- +-- The above copyright notice and this permission notice shall be included in +-- all copies or substantial portions of the Software. +-- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +-- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +-- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +-- THE SOFTWARE. + +object "OdbObject" { + c_source [[ +typedef git_odb_object OdbObject; +]], + destructor "close" { + c_method_call "void" "git_odb_object_close" {}, + }, + method "data" { + c_method_call { "const char *", "data" } "git_odb_object_data" {}, + c_method_call { "size_t", "#data" } "git_odb_object_size" {}, + }, + method "size" { + c_method_call "size_t" "git_odb_object_size" {}, + }, + method "type" { + c_method_call { "git_otype", "(otype)" } "git_odb_object_type" {}, + c_call { "const char *", "type" } "git_object_type2string" { "git_otype", "otype" }, + }, + method "id" { + c_method_call { "OID", "*id" } "git_odb_object_id" {}, + }, + method "hash" { + c_method_call { "const void *", "(data)" } "git_odb_object_data" {}, + c_method_call { "size_t", "(size)" } "git_odb_object_size" {}, + c_method_call { "git_otype", "(otype)" } "git_odb_object_type" {}, + c_call { "GitError", "err>2" } "git_odb_hash" + { "OID", "&id>1", "const void *", "data", "size_t", "size", "git_otype", "otype" }, + }, +} + diff --git a/src/pre_generated-git2.nobj.c b/src/pre_generated-git2.nobj.c index 8be8da0..de35b8a 100644 --- a/src/pre_generated-git2.nobj.c +++ b/src/pre_generated-git2.nobj.c @@ -152,7 +152,15 @@ typedef struct ffi_export_symbol { #endif -#define obj_type_id_Repository 0 +#define obj_type_id_StrArray 0 +#define obj_type_StrArray_check(L, _index) \ + (StrArray *)obj_simple_udata_luacheck(L, _index, &(obj_type_StrArray)) +#define obj_type_StrArray_delete(L, _index, flags) \ + (StrArray *)obj_simple_udata_luadelete(L, _index, &(obj_type_StrArray), flags) +#define obj_type_StrArray_push(L, obj, flags) \ + obj_simple_udata_luapush(L, obj, sizeof(StrArray), &(obj_type_StrArray)) + +#define obj_type_id_Repository 1 #define obj_type_Repository_check(L, _index) \ obj_udata_luacheck(L, _index, &(obj_type_Repository)) #define obj_type_Repository_delete(L, _index, flags) \ @@ -160,15 +168,15 @@ typedef struct ffi_export_symbol { #define obj_type_Repository_push(L, obj, flags) \ obj_udata_luapush_weak(L, (void *)obj, &(obj_type_Repository), flags) -#define obj_type_id_RawObject 1 -#define obj_type_RawObject_check(L, _index) \ - (RawObject *)obj_simple_udata_luacheck(L, _index, &(obj_type_RawObject)) -#define obj_type_RawObject_delete(L, _index, flags) \ - (RawObject *)obj_simple_udata_luadelete(L, _index, &(obj_type_RawObject), flags) -#define obj_type_RawObject_push(L, obj, flags) \ - obj_simple_udata_luapush(L, obj, sizeof(RawObject), &(obj_type_RawObject)) +#define obj_type_id_OdbObject 2 +#define obj_type_OdbObject_check(L, _index) \ + obj_udata_luacheck(L, _index, &(obj_type_OdbObject)) +#define obj_type_OdbObject_delete(L, _index, flags) \ + obj_udata_luadelete_weak(L, _index, &(obj_type_OdbObject), flags) +#define obj_type_OdbObject_push(L, obj, flags) \ + obj_udata_luapush_weak(L, (void *)obj, &(obj_type_OdbObject), flags) -#define obj_type_id_OID 2 +#define obj_type_id_OID 3 #define obj_type_OID_check(L, _index) \ *((OID *)obj_simple_udata_luacheck(L, _index, &(obj_type_OID))) #define obj_type_OID_delete(L, _index, flags) \ @@ -176,7 +184,7 @@ typedef struct ffi_export_symbol { #define obj_type_OID_push(L, obj, flags) \ obj_simple_udata_luapush(L, &(obj), sizeof(OID), &(obj_type_OID)) -#define obj_type_id_Database 3 +#define obj_type_id_Database 4 #define obj_type_Database_check(L, _index) \ obj_udata_luacheck(L, _index, &(obj_type_Database)) #define obj_type_Database_delete(L, _index, flags) \ @@ -184,14 +192,6 @@ typedef struct ffi_export_symbol { #define obj_type_Database_push(L, obj, flags) \ obj_udata_luapush_weak(L, (void *)obj, &(obj_type_Database), flags) -#define obj_type_id_DatabaseBackend 4 -#define obj_type_DatabaseBackend_check(L, _index) \ - obj_udata_luacheck(L, _index, &(obj_type_DatabaseBackend)) -#define obj_type_DatabaseBackend_delete(L, _index, flags) \ - obj_udata_luadelete_weak(L, _index, &(obj_type_DatabaseBackend), flags) -#define obj_type_DatabaseBackend_push(L, obj, flags) \ - obj_udata_luapush_weak(L, (void *)obj, &(obj_type_DatabaseBackend), flags) - #define obj_type_id_Index 5 #define obj_type_Index_check(L, _index) \ obj_udata_luacheck(L, _index, &(obj_type_Index)) @@ -272,6 +272,14 @@ typedef struct ffi_export_symbol { #define obj_type_RevWalk_push(L, obj, flags) \ obj_udata_luapush_weak(L, (void *)obj, &(obj_type_RevWalk), flags) +#define obj_type_id_Reference 15 +#define obj_type_Reference_check(L, _index) \ + obj_udata_luacheck(L, _index, &(obj_type_Reference)) +#define obj_type_Reference_delete(L, _index, flags) \ + obj_udata_luadelete_weak(L, _index, &(obj_type_Reference), flags) +#define obj_type_Reference_push(L, obj, flags) \ + obj_udata_luapush_weak(L, (void *)obj, &(obj_type_Reference), flags) + typedef int GitError; @@ -280,11 +288,11 @@ static void error_code__GitError__push(lua_State *L, GitError err); static void dyn_caster_Object(void **obj, obj_type **type); -static obj_type obj_type_Repository = { NULL, 0, OBJ_TYPE_FLAG_WEAK_REF, "Repository" }; -static obj_type obj_type_RawObject = { NULL, 1, OBJ_TYPE_SIMPLE, "RawObject" }; -static obj_type obj_type_OID = { NULL, 2, OBJ_TYPE_SIMPLE, "OID" }; -static obj_type obj_type_Database = { NULL, 3, OBJ_TYPE_FLAG_WEAK_REF, "Database" }; -static obj_type obj_type_DatabaseBackend = { NULL, 4, OBJ_TYPE_FLAG_WEAK_REF, "DatabaseBackend" }; +static obj_type obj_type_StrArray = { NULL, 0, OBJ_TYPE_SIMPLE, "StrArray" }; +static obj_type obj_type_Repository = { NULL, 1, OBJ_TYPE_FLAG_WEAK_REF, "Repository" }; +static obj_type obj_type_OdbObject = { NULL, 2, OBJ_TYPE_FLAG_WEAK_REF, "OdbObject" }; +static obj_type obj_type_OID = { NULL, 3, OBJ_TYPE_SIMPLE, "OID" }; +static obj_type obj_type_Database = { NULL, 4, OBJ_TYPE_FLAG_WEAK_REF, "Database" }; static obj_type obj_type_Index = { NULL, 5, OBJ_TYPE_FLAG_WEAK_REF, "Index" }; static obj_type obj_type_IndexEntry = { NULL, 6, OBJ_TYPE_FLAG_WEAK_REF, "IndexEntry" }; static obj_type obj_type_Object = { dyn_caster_Object, 7, OBJ_TYPE_FLAG_WEAK_REF, "Object" }; @@ -295,6 +303,7 @@ static obj_type obj_type_Tree = { NULL, 11, OBJ_TYPE_FLAG_WEAK_REF, "Tree" }; static obj_type obj_type_TreeEntry = { NULL, 12, OBJ_TYPE_FLAG_WEAK_REF, "TreeEntry" }; static obj_type obj_type_Tag = { NULL, 13, OBJ_TYPE_FLAG_WEAK_REF, "Tag" }; static obj_type obj_type_RevWalk = { NULL, 14, OBJ_TYPE_FLAG_WEAK_REF, "RevWalk" }; +static obj_type obj_type_Reference = { NULL, 15, OBJ_TYPE_FLAG_WEAK_REF, "Reference" }; #ifndef REG_PACKAGE_IS_CONSTRUCTOR @@ -561,7 +570,7 @@ static FUNC_UNUSED void * obj_simple_udata_luadelete(lua_State *L, int _index, o return obj; } -static FUNC_UNUSED void obj_simple_udata_luapush(lua_State *L, void *obj, int size, obj_type *type) +static FUNC_UNUSED void *obj_simple_udata_luapush(lua_State *L, void *obj, int size, obj_type *type) { /* create new userdata. */ void *ud = lua_newuserdata(L, size); @@ -570,6 +579,8 @@ static FUNC_UNUSED void obj_simple_udata_luapush(lua_State *L, void *obj, int si lua_pushlightuserdata(L, type); lua_rawget(L, LUA_REGISTRYINDEX); /* type's metatable. */ lua_setmetatable(L, -2); + + return ud; } /* default simple object equal method. */ @@ -701,6 +712,8 @@ static void obj_type_register(lua_State *L, const reg_sub_module *type_reg, int lua_pushstring(L, type->name); lua_pushvalue(L, -2); /* dup metatable. */ lua_rawset(L, priv_table); /* priv_table[""] = metatable */ +#else + (void)priv_table; #endif luaL_register(L, NULL, type_reg->metas); /* fill metatable */ @@ -781,218 +794,115 @@ static int nobj_try_loading_ffi(lua_State *L, const char *ffi_mod_name, -typedef git_repository Repository; - -typedef struct RawObject { - git_rawobj git; - int ref; -} RawObject; - -static void RawObject_set_data_and_ref(lua_State *L, RawObject *raw, const char *data, int len, int idx) { - /* Release old reference. */ - if(raw->ref != LUA_REFNIL) { - luaL_unref(L, LUA_REGISTRYINDEX, raw->ref); - } - raw->git.data = (void *)data; - raw->git.len = len; - if(data) { - /* Get a reference to the Lua string. */ - lua_pushvalue(L, idx); - raw->ref = luaL_ref(L, LUA_REGISTRYINDEX); - } else { - raw->ref = LUA_REFNIL; - } -} - -static void RawObject_from_git_rawobj(lua_State *L, RawObject *raw, git_rawobj *git, int cleanup) { - /* push raw object's data onto stack. */ - lua_pushlstring(L, git->data, git->len); - /* get Lua's pointer to the string. */ - raw->git.data = (void *)lua_tolstring(L, -1, &(raw->git.len)); - raw->git.type = git->type; - /* get reference to string. */ - raw->ref = luaL_ref(L, LUA_REGISTRYINDEX); - /* clean-up git_rawobj. */ - if(cleanup && git->data != NULL) { - git_rawobj_close(git); - } -} +typedef git_strarray StrArray; -static void RawObject_close(lua_State *L, RawObject *raw) { - luaL_unref(L, LUA_REGISTRYINDEX, raw->ref); - raw->ref = LUA_REFNIL; - raw->git.data = NULL; -} +typedef git_repository Repository; +typedef git_odb_object OdbObject; typedef git_oid OID; typedef git_odb Database; -//typedef struct RawObject RawObject; -#include - -typedef struct DatabaseBackend { - git_odb_backend backend; - lua_State *L; - int read; - int read_header; - int write; - int exists; - int free; - int ref_count; -} DatabaseBackend; - -static void DatabaseBackend_ref(DatabaseBackend *backend) { - backend->ref_count++; -} - -static void DatabaseBackend_unref(DatabaseBackend *backend) { - lua_State *L = backend->L; - if((--backend->ref_count) == 0) { - luaL_unref(L, LUA_REGISTRYINDEX, backend->read); - luaL_unref(L, LUA_REGISTRYINDEX, backend->read_header); - luaL_unref(L, LUA_REGISTRYINDEX, backend->write); - luaL_unref(L, LUA_REGISTRYINDEX, backend->exists); - luaL_unref(L, LUA_REGISTRYINDEX, backend->free); - free(backend); - } -} +typedef git_index Index; -static int database_backend_read_cb(git_rawobj *obj, git_odb_backend *backend, const git_oid *oid) -{ - DatabaseBackend *lua_backend = (DatabaseBackend *)backend; - lua_State *L = lua_backend->L; - int err; +typedef git_index_entry IndexEntry; - /* get Lua callback function. */ - lua_rawgeti(L, LUA_REGISTRYINDEX, lua_backend->read); - - obj_type_OID_push(L, *((OID *)oid), 0); - /* call Lua function. */ - lua_call(L, 1, 2); - err = lua_tointeger(L, -1); - if(err == 0) { - RawObject *raw_obj = obj_type_RawObject_check(L,-2); - /* copy header fields. */ - obj->len = raw_obj->git.len; - obj->type = raw_obj->git.type; - /* we must malloc & copy the RawObject's data. */ - if(raw_obj->git.data) { - obj->data = malloc(obj->len); - if(obj->data == NULL) { - /* failed to allocate buffer. */ - return GIT_ENOMEM; - } - /* copy data. */ - memcpy(obj->data, raw_obj->git.data, obj->len); - } else { - obj->data = NULL; - } - } +typedef git_object Object; - return err; -} +typedef git_blob Blob; -static int database_backend_read_header_cb(git_rawobj *obj, git_odb_backend *backend, const git_oid *oid) -{ - DatabaseBackend *lua_backend = (DatabaseBackend *)backend; - lua_State *L = lua_backend->L; - int err; +typedef git_signature Signature; - /* get Lua callback function. */ - lua_rawgeti(L, LUA_REGISTRYINDEX, lua_backend->read_header); - - obj_type_OID_push(L, *((OID *)oid), 0); - /* call Lua function. */ - lua_call(L, 1, 2); - err = lua_tointeger(L, -1); - if(err == 0) { - RawObject *raw_obj = obj_type_RawObject_check(L,-2); - /* copy only header fields. */ - obj->data = NULL; - obj->len = raw_obj->git.len; - obj->type = raw_obj->git.type; - } +typedef git_commit Commit; - return err; -} +typedef git_tree Tree; -static int database_backend_write_cb(git_oid *oid, git_odb_backend *backend, git_rawobj *obj) -{ - DatabaseBackend *lua_backend = (DatabaseBackend *)backend; - lua_State *L = lua_backend->L; - RawObject raw; - int err; +typedef git_tree_entry TreeEntry; - /* get Lua callback function. */ - lua_rawgeti(L, LUA_REGISTRYINDEX, lua_backend->write); +typedef git_tag Tag; - /* convert git_rawobj to RawObject */ - RawObject_from_git_rawobj(L, &raw, obj, 0); - /* push RawObject onto stack. */ - obj_type_RawObject_push(L, &raw, 0); +typedef git_revwalk RevWalk; - /* call Lua function. */ - lua_call(L, 1, 2); - err = lua_tointeger(L, -1); - if(err == 0) { - *oid = obj_type_OID_check(L,-2); - } +typedef git_reference Reference; - return err; -} -static int database_backend_exists_cb(git_odb_backend *backend, const git_oid *oid) -{ - DatabaseBackend *lua_backend = (DatabaseBackend *)backend; - lua_State *L = lua_backend->L; - /* get Lua callback function. */ - lua_rawgeti(L, LUA_REGISTRYINDEX, lua_backend->exists); +/* method: new */ +static int StrArray__new__meth(lua_State *L) { + int this_flags_idx1 = OBJ_UDATA_FLAG_OWN; + StrArray * this_idx1; + StrArray array; + array.strings = NULL; + array.count = 0; + this_idx1 = &array; - obj_type_OID_push(L, *((OID *)oid), 0); - /* call Lua function. */ - lua_call(L, 1, 1); - return lua_tointeger(L, -1); + obj_type_StrArray_push(L, this_idx1, this_flags_idx1); + return 1; } -static void database_backend_free_cb(git_odb_backend *backend) -{ - DatabaseBackend *lua_backend = (DatabaseBackend *)backend; - lua_State *L = lua_backend->L; - - /* get Lua callback function. */ - lua_rawgeti(L, LUA_REGISTRYINDEX, lua_backend->free); - - /* call Lua function. */ - lua_call(L, 0, 0); +/* method: free */ +static int StrArray__free__meth(lua_State *L) { + int this_flags_idx1 = 0; + StrArray * this_idx1 = obj_type_StrArray_delete(L,1,&(this_flags_idx1)); + if(!(this_flags_idx1 & OBJ_UDATA_FLAG_OWN)) { return 0; } + if(this_idx1->strings != 0) { + git_strarray_free(this_idx1); + this_idx1->strings = NULL; + } - DatabaseBackend_unref(lua_backend); + return 0; } +/* method: str */ +static int StrArray__str__meth(lua_State *L) { + StrArray * this_idx1 = obj_type_StrArray_check(L,1); + size_t n_idx2 = luaL_checkinteger(L,2); + const char * str_idx1 = NULL; + if(n_idx2 < this_idx1->count) { + str_idx1 = this_idx1->strings[n_idx2]; + } -typedef git_index Index; - -typedef git_index_entry IndexEntry; - -typedef git_object Object; - -typedef git_blob Blob; - -typedef git_signature Signature; + lua_pushstring(L, str_idx1); + return 1; +} -typedef git_commit Commit; +/* method: get_array */ +static int StrArray__get_array__meth(lua_State *L) { + StrArray * this_idx1 = obj_type_StrArray_check(L,1); + size_t n; -typedef git_tree Tree; + lua_createtable(L, this_idx1->count, 0); + for(n = 0; n < this_idx1->count; n++) { + lua_pushstring(L, this_idx1->strings[n]); + lua_rawseti(L, -2, n+1); + } -typedef git_tree_entry TreeEntry; + return 1; +} -typedef git_tag Tag; +/* method: count */ +static int StrArray__count__meth(lua_State *L) { + StrArray * this_idx1 = obj_type_StrArray_check(L,1); + size_t field_idx1 = 0; + field_idx1 = this_idx1->count; -typedef git_revwalk RevWalk; + lua_pushinteger(L, field_idx1); + return 1; +} +static void error_code__GitError__push(lua_State *L, GitError err) { + const char *err_str = NULL; + if(err != GIT_SUCCESS) { + err_str = git_strerror(err); + } + if(err_str) { + lua_pushstring(L, err_str); + } else { + lua_pushnil(L); + } +} /* method: open */ static int Repository__open__meth(lua_State *L) { @@ -1107,170 +1017,67 @@ static int Repository__index__meth(lua_State *L) { return 2; } -/* method: lookup */ -static int Repository__lookup__meth(lua_State *L) { - Repository * this_idx1 = obj_type_Repository_check(L,1); - OID id_idx2 = obj_type_OID_check(L,2); - size_t type_len_idx3; - const char * type_idx3 = luaL_checklstring(L,3,&(type_len_idx3)); - Object * obj_idx1; - GitError err_idx2 = GIT_SUCCESS; - int otype_idx3 = 0; - otype_idx3 = git_object_string2type(type_idx3); - err_idx2 = git_repository_lookup(&(obj_idx1), this_idx1, &(id_idx2), otype_idx3); - if(!(GIT_SUCCESS != err_idx2)) { - obj_type_Object_push(L, obj_idx1, 0); - } else { - lua_pushnil(L); - } - error_code__GitError__push(L, err_idx2); - return 2; -} - -/* method: newobject */ -static int Repository__newobject__meth(lua_State *L) { - Repository * this_idx1 = obj_type_Repository_check(L,1); - size_t type_len_idx2; - const char * type_idx2 = luaL_checklstring(L,2,&(type_len_idx2)); - Object * obj_idx1; - GitError err_idx2 = GIT_SUCCESS; - int otype_idx3 = 0; - otype_idx3 = git_object_string2type(type_idx2); - err_idx2 = git_repository_newobject(&(obj_idx1), this_idx1, otype_idx3); - if(!(GIT_SUCCESS != err_idx2)) { - obj_type_Object_push(L, obj_idx1, 0); - } else { - lua_pushnil(L); - } - error_code__GitError__push(L, err_idx2); - return 2; -} - -/* method: blob_writefile */ -static int Repository__blob_writefile__meth(lua_State *L) { - Repository * this_idx1 = obj_type_Repository_check(L,1); - size_t path_len_idx2; - const char * path_idx2 = luaL_checklstring(L,2,&(path_len_idx2)); - OID written_id_idx1; - GitError err_idx2 = GIT_SUCCESS; - err_idx2 = git_blob_writefile(&(written_id_idx1), this_idx1, path_idx2); - if(!(GIT_SUCCESS != err_idx2)) { - obj_type_OID_push(L, written_id_idx1, 0); - } else { - lua_pushnil(L); - } - error_code__GitError__push(L, err_idx2); - return 2; -} - -/* method: new */ -static int RawObject__new__meth(lua_State *L) { - size_t type_len_idx1; - const char * type_idx1 = luaL_checklstring(L,1,&(type_len_idx1)); - size_t data_len_idx2; - const char * data_idx2 = luaL_checklstring(L,2,&(data_len_idx2)); - int this_flags_idx1 = OBJ_UDATA_FLAG_OWN; - RawObject * this_idx1 = NULL; - RawObject raw; /* temp. storage, this gets copied. */ - this_idx1 = &(raw); - raw.git.type = git_object_string2type(type_idx1); - raw.ref = LUA_REFNIL; - RawObject_set_data_and_ref(L, &raw, data_idx2, data_len_idx2, 2); - - obj_type_RawObject_push(L, this_idx1, this_flags_idx1); - return 1; -} - -/* method: header */ -static int RawObject__header__meth(lua_State *L) { - size_t type_len_idx1; - const char * type_idx1 = luaL_checklstring(L,1,&(type_len_idx1)); - size_t len_idx2 = luaL_checkinteger(L,2); - int this_flags_idx1 = OBJ_UDATA_FLAG_OWN; - RawObject * this_idx1 = NULL; - RawObject raw; /* temp. storage, this gets copied. */ - this_idx1 = &(raw); - raw.git.data = NULL; - raw.git.len = len_idx2; - raw.git.type = git_object_string2type(type_idx1); - raw.ref = LUA_REFNIL; - - obj_type_RawObject_push(L, this_idx1, this_flags_idx1); - return 1; -} - -/* method: delete */ -static int RawObject__delete__meth(lua_State *L) { +/* method: close */ +static int OdbObject__close__meth(lua_State *L) { int this_flags_idx1 = 0; - RawObject * this_idx1 = obj_type_RawObject_delete(L,1,&(this_flags_idx1)); + OdbObject * this_idx1 = obj_type_OdbObject_delete(L,1,&(this_flags_idx1)); if(!(this_flags_idx1 & OBJ_UDATA_FLAG_OWN)) { return 0; } - RawObject_close(L, this_idx1); - - return 0; -} - -/* method: close */ -static int RawObject__close__meth(lua_State *L) { - RawObject * this_idx1 = obj_type_RawObject_check(L,1); - RawObject_close(L, this_idx1); - + git_odb_object_close(this_idx1); return 0; } /* method: data */ -static int RawObject__data__meth(lua_State *L) { - RawObject * this_idx1 = obj_type_RawObject_check(L,1); - /* push Lua string. */ - lua_rawgeti(L, LUA_REGISTRYINDEX, this_idx1->ref); - +static int OdbObject__data__meth(lua_State *L) { + OdbObject * this_idx1 = obj_type_OdbObject_check(L,1); + size_t data_len_idx1 = 0; + const char * data_idx1 = NULL; + data_idx1 = git_odb_object_data(this_idx1); + data_len_idx1 = git_odb_object_size(this_idx1); + if(data_idx1 == NULL) lua_pushnil(L); else lua_pushlstring(L, data_idx1,data_len_idx1); return 1; } -/* method: set_data */ -static int RawObject__set_data__meth(lua_State *L) { - RawObject * this_idx1 = obj_type_RawObject_check(L,1); - size_t data_len_idx2; - const char * data_idx2 = luaL_checklstring(L,2,&(data_len_idx2)); - RawObject_set_data_and_ref(L, this_idx1, data_idx2, data_len_idx2, 2); - - return 0; -} - -/* method: len */ -static int RawObject__len__meth(lua_State *L) { - RawObject * this_idx1 = obj_type_RawObject_check(L,1); - size_t len_idx1 = 0; - len_idx1 = this_idx1->git.len; - - lua_pushinteger(L, len_idx1); +/* method: size */ +static int OdbObject__size__meth(lua_State *L) { + OdbObject * this_idx1 = obj_type_OdbObject_check(L,1); + size_t rc_git_odb_object_size_idx1 = 0; + rc_git_odb_object_size_idx1 = git_odb_object_size(this_idx1); + lua_pushinteger(L, rc_git_odb_object_size_idx1); return 1; } /* method: type */ -static int RawObject__type__meth(lua_State *L) { - RawObject * this_idx1 = obj_type_RawObject_check(L,1); - const char * type_idx1 = NULL; -type_idx1 = git_object_type2string(this_idx1->git.type); - lua_pushstring(L, type_idx1); +static int OdbObject__type__meth(lua_State *L) { + OdbObject * this_idx1 = obj_type_OdbObject_check(L,1); + git_otype otype_idx1; + const char * type_idx2 = NULL; + otype_idx1 = git_odb_object_type(this_idx1); + type_idx2 = git_object_type2string(otype_idx1); + lua_pushstring(L, type_idx2); return 1; } -/* method: set_type */ -static int RawObject__set_type__meth(lua_State *L) { - RawObject * this_idx1 = obj_type_RawObject_check(L,1); - size_t type_len_idx2; - const char * type_idx2 = luaL_checklstring(L,2,&(type_len_idx2)); -this_idx1->git.type = git_object_string2type(type_idx2); - return 0; +/* method: id */ +static int OdbObject__id__meth(lua_State *L) { + OdbObject * this_idx1 = obj_type_OdbObject_check(L,1); + OID id_idx1; + id_idx1 = *git_odb_object_id(this_idx1); + obj_type_OID_push(L, id_idx1, 0); + return 1; } /* method: hash */ -static int RawObject__hash__meth(lua_State *L) { - RawObject * this_idx1 = obj_type_RawObject_check(L,1); +static int OdbObject__hash__meth(lua_State *L) { + OdbObject * this_idx1 = obj_type_OdbObject_check(L,1); OID id_idx1; GitError err_idx2 = GIT_SUCCESS; - err_idx2 = git_rawobj_hash(&(id_idx1), &(this_idx1->git)); - + git_otype otype_idx3; + size_t size_idx4 = 0; + const void * data_idx5 = NULL; + data_idx5 = git_odb_object_data(this_idx1); + size_idx4 = git_odb_object_size(this_idx1); + otype_idx3 = git_odb_object_type(this_idx1); + err_idx2 = git_odb_hash(&(id_idx1), data_idx5, size_idx4, otype_idx3); if(!(GIT_SUCCESS != err_idx2)) { obj_type_OID_push(L, id_idx1, 0); } else { @@ -1372,67 +1179,19 @@ static int Database__close__meth(lua_State *L) { return 0; } -/* method: add_backend */ -static int Database__add_backend__meth(lua_State *L) { - Database * this_idx1 = obj_type_Database_check(L,1); - DatabaseBackend * backend_idx2 = obj_type_DatabaseBackend_check(L,2); - int priority_idx3 = luaL_checkinteger(L,3); - GitError err_idx1 = GIT_SUCCESS; - err_idx1 = git_odb_add_backend(this_idx1, &(backend_idx2->backend), priority_idx3); - DatabaseBackend_ref(backend_idx2); - - /* check for error. */ - if((GIT_SUCCESS != err_idx1)) { - lua_pushboolean(L, 0); - error_code__GitError__push(L, err_idx1); - } else { - lua_pushboolean(L, 1); - lua_pushnil(L); - } - return 2; -} - -/* method: add_alternate */ -static int Database__add_alternate__meth(lua_State *L) { - Database * this_idx1 = obj_type_Database_check(L,1); - DatabaseBackend * backend_idx2 = obj_type_DatabaseBackend_check(L,2); - int priority_idx3 = luaL_checkinteger(L,3); - GitError err_idx1 = GIT_SUCCESS; - err_idx1 = git_odb_add_alternate(this_idx1, &(backend_idx2->backend), priority_idx3); - DatabaseBackend_ref(backend_idx2); - - /* check for error. */ - if((GIT_SUCCESS != err_idx1)) { - lua_pushboolean(L, 0); - error_code__GitError__push(L, err_idx1); - } else { - lua_pushboolean(L, 1); - lua_pushnil(L); - } - return 2; -} - /* method: read */ static int Database__read__meth(lua_State *L) { Database * this_idx1 = obj_type_Database_check(L,1); OID id_idx2 = obj_type_OID_check(L,2); - RawObject * obj_idx1 = NULL; - GitError err_idx2 = GIT_SUCCESS; - RawObject raw; - git_rawobj git; - err_idx2 = git_odb_read(&(git), this_idx1, &(id_idx2)); - if(err_idx2 == GIT_SUCCESS) { - /* convert git_rawobj to RawObject */ - RawObject_from_git_rawobj(L, &raw, &git, 1); - obj_idx1 = &(raw); - } - - if(!(GIT_SUCCESS != err_idx2)) { - obj_type_RawObject_push(L, obj_idx1, 0); + OdbObject * out_idx1; + GitError rc_git_odb_read_idx2 = GIT_SUCCESS; + rc_git_odb_read_idx2 = git_odb_read(&(out_idx1), this_idx1, &(id_idx2)); + if(!(GIT_SUCCESS != rc_git_odb_read_idx2)) { + obj_type_OdbObject_push(L, out_idx1, 0); } else { lua_pushnil(L); } - error_code__GitError__push(L, err_idx2); + error_code__GitError__push(L, rc_git_odb_read_idx2); return 2; } @@ -1440,41 +1199,40 @@ static int Database__read__meth(lua_State *L) { static int Database__read_header__meth(lua_State *L) { Database * this_idx1 = obj_type_Database_check(L,1); OID id_idx2 = obj_type_OID_check(L,2); - RawObject * obj_idx1 = NULL; - GitError err_idx2 = GIT_SUCCESS; - RawObject raw; - git_rawobj git; - err_idx2 = git_odb_read_header(&(git), this_idx1, &(id_idx2)); - if(err_idx2 == GIT_SUCCESS) { - /* convert git_rawobj to RawObject */ - RawObject_from_git_rawobj(L, &raw, &git, 1); - obj_idx1 = &(raw); - } - - if(!(GIT_SUCCESS != err_idx2)) { - obj_type_RawObject_push(L, obj_idx1, 0); + size_t size_idx1 = 0; + const char * type_idx2 = NULL; + GitError err_idx3 = GIT_SUCCESS; + git_otype otype_idx4; + err_idx3 = git_odb_read_header(&(size_idx1), &(otype_idx4), this_idx1, &(id_idx2)); + type_idx2 = git_object_type2string(otype_idx4); + if(!(GIT_SUCCESS != err_idx3)) { + lua_pushinteger(L, size_idx1); } else { lua_pushnil(L); } - error_code__GitError__push(L, err_idx2); - return 2; + if(!(GIT_SUCCESS != err_idx3)) { + lua_pushstring(L, type_idx2); + } else { + lua_pushnil(L); + } + error_code__GitError__push(L, err_idx3); + return 3; } /* method: write */ static int Database__write__meth(lua_State *L) { Database * this_idx1 = obj_type_Database_check(L,1); - RawObject * obj_idx2 = obj_type_RawObject_check(L,2); - OID id_idx1; - GitError err_idx2 = GIT_SUCCESS; - err_idx2 = git_odb_write(&(id_idx1), this_idx1, &(obj_idx2->git)); - - if(!(GIT_SUCCESS != err_idx2)) { - obj_type_OID_push(L, id_idx1, 0); - } else { - lua_pushnil(L); - } - error_code__GitError__push(L, err_idx2); - return 2; + OID id_idx2 = obj_type_OID_check(L,2); + size_t data_len_idx3; + const char * data_idx3 = luaL_checklstring(L,3,&(data_len_idx3)); + size_t type_len_idx4; + const char * type_idx4 = luaL_checklstring(L,4,&(type_len_idx4)); + git_otype otype_idx1; + GitError rc_git_odb_write_idx2 = GIT_SUCCESS; + otype_idx1 = git_object_string2type(type_idx4); + rc_git_odb_write_idx2 = git_odb_write(&(id_idx2), this_idx1, data_idx3, data_len_idx3, otype_idx1); + error_code__GitError__push(L, rc_git_odb_write_idx2); + return 1; } /* method: exists */ @@ -1494,46 +1252,6 @@ static int Database__exists__meth(lua_State *L) { return 2; } -/* method: new */ -static int DatabaseBackend__new__meth(lua_State *L) { - int this_flags_idx1 = OBJ_UDATA_FLAG_OWN; - DatabaseBackend * this_idx1; - int idx; - int ref; - - luaL_checktype(L, 1, LUA_TTABLE); - lua_settop(L, 1); - /* create backend object. */ - this_idx1 = calloc(1, sizeof(DatabaseBackend)); - this_idx1->ref_count = 1; - this_idx1->L = L; - /* get each callback from table. */ -#define REF_CB(_name) \ - lua_getfield(L, 1, "on_" #_name); \ - this_idx1->_name = luaL_ref(L, LUA_REGISTRYINDEX); \ - this_idx1->backend._name = database_backend_ ## _name ## _cb; - - REF_CB(read) - REF_CB(read_header) - REF_CB(write) - REF_CB(exists) - REF_CB(free) -#undef REF_CB - - obj_type_DatabaseBackend_push(L, this_idx1, this_flags_idx1); - return 1; -} - -/* method: delete */ -static int DatabaseBackend__delete__meth(lua_State *L) { - int this_flags_idx1 = 0; - DatabaseBackend * this_idx1 = obj_type_DatabaseBackend_delete(L,1,&(this_flags_idx1)); - if(!(this_flags_idx1 & OBJ_UDATA_FLAG_OWN)) { return 0; } - DatabaseBackend_unref(this_idx1); - - return 0; -} - /* method: bare */ static int Index__bare__meth(lua_State *L) { size_t index_path_len_idx1; @@ -1930,50 +1648,20 @@ static int IndexEntry__set_path__meth(lua_State *L) { return 0; } -static void error_code__GitError__push(lua_State *L, GitError err) { - const char *err_str = NULL; - if(err != GIT_SUCCESS) { - err_str = git_strerror(err); - } - - if(err_str) { - lua_pushstring(L, err_str); - } else { - lua_pushnil(L); - } -} - -/* method: delete */ -static int Object__delete__meth(lua_State *L) { +/* method: close */ +static int Object__close__meth(lua_State *L) { int this_flags_idx1 = 0; Object * this_idx1 = obj_type_Object_delete(L,1,&(this_flags_idx1)); if(!(this_flags_idx1 & OBJ_UDATA_FLAG_OWN)) { return 0; } - git_object_free(this_idx1); + git_object_close(this_idx1); return 0; } -/* method: write */ -static int Object__write__meth(lua_State *L) { - Object * this_idx1 = obj_type_Object_check(L,1); - GitError rc_git_object_write_idx1 = GIT_SUCCESS; - rc_git_object_write_idx1 = git_object_write(this_idx1); - /* check for error. */ - if((GIT_SUCCESS != rc_git_object_write_idx1)) { - lua_pushboolean(L, 0); - error_code__GitError__push(L, rc_git_object_write_idx1); - } else { - lua_pushboolean(L, 1); - lua_pushnil(L); - } - return 2; -} - /* method: id */ static int Object__id__meth(lua_State *L) { Object * this_idx1 = obj_type_Object_check(L,1); OID id_idx1; - id_idx1 = *(git_object_id(this_idx1)); - + id_idx1 = *git_object_id(this_idx1); obj_type_OID_push(L, id_idx1, 0); return 1; } @@ -1981,9 +1669,11 @@ static int Object__id__meth(lua_State *L) { /* method: type */ static int Object__type__meth(lua_State *L) { Object * this_idx1 = obj_type_Object_check(L,1); - const char * type_idx1 = NULL; -type_idx1 = git_object_type2string(git_object_type(this_idx1)); - lua_pushstring(L, type_idx1); + git_otype otype_idx1; + const char * type_idx2 = NULL; + otype_idx1 = git_object_type(this_idx1); + type_idx2 = git_object_type2string(otype_idx1); + lua_pushstring(L, type_idx2); return 1; } @@ -1999,36 +1689,23 @@ static int Object__owner__meth(lua_State *L) { static void dyn_caster_Object(void **obj, obj_type **type) { Object * base_obj = (Object *)*obj; switch(git_object_type(base_obj)) { - case GIT_OBJ_BLOB: + case GIT_OBJ_COMMIT: + *type = &(obj_type_Commit); + break; + case GIT_OBJ_BLOB: *type = &(obj_type_Blob); break; case GIT_OBJ_TREE: *type = &(obj_type_Tree); break; - case GIT_OBJ_COMMIT: - *type = &(obj_type_Commit); + case GIT_OBJ_TAG: + *type = &(obj_type_Tag); break; default: break; } } -/* method: new */ -static int Blob__new__meth(lua_State *L) { - Repository * repo_idx1 = obj_type_Repository_check(L,1); - int this_flags_idx1 = OBJ_UDATA_FLAG_OWN; - Blob * this_idx1; - GitError err_idx2 = GIT_SUCCESS; - err_idx2 = git_blob_new(&(this_idx1), repo_idx1); - if(!(GIT_SUCCESS != err_idx2)) { - obj_type_Blob_push(L, this_idx1, this_flags_idx1); - } else { - lua_pushnil(L); - } - error_code__GitError__push(L, err_idx2); - return 2; -} - /* method: lookup */ static int Blob__lookup__meth(lua_State *L) { Repository * repo_idx1 = obj_type_Repository_check(L,1); @@ -2046,14 +1723,14 @@ static int Blob__lookup__meth(lua_State *L) { return 2; } -/* method: writefile */ -static int Blob__writefile__func(lua_State *L) { +/* method: fromfile */ +static int Blob__fromfile__func(lua_State *L) { Repository * repo_idx1 = obj_type_Repository_check(L,1); size_t path_len_idx2; const char * path_idx2 = luaL_checklstring(L,2,&(path_len_idx2)); OID written_id_idx1; GitError err_idx2 = GIT_SUCCESS; - err_idx2 = git_blob_writefile(&(written_id_idx1), repo_idx1, path_idx2); + err_idx2 = git_blob_create_fromfile(&(written_id_idx1), repo_idx1, path_idx2); if(!(GIT_SUCCESS != err_idx2)) { obj_type_OID_push(L, written_id_idx1, 0); } else { @@ -2063,51 +1740,31 @@ static int Blob__writefile__func(lua_State *L) { return 2; } -/* method: set_rawcontent_fromfile */ -static int Blob__set_rawcontent_fromfile__meth(lua_State *L) { - Blob * this_idx1 = obj_type_Blob_check(L,1); - size_t filename_len_idx2; - const char * filename_idx2 = luaL_checklstring(L,2,&(filename_len_idx2)); - GitError err_idx1 = GIT_SUCCESS; - err_idx1 = git_blob_set_rawcontent_fromfile(this_idx1, filename_idx2); - /* check for error. */ - if((GIT_SUCCESS != err_idx1)) { - lua_pushboolean(L, 0); - error_code__GitError__push(L, err_idx1); - } else { - lua_pushboolean(L, 1); - lua_pushnil(L); - } - return 2; -} - -/* method: set_rawcontent */ -static int Blob__set_rawcontent__meth(lua_State *L) { - Blob * this_idx1 = obj_type_Blob_check(L,1); +/* method: frombuffer */ +static int Blob__frombuffer__func(lua_State *L) { + Repository * repo_idx1 = obj_type_Repository_check(L,1); size_t buffer_len_idx2; const char * buffer_idx2 = luaL_checklstring(L,2,&(buffer_len_idx2)); - GitError err_idx1 = GIT_SUCCESS; - err_idx1 = git_blob_set_rawcontent(this_idx1, buffer_idx2, buffer_len_idx2); - /* check for error. */ - if((GIT_SUCCESS != err_idx1)) { - lua_pushboolean(L, 0); - error_code__GitError__push(L, err_idx1); + OID written_id_idx1; + GitError err_idx2 = GIT_SUCCESS; + err_idx2 = git_blob_create_frombuffer(&(written_id_idx1), repo_idx1, buffer_idx2, buffer_len_idx2); + if(!(GIT_SUCCESS != err_idx2)) { + obj_type_OID_push(L, written_id_idx1, 0); } else { - lua_pushboolean(L, 1); lua_pushnil(L); } + error_code__GitError__push(L, err_idx2); return 2; } /* method: rawcontent */ static int Blob__rawcontent__meth(lua_State *L) { Blob * this_idx1 = obj_type_Blob_check(L,1); - size_t buffer_len_idx1 = 0; - const char * buffer_idx1 = NULL; - buffer_idx1 = git_blob_rawcontent(this_idx1); - buffer_len_idx1 = git_blob_rawsize(this_idx1); - - if(buffer_idx1 == NULL) lua_pushnil(L); else lua_pushlstring(L, buffer_idx1,buffer_len_idx1); + size_t buff_len_idx1 = 0; + const char * buff_idx1 = NULL; + buff_idx1 = git_blob_rawcontent(this_idx1); + buff_len_idx1 = git_blob_rawsize(this_idx1); + if(buff_idx1 == NULL) lua_pushnil(L); else lua_pushlstring(L, buff_idx1,buff_len_idx1); return 1; } @@ -2173,13 +1830,14 @@ time_idx1 = this_idx1->when.time; offset_idx2 = this_idx1->when.offset; return 2; } -/* method: new */ -static int Commit__new__meth(lua_State *L) { +/* method: lookup */ +static int Commit__lookup__meth(lua_State *L) { Repository * repo_idx1 = obj_type_Repository_check(L,1); + OID id_idx2 = obj_type_OID_check(L,2); int this_flags_idx1 = OBJ_UDATA_FLAG_OWN; Commit * this_idx1; GitError err_idx2 = GIT_SUCCESS; - err_idx2 = git_commit_new(&(this_idx1), repo_idx1); + err_idx2 = git_commit_lookup(&(this_idx1), repo_idx1, &(id_idx2)); if(!(GIT_SUCCESS != err_idx2)) { obj_type_Commit_push(L, this_idx1, this_flags_idx1); } else { @@ -2189,20 +1847,53 @@ static int Commit__new__meth(lua_State *L) { return 2; } -/* method: lookup */ -static int Commit__lookup__meth(lua_State *L) { - Repository * repo_idx1 = obj_type_Repository_check(L,1); - OID id_idx2 = obj_type_OID_check(L,2); - int this_flags_idx1 = OBJ_UDATA_FLAG_OWN; - Commit * this_idx1; - GitError err_idx2 = GIT_SUCCESS; - err_idx2 = git_commit_lookup(&(this_idx1), repo_idx1, &(id_idx2)); - if(!(GIT_SUCCESS != err_idx2)) { - obj_type_Commit_push(L, this_idx1, this_flags_idx1); +/* method: create */ +static int Commit__create__func(lua_State *L) { + OID oid_idx1 = obj_type_OID_check(L,1); + Repository * repo_idx2 = obj_type_Repository_check(L,2); + size_t update_ref_len_idx3; + const char * update_ref_idx3 = luaL_checklstring(L,3,&(update_ref_len_idx3)); + Signature * author_idx4 = obj_type_Signature_check(L,4); + Signature * committer_idx5 = obj_type_Signature_check(L,5); + size_t message_len_idx6; + const char * message_idx6 = luaL_checklstring(L,6,&(message_len_idx6)); + Tree * tree_idx7 = obj_type_Tree_check(L,7); + Commit * parent_idx8 = obj_type_Commit_check(L,8); + GitError err_idx1 = GIT_SUCCESS; + int parent_count = 0; + const git_oid **p_oids; + int n; + + /* count parents. */ + parent_count = lua_gettop(L) - 8 + 1; + /* valid parents. The first parent commit is already validated. */ + for(n = 1; n < parent_count; n++) { + obj_type_Commit_check(L, 8 + n); + } + /* now it is safe to allocate oid array. */ + p_oids = malloc(parent_count * sizeof(git_oid *)); + + /* copy oids from all parents into oid array. */ + p_oids[0] = git_object_id((git_object *)parent_idx8); + for(n = 1; n < parent_count; n++) { + parent_idx8 = obj_type_Commit_check(L, 8 + n); + p_oids[n] = git_object_id((git_object *)parent_idx8); + } + + err_idx1 = git_commit_create(&(oid_idx1), repo_idx2, update_ref_idx3, + author_idx4, committer_idx5, message_idx6, git_object_id((git_object *)tree_idx7), + parent_count, p_oids); + /* free parent oid array. */ + free(p_oids); + + /* check for error. */ + if((GIT_SUCCESS != err_idx1)) { + lua_pushboolean(L, 0); + error_code__GitError__push(L, err_idx1); } else { + lua_pushboolean(L, 1); lua_pushnil(L); } - error_code__GitError__push(L, err_idx2); return 2; } @@ -2224,15 +1915,6 @@ static int Commit__message_short__meth(lua_State *L) { return 1; } -/* method: set_message */ -static int Commit__set_message__meth(lua_State *L) { - Commit * this_idx1 = obj_type_Commit_check(L,1); - size_t message_len_idx2; - const char * message_idx2 = luaL_checklstring(L,2,&(message_len_idx2)); - git_commit_set_message(this_idx1, message_idx2); - return 0; -} - /* method: time */ static int Commit__time__meth(lua_State *L) { Commit * this_idx1 = obj_type_Commit_check(L,1); @@ -2242,6 +1924,15 @@ static int Commit__time__meth(lua_State *L) { return 1; } +/* method: time_offset */ +static int Commit__time_offset__meth(lua_State *L) { + Commit * this_idx1 = obj_type_Commit_check(L,1); + int rc_git_commit_time_offset_idx1 = 0; + rc_git_commit_time_offset_idx1 = git_commit_time_offset(this_idx1); + lua_pushinteger(L, rc_git_commit_time_offset_idx1); + return 1; +} + /* method: committer */ static int Commit__committer__meth(lua_State *L) { Commit * this_idx1 = obj_type_Commit_check(L,1); @@ -2251,14 +1942,6 @@ static int Commit__committer__meth(lua_State *L) { return 1; } -/* method: set_committer */ -static int Commit__set_committer__meth(lua_State *L) { - Commit * this_idx1 = obj_type_Commit_check(L,1); - const Signature * sig_idx2 = obj_type_Signature_check(L,2); - git_commit_set_committer(this_idx1, sig_idx2); - return 0; -} - /* method: author */ static int Commit__author__meth(lua_State *L) { Commit * this_idx1 = obj_type_Commit_check(L,1); @@ -2268,29 +1951,19 @@ static int Commit__author__meth(lua_State *L) { return 1; } -/* method: set_author */ -static int Commit__set_author__meth(lua_State *L) { - Commit * this_idx1 = obj_type_Commit_check(L,1); - const Signature * sig_idx2 = obj_type_Signature_check(L,2); - git_commit_set_author(this_idx1, sig_idx2); - return 0; -} - /* method: tree */ static int Commit__tree__meth(lua_State *L) { Commit * this_idx1 = obj_type_Commit_check(L,1); - const Tree * rc_git_commit_tree_idx1; - rc_git_commit_tree_idx1 = git_commit_tree(this_idx1); - obj_type_Tree_push(L, rc_git_commit_tree_idx1, 0); - return 1; -} - -/* method: set_tree */ -static int Commit__set_tree__meth(lua_State *L) { - Commit * this_idx1 = obj_type_Commit_check(L,1); - Tree * tree_idx2 = obj_type_Tree_check(L,2); - git_commit_set_tree(this_idx1, tree_idx2); - return 0; + Tree * tree_idx1; + GitError rc_git_commit_tree_idx2 = GIT_SUCCESS; + rc_git_commit_tree_idx2 = git_commit_tree(&(tree_idx1), this_idx1); + if(!(GIT_SUCCESS != rc_git_commit_tree_idx2)) { + obj_type_Tree_push(L, tree_idx1, 0); + } else { + lua_pushnil(L); + } + error_code__GitError__push(L, rc_git_commit_tree_idx2); + return 2; } /* method: parentcount */ @@ -2306,42 +1979,15 @@ static int Commit__parentcount__meth(lua_State *L) { static int Commit__parent__meth(lua_State *L) { Commit * this_idx1 = obj_type_Commit_check(L,1); unsigned int n_idx2 = luaL_checkinteger(L,2); - Commit * rc_git_commit_parent_idx1; - rc_git_commit_parent_idx1 = git_commit_parent(this_idx1, n_idx2); - obj_type_Commit_push(L, rc_git_commit_parent_idx1, 0); - return 1; -} - -/* method: add_parent */ -static int Commit__add_parent__meth(lua_State *L) { - Commit * this_idx1 = obj_type_Commit_check(L,1); - Commit * parent_idx2 = obj_type_Commit_check(L,2); - GitError rc_git_commit_add_parent_idx1 = GIT_SUCCESS; - rc_git_commit_add_parent_idx1 = git_commit_add_parent(this_idx1, parent_idx2); - /* check for error. */ - if((GIT_SUCCESS != rc_git_commit_add_parent_idx1)) { - lua_pushboolean(L, 0); - error_code__GitError__push(L, rc_git_commit_add_parent_idx1); + Commit * parent_idx1; + GitError rc_git_commit_parent_idx2 = GIT_SUCCESS; + rc_git_commit_parent_idx2 = git_commit_parent(&(parent_idx1), this_idx1, n_idx2); + if(!(GIT_SUCCESS != rc_git_commit_parent_idx2)) { + obj_type_Commit_push(L, parent_idx1, 0); } else { - lua_pushboolean(L, 1); lua_pushnil(L); } - return 2; -} - -/* method: new */ -static int Tree__new__meth(lua_State *L) { - Repository * repo_idx1 = obj_type_Repository_check(L,1); - int this_flags_idx1 = OBJ_UDATA_FLAG_OWN; - Tree * this_idx1; - GitError err_idx2 = GIT_SUCCESS; - err_idx2 = git_tree_new(&(this_idx1), repo_idx1); - if(!(GIT_SUCCESS != err_idx2)) { - obj_type_Tree_push(L, this_idx1, this_flags_idx1); - } else { - lua_pushnil(L); - } - error_code__GitError__push(L, err_idx2); + error_code__GitError__push(L, rc_git_commit_parent_idx2); return 2; } @@ -2392,60 +2038,6 @@ static int Tree__entry_byindex__meth(lua_State *L) { return 1; } -/* method: add_entry */ -static int Tree__add_entry__meth(lua_State *L) { - Tree * this_idx1 = obj_type_Tree_check(L,1); - const OID id_idx2 = obj_type_OID_check(L,2); - size_t filename_len_idx3; - const char * filename_idx3 = luaL_checklstring(L,3,&(filename_len_idx3)); - int attributes_idx4 = luaL_checkinteger(L,4); - TreeEntry * entry_out_idx1; - GitError err_idx2 = GIT_SUCCESS; - err_idx2 = git_tree_add_entry(&(entry_out_idx1), this_idx1, &(id_idx2), filename_idx3, attributes_idx4); - if(!(GIT_SUCCESS != err_idx2)) { - obj_type_TreeEntry_push(L, entry_out_idx1, 0); - } else { - lua_pushnil(L); - } - error_code__GitError__push(L, err_idx2); - return 2; -} - -/* method: remove_entry_byname */ -static int Tree__remove_entry_byname__meth(lua_State *L) { - Tree * this_idx1 = obj_type_Tree_check(L,1); - size_t filename_len_idx2; - const char * filename_idx2 = luaL_checklstring(L,2,&(filename_len_idx2)); - GitError rc_git_tree_remove_entry_byname_idx1 = GIT_SUCCESS; - rc_git_tree_remove_entry_byname_idx1 = git_tree_remove_entry_byname(this_idx1, filename_idx2); - /* check for error. */ - if((GIT_SUCCESS != rc_git_tree_remove_entry_byname_idx1)) { - lua_pushboolean(L, 0); - error_code__GitError__push(L, rc_git_tree_remove_entry_byname_idx1); - } else { - lua_pushboolean(L, 1); - lua_pushnil(L); - } - return 2; -} - -/* method: remove_entry_byindex */ -static int Tree__remove_entry_byindex__meth(lua_State *L) { - Tree * this_idx1 = obj_type_Tree_check(L,1); - int index_idx2 = luaL_checkinteger(L,2); - GitError rc_git_tree_remove_entry_byindex_idx1 = GIT_SUCCESS; - rc_git_tree_remove_entry_byindex_idx1 = git_tree_remove_entry_byindex(this_idx1, index_idx2); - /* check for error. */ - if((GIT_SUCCESS != rc_git_tree_remove_entry_byindex_idx1)) { - lua_pushboolean(L, 0); - error_code__GitError__push(L, rc_git_tree_remove_entry_byindex_idx1); - } else { - lua_pushboolean(L, 1); - lua_pushnil(L); - } - return 2; -} - /* method: name */ static int TreeEntry__name__meth(lua_State *L) { TreeEntry * this_idx1 = obj_type_TreeEntry_check(L,1); @@ -2455,15 +2047,6 @@ static int TreeEntry__name__meth(lua_State *L) { return 1; } -/* method: set_name */ -static int TreeEntry__set_name__meth(lua_State *L) { - TreeEntry * this_idx1 = obj_type_TreeEntry_check(L,1); - size_t name_len_idx2; - const char * name_idx2 = luaL_checklstring(L,2,&(name_len_idx2)); - git_tree_entry_set_name(this_idx1, name_idx2); - return 0; -} - /* method: attributes */ static int TreeEntry__attributes__meth(lua_State *L) { TreeEntry * this_idx1 = obj_type_TreeEntry_check(L,1); @@ -2473,14 +2056,6 @@ static int TreeEntry__attributes__meth(lua_State *L) { return 1; } -/* method: set_attributes */ -static int TreeEntry__set_attributes__meth(lua_State *L) { - TreeEntry * this_idx1 = obj_type_TreeEntry_check(L,1); - int attr_idx2 = luaL_checkinteger(L,2); - git_tree_entry_set_attributes(this_idx1, attr_idx2); - return 0; -} - /* method: id */ static int TreeEntry__id__meth(lua_State *L) { TreeEntry * this_idx1 = obj_type_TreeEntry_check(L,1); @@ -2490,42 +2065,19 @@ id_idx1 = *(git_tree_entry_id(this_idx1)); return 1; } -/* method: set_id */ -static int TreeEntry__set_id__meth(lua_State *L) { - TreeEntry * this_idx1 = obj_type_TreeEntry_check(L,1); - OID id_idx2 = obj_type_OID_check(L,2); - git_tree_entry_set_id(this_idx1, &(id_idx2)); - return 0; -} - /* method: object */ static int TreeEntry__object__meth(lua_State *L) { TreeEntry * this_idx1 = obj_type_TreeEntry_check(L,1); + Repository * repo_idx2 = obj_type_Repository_check(L,2); Object * obj_idx1; - GitError err_idx2 = GIT_SUCCESS; - err_idx2 = git_tree_entry_2object(&(obj_idx1), this_idx1); - if(!(GIT_SUCCESS != err_idx2)) { + GitError rc_git_tree_entry_2object_idx2 = GIT_SUCCESS; + rc_git_tree_entry_2object_idx2 = git_tree_entry_2object(&(obj_idx1), repo_idx2, this_idx1); + if(!(GIT_SUCCESS != rc_git_tree_entry_2object_idx2)) { obj_type_Object_push(L, obj_idx1, 0); } else { lua_pushnil(L); } - error_code__GitError__push(L, err_idx2); - return 2; -} - -/* method: new */ -static int Tag__new__meth(lua_State *L) { - Repository * repo_idx1 = obj_type_Repository_check(L,1); - int this_flags_idx1 = OBJ_UDATA_FLAG_OWN; - Tag * this_idx1; - GitError err_idx2 = GIT_SUCCESS; - err_idx2 = git_tag_new(&(this_idx1), repo_idx1); - if(!(GIT_SUCCESS != err_idx2)) { - obj_type_Tag_push(L, this_idx1, this_flags_idx1); - } else { - lua_pushnil(L); - } - error_code__GitError__push(L, err_idx2); + error_code__GitError__push(L, rc_git_tree_entry_2object_idx2); return 2; } @@ -2549,18 +2101,16 @@ static int Tag__lookup__meth(lua_State *L) { /* method: target */ static int Tag__target__meth(lua_State *L) { Tag * this_idx1 = obj_type_Tag_check(L,1); - const Object * rc_git_tag_target_idx1; - rc_git_tag_target_idx1 = git_tag_target(this_idx1); - obj_type_Object_push(L, rc_git_tag_target_idx1, 0); - return 1; -} - -/* method: set_target */ -static int Tag__set_target__meth(lua_State *L) { - Tag * this_idx1 = obj_type_Tag_check(L,1); - Object * target_idx2 = obj_type_Object_check(L,2); - git_tag_set_target(this_idx1, target_idx2); - return 0; + Object * out_idx1; + GitError rc_git_tag_target_idx2 = GIT_SUCCESS; + rc_git_tag_target_idx2 = git_tag_target(&(out_idx1), this_idx1); + if(!(GIT_SUCCESS != rc_git_tag_target_idx2)) { + obj_type_Object_push(L, out_idx1, 0); + } else { + lua_pushnil(L); + } + error_code__GitError__push(L, rc_git_tag_target_idx2); + return 2; } /* method: name */ @@ -2572,15 +2122,6 @@ static int Tag__name__meth(lua_State *L) { return 1; } -/* method: set_name */ -static int Tag__set_name__meth(lua_State *L) { - Tag * this_idx1 = obj_type_Tag_check(L,1); - size_t name_len_idx2; - const char * name_idx2 = luaL_checklstring(L,2,&(name_len_idx2)); - git_tag_set_name(this_idx1, name_idx2); - return 0; -} - /* method: tagger */ static int Tag__tagger__meth(lua_State *L) { Tag * this_idx1 = obj_type_Tag_check(L,1); @@ -2590,14 +2131,6 @@ static int Tag__tagger__meth(lua_State *L) { return 1; } -/* method: set_tagger */ -static int Tag__set_tagger__meth(lua_State *L) { - Tag * this_idx1 = obj_type_Tag_check(L,1); - const Signature * tagger_idx2 = obj_type_Signature_check(L,2); - git_tag_set_tagger(this_idx1, tagger_idx2); - return 0; -} - /* method: message */ static int Tag__message__meth(lua_State *L) { Tag * this_idx1 = obj_type_Tag_check(L,1); @@ -2607,15 +2140,6 @@ static int Tag__message__meth(lua_State *L) { return 1; } -/* method: set_message */ -static int Tag__set_message__meth(lua_State *L) { - Tag * this_idx1 = obj_type_Tag_check(L,1); - size_t message_len_idx2; - const char * message_idx2 = luaL_checklstring(L,2,&(message_len_idx2)); - git_tag_set_message(this_idx1, message_idx2); - return 0; -} - /* method: new */ static int RevWalk__new__meth(lua_State *L) { Repository * repo_idx1 = obj_type_Repository_check(L,1); @@ -2632,8 +2156,8 @@ static int RevWalk__new__meth(lua_State *L) { return 2; } -/* method: delete */ -static int RevWalk__delete__meth(lua_State *L) { +/* method: close */ +static int RevWalk__close__meth(lua_State *L) { int this_flags_idx1 = 0; RevWalk * this_idx1 = obj_type_RevWalk_delete(L,1,&(this_flags_idx1)); if(!(this_flags_idx1 & OBJ_UDATA_FLAG_OWN)) { return 0; } @@ -2651,9 +2175,9 @@ static int RevWalk__reset__meth(lua_State *L) { /* method: push */ static int RevWalk__push__meth(lua_State *L) { RevWalk * this_idx1 = obj_type_RevWalk_check(L,1); - Commit * commit_idx2 = obj_type_Commit_check(L,2); + OID id_idx2 = obj_type_OID_check(L,2); GitError rc_git_revwalk_push_idx1 = GIT_SUCCESS; - rc_git_revwalk_push_idx1 = git_revwalk_push(this_idx1, commit_idx2); + rc_git_revwalk_push_idx1 = git_revwalk_push(this_idx1, &(id_idx2)); /* check for error. */ if((GIT_SUCCESS != rc_git_revwalk_push_idx1)) { lua_pushboolean(L, 0); @@ -2668,9 +2192,9 @@ static int RevWalk__push__meth(lua_State *L) { /* method: hide */ static int RevWalk__hide__meth(lua_State *L) { RevWalk * this_idx1 = obj_type_RevWalk_check(L,1); - Commit * commit_idx2 = obj_type_Commit_check(L,2); + OID id_idx2 = obj_type_OID_check(L,2); GitError rc_git_revwalk_hide_idx1 = GIT_SUCCESS; - rc_git_revwalk_hide_idx1 = git_revwalk_hide(this_idx1, commit_idx2); + rc_git_revwalk_hide_idx1 = git_revwalk_hide(this_idx1, &(id_idx2)); /* check for error. */ if((GIT_SUCCESS != rc_git_revwalk_hide_idx1)) { lua_pushboolean(L, 0); @@ -2685,11 +2209,11 @@ static int RevWalk__hide__meth(lua_State *L) { /* method: next */ static int RevWalk__next__meth(lua_State *L) { RevWalk * this_idx1 = obj_type_RevWalk_check(L,1); - Commit * commit_idx1; + OID id_idx1; GitError rc_git_revwalk_next_idx2 = GIT_SUCCESS; - rc_git_revwalk_next_idx2 = git_revwalk_next(&(commit_idx1), this_idx1); + rc_git_revwalk_next_idx2 = git_revwalk_next(&(id_idx1), this_idx1); if(!(GIT_SUCCESS != rc_git_revwalk_next_idx2)) { - obj_type_Commit_push(L, commit_idx1, 0); + obj_type_OID_push(L, id_idx1, 0); } else { lua_pushnil(L); } @@ -2701,12 +2225,56 @@ static int RevWalk__next__meth(lua_State *L) { static int RevWalk__sorting__meth(lua_State *L) { RevWalk * this_idx1 = obj_type_RevWalk_check(L,1); unsigned int sort_mode_idx2 = luaL_checkinteger(L,2); - GitError rc_git_revwalk_sorting_idx1 = GIT_SUCCESS; - rc_git_revwalk_sorting_idx1 = git_revwalk_sorting(this_idx1, sort_mode_idx2); + git_revwalk_sorting(this_idx1, sort_mode_idx2); + return 0; +} + +/* method: repository */ +static int RevWalk__repository__meth(lua_State *L) { + RevWalk * this_idx1 = obj_type_RevWalk_check(L,1); + Repository * rc_git_revwalk_repository_idx1; + rc_git_revwalk_repository_idx1 = git_revwalk_repository(this_idx1); + obj_type_Repository_push(L, rc_git_revwalk_repository_idx1, 0); + return 1; +} + +/* method: lookup */ +static int Reference__lookup__meth(lua_State *L) { + Repository * repo_idx1 = obj_type_Repository_check(L,1); + size_t name_len_idx2; + const char * name_idx2 = luaL_checklstring(L,2,&(name_len_idx2)); + int this_flags_idx1 = OBJ_UDATA_FLAG_OWN; + Reference * this_idx1; + GitError err_idx2 = GIT_SUCCESS; + err_idx2 = git_reference_lookup(&(this_idx1), repo_idx1, name_idx2); + if(!(GIT_SUCCESS != err_idx2)) { + obj_type_Reference_push(L, this_idx1, this_flags_idx1); + } else { + lua_pushnil(L); + } + error_code__GitError__push(L, err_idx2); + return 2; +} + +/* method: oid */ +static int Reference__oid__meth(lua_State *L) { + Reference * this_idx1 = obj_type_Reference_check(L,1); + OID rc_git_reference_oid_idx1; + rc_git_reference_oid_idx1 = *git_reference_oid(this_idx1); + obj_type_OID_push(L, rc_git_reference_oid_idx1, 0); + return 1; +} + +/* method: set_oid */ +static int Reference__set_oid__meth(lua_State *L) { + Reference * this_idx1 = obj_type_Reference_check(L,1); + OID oid_idx2 = obj_type_OID_check(L,2); + GitError rc_git_reference_set_oid_idx1 = GIT_SUCCESS; + rc_git_reference_set_oid_idx1 = git_reference_set_oid(this_idx1, &(oid_idx2)); /* check for error. */ - if((GIT_SUCCESS != rc_git_revwalk_sorting_idx1)) { + if((GIT_SUCCESS != rc_git_reference_set_oid_idx1)) { lua_pushboolean(L, 0); - error_code__GitError__push(L, rc_git_revwalk_sorting_idx1); + error_code__GitError__push(L, rc_git_reference_set_oid_idx1); } else { lua_pushboolean(L, 1); lua_pushnil(L); @@ -2714,16 +2282,186 @@ static int RevWalk__sorting__meth(lua_State *L) { return 2; } -/* method: repository */ -static int RevWalk__repository__meth(lua_State *L) { - RevWalk * this_idx1 = obj_type_RevWalk_check(L,1); - Repository * rc_git_revwalk_repository_idx1; - rc_git_revwalk_repository_idx1 = git_revwalk_repository(this_idx1); - obj_type_Repository_push(L, rc_git_revwalk_repository_idx1, 0); +/* method: target */ +static int Reference__target__meth(lua_State *L) { + Reference * this_idx1 = obj_type_Reference_check(L,1); + const char * rc_git_reference_target_idx1 = NULL; + rc_git_reference_target_idx1 = git_reference_target(this_idx1); + lua_pushstring(L, rc_git_reference_target_idx1); return 1; } +/* method: set_target */ +static int Reference__set_target__meth(lua_State *L) { + Reference * this_idx1 = obj_type_Reference_check(L,1); + size_t target_len_idx2; + const char * target_idx2 = luaL_checklstring(L,2,&(target_len_idx2)); + GitError rc_git_reference_set_target_idx1 = GIT_SUCCESS; + rc_git_reference_set_target_idx1 = git_reference_set_target(this_idx1, target_idx2); + /* check for error. */ + if((GIT_SUCCESS != rc_git_reference_set_target_idx1)) { + lua_pushboolean(L, 0); + error_code__GitError__push(L, rc_git_reference_set_target_idx1); + } else { + lua_pushboolean(L, 1); + lua_pushnil(L); + } + return 2; +} +/* method: type */ +static int Reference__type__meth(lua_State *L) { + Reference * this_idx1 = obj_type_Reference_check(L,1); + git_rtype rc_git_reference_type_idx1; + rc_git_reference_type_idx1 = git_reference_type(this_idx1); + lua_pushinteger(L, rc_git_reference_type_idx1); + return 1; +} + +/* method: name */ +static int Reference__name__meth(lua_State *L) { + Reference * this_idx1 = obj_type_Reference_check(L,1); + const char * rc_git_reference_name_idx1 = NULL; + rc_git_reference_name_idx1 = git_reference_name(this_idx1); + lua_pushstring(L, rc_git_reference_name_idx1); + return 1; +} + +/* method: resolve */ +static int Reference__resolve__meth(lua_State *L) { + Reference * this_idx1 = obj_type_Reference_check(L,1); + Reference * resolved_ref_idx1; + GitError rc_git_reference_resolve_idx2 = GIT_SUCCESS; + rc_git_reference_resolve_idx2 = git_reference_resolve(&(resolved_ref_idx1), this_idx1); + if(!(GIT_SUCCESS != rc_git_reference_resolve_idx2)) { + obj_type_Reference_push(L, resolved_ref_idx1, 0); + } else { + lua_pushnil(L); + } + error_code__GitError__push(L, rc_git_reference_resolve_idx2); + return 2; +} + +/* method: owner */ +static int Reference__owner__meth(lua_State *L) { + Reference * this_idx1 = obj_type_Reference_check(L,1); + Repository * rc_git_reference_owner_idx1; + rc_git_reference_owner_idx1 = git_reference_owner(this_idx1); + obj_type_Repository_push(L, rc_git_reference_owner_idx1, 0); + return 1; +} + +/* method: rename */ +static int Reference__rename__meth(lua_State *L) { + Reference * this_idx1 = obj_type_Reference_check(L,1); + size_t new_name_len_idx2; + const char * new_name_idx2 = luaL_checklstring(L,2,&(new_name_len_idx2)); + GitError rc_git_reference_rename_idx1 = GIT_SUCCESS; + rc_git_reference_rename_idx1 = git_reference_rename(this_idx1, new_name_idx2); + /* check for error. */ + if((GIT_SUCCESS != rc_git_reference_rename_idx1)) { + lua_pushboolean(L, 0); + error_code__GitError__push(L, rc_git_reference_rename_idx1); + } else { + lua_pushboolean(L, 1); + lua_pushnil(L); + } + return 2; +} + +/* method: delete */ +static int Reference__delete__meth(lua_State *L) { + Reference * this_idx1 = obj_type_Reference_check(L,1); + GitError rc_git_reference_delete_idx1 = GIT_SUCCESS; + rc_git_reference_delete_idx1 = git_reference_delete(this_idx1); + /* check for error. */ + if((GIT_SUCCESS != rc_git_reference_delete_idx1)) { + lua_pushboolean(L, 0); + error_code__GitError__push(L, rc_git_reference_delete_idx1); + } else { + lua_pushboolean(L, 1); + lua_pushnil(L); + } + return 2; +} + +/* method: packall */ +static int Reference__packall__func(lua_State *L) { + Repository * repo_idx1 = obj_type_Repository_check(L,1); + GitError rc_git_reference_packall_idx1 = GIT_SUCCESS; + rc_git_reference_packall_idx1 = git_reference_packall(repo_idx1); + /* check for error. */ + if((GIT_SUCCESS != rc_git_reference_packall_idx1)) { + lua_pushboolean(L, 0); + error_code__GitError__push(L, rc_git_reference_packall_idx1); + } else { + lua_pushboolean(L, 1); + lua_pushnil(L); + } + return 2; +} + +/* method: listall */ +static int Reference__listall__func(lua_State *L) { + Repository * repo_idx1 = obj_type_Repository_check(L,1); + unsigned int list_flags_idx2 = luaL_checkinteger(L,2); + StrArray * array_idx1; + GitError err_idx2 = GIT_SUCCESS; + git_strarray tmp_array = { .strings = NULL, .count = 0 }; + + /* push this onto stack now, just encase there is a out-of-memory error. */ + array_idx1 = obj_type_StrArray_push(L, &tmp_array, OBJ_UDATA_FLAG_OWN); + err_idx2 = git_reference_listall(array_idx1, repo_idx1, list_flags_idx2); + if(err_idx2 == GIT_SUCCESS) { + return 1; /* array is already on the stack. */ + } else { + /* there is an error remove the temp array from stack. */ + lua_pop(L, 1); + array_idx1 = NULL; + } + + if(!(GIT_SUCCESS != err_idx2)) { + obj_type_StrArray_push(L, array_idx1, 0); + } else { + lua_pushnil(L); + } + error_code__GitError__push(L, err_idx2); + return 2; +} + + + +static const luaL_reg obj_StrArray_pub_funcs[] = { + {"new", StrArray__new__meth}, + {NULL, NULL} +}; + +static const luaL_reg obj_StrArray_methods[] = { + {"free", StrArray__free__meth}, + {"str", StrArray__str__meth}, + {"get_array", StrArray__get_array__meth}, + {"count", StrArray__count__meth}, + {NULL, NULL} +}; + +static const luaL_reg obj_StrArray_metas[] = { + {"__gc", StrArray__free__meth}, + {"__tostring", obj_simple_udata_default_tostring}, + {"__eq", obj_simple_udata_default_equal}, + {NULL, NULL} +}; + +static const obj_base obj_StrArray_bases[] = { + {-1, NULL} +}; + +static const obj_field obj_StrArray_fields[] = { + {NULL, 0, 0, 0} +}; + +static const obj_const obj_StrArray_constants[] = { + {NULL, NULL, 0.0 , 0} +}; static const luaL_reg obj_Repository_pub_funcs[] = { {"open", Repository__open__meth}, @@ -2736,9 +2474,6 @@ static const luaL_reg obj_Repository_pub_funcs[] = { static const luaL_reg obj_Repository_methods[] = { {"database", Repository__database__meth}, {"index", Repository__index__meth}, - {"lookup", Repository__lookup__meth}, - {"newobject", Repository__newobject__meth}, - {"blob_writefile", Repository__blob_writefile__meth}, {NULL, NULL} }; @@ -2761,39 +2496,36 @@ static const obj_const obj_Repository_constants[] = { {NULL, NULL, 0.0 , 0} }; -static const luaL_reg obj_RawObject_pub_funcs[] = { - {"new", RawObject__new__meth}, - {"header", RawObject__header__meth}, +static const luaL_reg obj_OdbObject_pub_funcs[] = { {NULL, NULL} }; -static const luaL_reg obj_RawObject_methods[] = { - {"close", RawObject__close__meth}, - {"data", RawObject__data__meth}, - {"set_data", RawObject__set_data__meth}, - {"len", RawObject__len__meth}, - {"type", RawObject__type__meth}, - {"set_type", RawObject__set_type__meth}, - {"hash", RawObject__hash__meth}, +static const luaL_reg obj_OdbObject_methods[] = { + {"close", OdbObject__close__meth}, + {"data", OdbObject__data__meth}, + {"size", OdbObject__size__meth}, + {"type", OdbObject__type__meth}, + {"id", OdbObject__id__meth}, + {"hash", OdbObject__hash__meth}, {NULL, NULL} }; -static const luaL_reg obj_RawObject_metas[] = { - {"__gc", RawObject__delete__meth}, - {"__tostring", obj_simple_udata_default_tostring}, - {"__eq", obj_simple_udata_default_equal}, +static const luaL_reg obj_OdbObject_metas[] = { + {"__gc", OdbObject__close__meth}, + {"__tostring", obj_udata_default_tostring}, + {"__eq", obj_udata_default_equal}, {NULL, NULL} }; -static const obj_base obj_RawObject_bases[] = { +static const obj_base obj_OdbObject_bases[] = { {-1, NULL} }; -static const obj_field obj_RawObject_fields[] = { +static const obj_field obj_OdbObject_fields[] = { {NULL, 0, 0, 0} }; -static const obj_const obj_RawObject_constants[] = { +static const obj_const obj_OdbObject_constants[] = { {NULL, NULL, 0.0 , 0} }; @@ -2833,8 +2565,6 @@ static const luaL_reg obj_Database_pub_funcs[] = { static const luaL_reg obj_Database_methods[] = { {"close", Database__close__meth}, - {"add_backend", Database__add_backend__meth}, - {"add_alternate", Database__add_alternate__meth}, {"read", Database__read__meth}, {"read_header", Database__read_header__meth}, {"write", Database__write__meth}, @@ -2861,34 +2591,6 @@ static const obj_const obj_Database_constants[] = { {NULL, NULL, 0.0 , 0} }; -static const luaL_reg obj_DatabaseBackend_pub_funcs[] = { - {"new", DatabaseBackend__new__meth}, - {NULL, NULL} -}; - -static const luaL_reg obj_DatabaseBackend_methods[] = { - {NULL, NULL} -}; - -static const luaL_reg obj_DatabaseBackend_metas[] = { - {"__gc", DatabaseBackend__delete__meth}, - {"__tostring", obj_udata_default_tostring}, - {"__eq", obj_udata_default_equal}, - {NULL, NULL} -}; - -static const obj_base obj_DatabaseBackend_bases[] = { - {-1, NULL} -}; - -static const obj_field obj_DatabaseBackend_fields[] = { - {NULL, 0, 0, 0} -}; - -static const obj_const obj_DatabaseBackend_constants[] = { - {NULL, NULL, 0.0 , 0} -}; - static const luaL_reg obj_Index_pub_funcs[] = { {"bare", Index__bare__meth}, {"inrepo", Index__inrepo__meth}, @@ -2988,7 +2690,7 @@ static const luaL_reg obj_Object_pub_funcs[] = { }; static const luaL_reg obj_Object_methods[] = { - {"write", Object__write__meth}, + {"close", Object__close__meth}, {"id", Object__id__meth}, {"type", Object__type__meth}, {"owner", Object__owner__meth}, @@ -2996,7 +2698,7 @@ static const luaL_reg obj_Object_methods[] = { }; static const luaL_reg obj_Object_metas[] = { - {"__gc", Object__delete__meth}, + {"__gc", Object__close__meth}, {"__tostring", obj_udata_default_tostring}, {"__eq", obj_udata_default_equal}, {NULL, NULL} @@ -3015,26 +2717,24 @@ static const obj_const obj_Object_constants[] = { }; static const luaL_reg obj_Blob_pub_funcs[] = { - {"new", Blob__new__meth}, {"lookup", Blob__lookup__meth}, - {"writefile", Blob__writefile__func}, + {"fromfile", Blob__fromfile__func}, + {"frombuffer", Blob__frombuffer__func}, {NULL, NULL} }; static const luaL_reg obj_Blob_methods[] = { - {"type", Object__type__meth}, - {"write", Object__write__meth}, {"id", Object__id__meth}, + {"type", Object__type__meth}, {"owner", Object__owner__meth}, - {"delete", Object__delete__meth}, - {"set_rawcontent_fromfile", Blob__set_rawcontent_fromfile__meth}, - {"set_rawcontent", Blob__set_rawcontent__meth}, + {"close", Object__close__meth}, {"rawcontent", Blob__rawcontent__meth}, {"rawsize", Blob__rawsize__meth}, {NULL, NULL} }; static const luaL_reg obj_Blob_metas[] = { + {"__gc", Object__close__meth}, {"__tostring", obj_udata_default_tostring}, {"__eq", obj_udata_default_equal}, {NULL, NULL} @@ -3085,34 +2785,30 @@ static const obj_const obj_Signature_constants[] = { }; static const luaL_reg obj_Commit_pub_funcs[] = { - {"new", Commit__new__meth}, {"lookup", Commit__lookup__meth}, + {"create", Commit__create__func}, {NULL, NULL} }; static const luaL_reg obj_Commit_methods[] = { - {"type", Object__type__meth}, - {"write", Object__write__meth}, {"id", Object__id__meth}, + {"type", Object__type__meth}, {"owner", Object__owner__meth}, - {"delete", Object__delete__meth}, + {"close", Object__close__meth}, {"message", Commit__message__meth}, {"message_short", Commit__message_short__meth}, - {"set_message", Commit__set_message__meth}, {"time", Commit__time__meth}, + {"time_offset", Commit__time_offset__meth}, {"committer", Commit__committer__meth}, - {"set_committer", Commit__set_committer__meth}, {"author", Commit__author__meth}, - {"set_author", Commit__set_author__meth}, {"tree", Commit__tree__meth}, - {"set_tree", Commit__set_tree__meth}, {"parentcount", Commit__parentcount__meth}, {"parent", Commit__parent__meth}, - {"add_parent", Commit__add_parent__meth}, {NULL, NULL} }; static const luaL_reg obj_Commit_metas[] = { + {"__gc", Object__close__meth}, {"__tostring", obj_udata_default_tostring}, {"__eq", obj_udata_default_equal}, {NULL, NULL} @@ -3132,27 +2828,23 @@ static const obj_const obj_Commit_constants[] = { }; static const luaL_reg obj_Tree_pub_funcs[] = { - {"new", Tree__new__meth}, {"lookup", Tree__lookup__meth}, {NULL, NULL} }; static const luaL_reg obj_Tree_methods[] = { - {"type", Object__type__meth}, - {"write", Object__write__meth}, {"id", Object__id__meth}, + {"type", Object__type__meth}, {"owner", Object__owner__meth}, - {"delete", Object__delete__meth}, + {"close", Object__close__meth}, {"entrycount", Tree__entrycount__meth}, {"entry_byname", Tree__entry_byname__meth}, {"entry_byindex", Tree__entry_byindex__meth}, - {"add_entry", Tree__add_entry__meth}, - {"remove_entry_byname", Tree__remove_entry_byname__meth}, - {"remove_entry_byindex", Tree__remove_entry_byindex__meth}, {NULL, NULL} }; static const luaL_reg obj_Tree_metas[] = { + {"__gc", Object__close__meth}, {"__tostring", obj_udata_default_tostring}, {"__eq", obj_udata_default_equal}, {NULL, NULL} @@ -3177,11 +2869,8 @@ static const luaL_reg obj_TreeEntry_pub_funcs[] = { static const luaL_reg obj_TreeEntry_methods[] = { {"name", TreeEntry__name__meth}, - {"set_name", TreeEntry__set_name__meth}, {"attributes", TreeEntry__attributes__meth}, - {"set_attributes", TreeEntry__set_attributes__meth}, {"id", TreeEntry__id__meth}, - {"set_id", TreeEntry__set_id__meth}, {"object", TreeEntry__object__meth}, {NULL, NULL} }; @@ -3205,29 +2894,24 @@ static const obj_const obj_TreeEntry_constants[] = { }; static const luaL_reg obj_Tag_pub_funcs[] = { - {"new", Tag__new__meth}, {"lookup", Tag__lookup__meth}, {NULL, NULL} }; static const luaL_reg obj_Tag_methods[] = { - {"type", Object__type__meth}, - {"write", Object__write__meth}, {"id", Object__id__meth}, + {"type", Object__type__meth}, {"owner", Object__owner__meth}, - {"delete", Object__delete__meth}, + {"close", Object__close__meth}, {"target", Tag__target__meth}, - {"set_target", Tag__set_target__meth}, {"name", Tag__name__meth}, - {"set_name", Tag__set_name__meth}, {"tagger", Tag__tagger__meth}, - {"set_tagger", Tag__set_tagger__meth}, {"message", Tag__message__meth}, - {"set_message", Tag__set_message__meth}, {NULL, NULL} }; static const luaL_reg obj_Tag_metas[] = { + {"__gc", Object__close__meth}, {"__tostring", obj_udata_default_tostring}, {"__eq", obj_udata_default_equal}, {NULL, NULL} @@ -3252,10 +2936,7 @@ static const luaL_reg obj_RevWalk_pub_funcs[] = { }; static const luaL_reg obj_RevWalk_methods[] = { - {"type", Object__type__meth}, - {"write", Object__write__meth}, - {"id", Object__id__meth}, - {"owner", Object__owner__meth}, + {"close", RevWalk__close__meth}, {"reset", RevWalk__reset__meth}, {"push", RevWalk__push__meth}, {"hide", RevWalk__hide__meth}, @@ -3266,14 +2947,13 @@ static const luaL_reg obj_RevWalk_methods[] = { }; static const luaL_reg obj_RevWalk_metas[] = { - {"__gc", RevWalk__delete__meth}, + {"__gc", RevWalk__close__meth}, {"__tostring", obj_udata_default_tostring}, {"__eq", obj_udata_default_equal}, {NULL, NULL} }; static const obj_base obj_RevWalk_bases[] = { - {7, NULL}, {-1, NULL} }; @@ -3289,38 +2969,142 @@ static const obj_const obj_RevWalk_constants[] = { {NULL, NULL, 0.0 , 0} }; +static const luaL_reg obj_Reference_pub_funcs[] = { + {"lookup", Reference__lookup__meth}, + {"packall", Reference__packall__func}, + {"listall", Reference__listall__func}, + {NULL, NULL} +}; + +static const luaL_reg obj_Reference_methods[] = { + {"oid", Reference__oid__meth}, + {"set_oid", Reference__set_oid__meth}, + {"target", Reference__target__meth}, + {"set_target", Reference__set_target__meth}, + {"type", Reference__type__meth}, + {"name", Reference__name__meth}, + {"resolve", Reference__resolve__meth}, + {"owner", Reference__owner__meth}, + {"rename", Reference__rename__meth}, + {"delete", Reference__delete__meth}, + {NULL, NULL} +}; + +static const luaL_reg obj_Reference_metas[] = { + {"__tostring", obj_udata_default_tostring}, + {"__eq", obj_udata_default_equal}, + {NULL, NULL} +}; + +static const obj_base obj_Reference_bases[] = { + {-1, NULL} +}; + +static const obj_field obj_Reference_fields[] = { + {NULL, 0, 0, 0} +}; + +static const obj_const obj_Reference_constants[] = { + {NULL, NULL, 0.0 , 0} +}; + static const luaL_reg git2_function[] = { {NULL, NULL} }; static const obj_const git2_constants[] = { - {"EFLOCKFAIL", NULL, -12, CONST_NUMBER}, - {"SUCCESS", NULL, 0, CONST_NUMBER}, - {"EBUSY", NULL, -14, CONST_NUMBER}, - {"EMISSINGOBJDATA", NULL, -10, CONST_NUMBER}, - {"EBAREINDEX", NULL, -15, CONST_NUMBER}, - {"EOSERR", NULL, -5, CONST_NUMBER}, - {"ERROR", NULL, -1, CONST_NUMBER}, - {"EZLIB", NULL, -13, CONST_NUMBER}, - {"ENOTFOUND", NULL, -3, CONST_NUMBER}, - {"EOBJTYPE", NULL, -6, CONST_NUMBER}, - {"ENOTOID", NULL, -2, CONST_NUMBER}, - {"EPACKCORRUPTED", NULL, -11, CONST_NUMBER}, - {"EINVALIDTYPE", NULL, -9, CONST_NUMBER}, - {"ENOTAREPO", NULL, -8, CONST_NUMBER}, - {"ENOMEM", NULL, -4, CONST_NUMBER}, - {"EOBJCORRUPTED", NULL, -7, CONST_NUMBER}, +#ifdef GIT_EFLOCKFAIL + {"EFLOCKFAIL", NULL, GIT_EFLOCKFAIL, CONST_NUMBER}, +#endif + {"REF_INVALID", NULL, 0, CONST_NUMBER}, + {"REF_PACKED", NULL, 4, CONST_NUMBER}, +#ifdef GIT_EREFCORRUPTED + {"EREFCORRUPTED", NULL, GIT_EREFCORRUPTED, CONST_NUMBER}, +#endif +#ifdef GIT_EINVALIDREFSTATE + {"EINVALIDREFSTATE", NULL, GIT_EINVALIDREFSTATE, CONST_NUMBER}, +#endif +#ifdef GIT_EINVALIDTYPE + {"EINVALIDTYPE", NULL, GIT_EINVALIDTYPE, CONST_NUMBER}, +#endif + {"REF_LISTALL", NULL, 7, CONST_NUMBER}, +#ifdef GIT_ENOTFOUND + {"ENOTFOUND", NULL, GIT_ENOTFOUND, CONST_NUMBER}, +#endif +#ifdef GIT_EOBJTYPE + {"EOBJTYPE", NULL, GIT_EOBJTYPE, CONST_NUMBER}, +#endif +#ifdef GIT_EINVALIDPATH + {"EINVALIDPATH", NULL, GIT_EINVALIDPATH, CONST_NUMBER}, +#endif +#ifdef GIT_ENOTOID + {"ENOTOID", NULL, GIT_ENOTOID, CONST_NUMBER}, +#endif +#ifdef GIT_EPACKCORRUPTED + {"EPACKCORRUPTED", NULL, GIT_EPACKCORRUPTED, CONST_NUMBER}, +#endif +#ifdef GIT_EEXISTS + {"EEXISTS", NULL, GIT_EEXISTS, CONST_NUMBER}, +#endif +#ifdef GIT_EPACKEDREFSCORRUPTED + {"EPACKEDREFSCORRUPTED", NULL, GIT_EPACKEDREFSCORRUPTED, CONST_NUMBER}, +#endif +#ifdef GIT_EOSERR + {"EOSERR", NULL, GIT_EOSERR, CONST_NUMBER}, +#endif +#ifdef GIT_EINVALIDREFNAME + {"EINVALIDREFNAME", NULL, GIT_EINVALIDREFNAME, CONST_NUMBER}, +#endif +#ifdef GIT_SUCCESS + {"SUCCESS", NULL, GIT_SUCCESS, CONST_NUMBER}, +#endif +#ifdef GIT_ERROR + {"ERROR", NULL, GIT_ERROR, CONST_NUMBER}, +#endif +#ifdef GIT_ENOMEM + {"ENOMEM", NULL, GIT_ENOMEM, CONST_NUMBER}, +#endif +#ifdef GIT_EBAREINDEX + {"EBAREINDEX", NULL, GIT_EBAREINDEX, CONST_NUMBER}, +#endif + {"REF_SYMBOLIC", NULL, 2, CONST_NUMBER}, +#ifdef GIT_EBUSY + {"EBUSY", NULL, GIT_EBUSY, CONST_NUMBER}, +#endif +#ifdef GIT_ENOTIMPLEMENTED + {"ENOTIMPLEMENTED", NULL, GIT_ENOTIMPLEMENTED, CONST_NUMBER}, +#endif + {"REF_HAS_PEEL", NULL, 8, CONST_NUMBER}, +#ifdef GIT_ENOTAREPO + {"ENOTAREPO", NULL, GIT_ENOTAREPO, CONST_NUMBER}, +#endif +#ifdef GIT_EMISSINGOBJDATA + {"EMISSINGOBJDATA", NULL, GIT_EMISSINGOBJDATA, CONST_NUMBER}, +#endif +#ifdef GIT_EREVWALKOVER + {"EREVWALKOVER", NULL, GIT_EREVWALKOVER, CONST_NUMBER}, +#endif +#ifdef GIT_ETOONESTEDSYMREF + {"ETOONESTEDSYMREF", NULL, GIT_ETOONESTEDSYMREF, CONST_NUMBER}, +#endif +#ifdef GIT_EZLIB + {"EZLIB", NULL, GIT_EZLIB, CONST_NUMBER}, +#endif + {"REF_OID", NULL, 1, CONST_NUMBER}, +#ifdef GIT_EOBJCORRUPTED + {"EOBJCORRUPTED", NULL, GIT_EOBJCORRUPTED, CONST_NUMBER}, +#endif {NULL, NULL, 0.0 , 0} }; static const reg_sub_module reg_sub_modules[] = { + { &(obj_type_StrArray), 0, obj_StrArray_pub_funcs, obj_StrArray_methods, obj_StrArray_metas, obj_StrArray_bases, obj_StrArray_fields, obj_StrArray_constants}, { &(obj_type_Repository), 0, obj_Repository_pub_funcs, obj_Repository_methods, obj_Repository_metas, obj_Repository_bases, obj_Repository_fields, obj_Repository_constants}, - { &(obj_type_RawObject), 0, obj_RawObject_pub_funcs, obj_RawObject_methods, obj_RawObject_metas, obj_RawObject_bases, obj_RawObject_fields, obj_RawObject_constants}, + { &(obj_type_OdbObject), 0, obj_OdbObject_pub_funcs, obj_OdbObject_methods, obj_OdbObject_metas, obj_OdbObject_bases, obj_OdbObject_fields, obj_OdbObject_constants}, { &(obj_type_OID), 0, obj_OID_pub_funcs, obj_OID_methods, obj_OID_metas, obj_OID_bases, obj_OID_fields, obj_OID_constants}, { &(obj_type_Database), 0, obj_Database_pub_funcs, obj_Database_methods, obj_Database_metas, obj_Database_bases, obj_Database_fields, obj_Database_constants}, - { &(obj_type_DatabaseBackend), 0, obj_DatabaseBackend_pub_funcs, obj_DatabaseBackend_methods, obj_DatabaseBackend_metas, obj_DatabaseBackend_bases, obj_DatabaseBackend_fields, obj_DatabaseBackend_constants}, { &(obj_type_Index), 0, obj_Index_pub_funcs, obj_Index_methods, obj_Index_metas, obj_Index_bases, obj_Index_fields, obj_Index_constants}, { &(obj_type_IndexEntry), 0, obj_IndexEntry_pub_funcs, obj_IndexEntry_methods, obj_IndexEntry_metas, obj_IndexEntry_bases, obj_IndexEntry_fields, obj_IndexEntry_constants}, { &(obj_type_Object), 0, obj_Object_pub_funcs, obj_Object_methods, obj_Object_metas, obj_Object_bases, obj_Object_fields, obj_Object_constants}, @@ -3331,6 +3115,7 @@ static const reg_sub_module reg_sub_modules[] = { { &(obj_type_TreeEntry), 0, obj_TreeEntry_pub_funcs, obj_TreeEntry_methods, obj_TreeEntry_metas, obj_TreeEntry_bases, obj_TreeEntry_fields, obj_TreeEntry_constants}, { &(obj_type_Tag), 0, obj_Tag_pub_funcs, obj_Tag_methods, obj_Tag_metas, obj_Tag_bases, obj_Tag_fields, obj_Tag_constants}, { &(obj_type_RevWalk), 0, obj_RevWalk_pub_funcs, obj_RevWalk_methods, obj_RevWalk_metas, obj_RevWalk_bases, obj_RevWalk_fields, obj_RevWalk_constants}, + { &(obj_type_Reference), 0, obj_Reference_pub_funcs, obj_Reference_methods, obj_Reference_metas, obj_Reference_bases, obj_Reference_fields, obj_Reference_constants}, {NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL} }; diff --git a/src/rawobject.nobj.lua b/src/rawobject.nobj.lua deleted file mode 100644 index 004303f..0000000 --- a/src/rawobject.nobj.lua +++ /dev/null @@ -1,135 +0,0 @@ --- Copyright (c) 2010 by Robert G. Jakabosky --- --- Permission is hereby granted, free of charge, to any person obtaining a copy --- of this software and associated documentation files (the "Software"), to deal --- in the Software without restriction, including without limitation the rights --- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell --- copies of the Software, and to permit persons to whom the Software is --- furnished to do so, subject to the following conditions: --- --- The above copyright notice and this permission notice shall be included in --- all copies or substantial portions of the Software. --- --- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR --- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, --- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE --- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER --- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, --- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN --- THE SOFTWARE. - -object "RawObject" { - c_source [[ -typedef struct RawObject { - git_rawobj git; - int ref; -} RawObject; - -static void RawObject_set_data_and_ref(lua_State *L, RawObject *raw, const char *data, int len, int idx) { - /* Release old reference. */ - if(raw->ref != LUA_REFNIL) { - luaL_unref(L, LUA_REGISTRYINDEX, raw->ref); - } - raw->git.data = (void *)data; - raw->git.len = len; - if(data) { - /* Get a reference to the Lua string. */ - lua_pushvalue(L, idx); - raw->ref = luaL_ref(L, LUA_REGISTRYINDEX); - } else { - raw->ref = LUA_REFNIL; - } -} - -static void RawObject_from_git_rawobj(lua_State *L, RawObject *raw, git_rawobj *git, int cleanup) { - /* push raw object's data onto stack. */ - lua_pushlstring(L, git->data, git->len); - /* get Lua's pointer to the string. */ - raw->git.data = (void *)lua_tolstring(L, -1, &(raw->git.len)); - raw->git.type = git->type; - /* get reference to string. */ - raw->ref = luaL_ref(L, LUA_REGISTRYINDEX); - /* clean-up git_rawobj. */ - if(cleanup && git->data != NULL) { - git_rawobj_close(git); - } -} - -static void RawObject_close(lua_State *L, RawObject *raw) { - luaL_unref(L, LUA_REGISTRYINDEX, raw->ref); - raw->ref = LUA_REFNIL; - raw->git.data = NULL; -} - -]], - userdata_type = 'embed', - default = 'NULL', - constructor "new" { - var_in{"const char *", "type"}, - var_in{"const char *", "data"}, - c_source [[ - RawObject raw; /* temp. storage, this gets copied. */ - ${this} = &(raw); - raw.git.type = git_object_string2type(${type}); - raw.ref = LUA_REFNIL; - RawObject_set_data_and_ref(L, &raw, ${data}, ${data_len}, ${data::idx}); -]], - }, - constructor "header" { - var_in{"const char *", "type"}, - var_in{"size_t", "len"}, - c_source [[ - RawObject raw; /* temp. storage, this gets copied. */ - ${this} = &(raw); - raw.git.data = NULL; - raw.git.len = ${len}; - raw.git.type = git_object_string2type(${type}); - raw.ref = LUA_REFNIL; -]], - }, - destructor { - c_source [[ - RawObject_close(L, ${this}); -]], - }, - method "close" { - c_source [[ - RawObject_close(L, ${this}); -]], - }, - method "data" { - var_out{"", "data" }, - c_source [[ - /* push Lua string. */ - lua_rawgeti(L, LUA_REGISTRYINDEX, ${this}->ref); -]], - }, - method "set_data" { - var_in{"const char *", "data"}, - c_source [[ - RawObject_set_data_and_ref(L, ${this}, ${data}, ${data_len}, ${data::idx}); -]], - }, - method "len" { - var_out{"size_t", "len"}, - c_source [[ - ${len} = ${this}->git.len; -]], - }, - method "type" { - var_out{"const char *", "type"}, - c_source "${type} = git_object_type2string(${this}->git.type);" - }, - method "set_type" { - var_in{"const char *", "type"}, - c_source "${this}->git.type = git_object_string2type(${type});" - }, - method "hash" { - var_out{"OID", "id"}, - var_out{"GitError", "err"}, - c_source [[ - ${err} = git_rawobj_hash(&(${id}), &(${this}->git)); -]], - }, -} - diff --git a/src/reference.nobj.lua b/src/reference.nobj.lua new file mode 100644 index 0000000..6a005c2 --- /dev/null +++ b/src/reference.nobj.lua @@ -0,0 +1,86 @@ +-- Copyright (c) 2010 by Robert G. Jakabosky +-- +-- Permission is hereby granted, free of charge, to any person obtaining a copy +-- of this software and associated documentation files (the "Software"), to deal +-- in the Software without restriction, including without limitation the rights +-- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +-- copies of the Software, and to permit persons to whom the Software is +-- furnished to do so, subject to the following conditions: +-- +-- The above copyright notice and this permission notice shall be included in +-- all copies or substantial portions of the Software. +-- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +-- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +-- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +-- THE SOFTWARE. + +object "Reference" { + basetype "git_rtype" "integer", + c_source [[ +typedef git_reference Reference; +]], + constructor "lookup" { + c_call { "GitError", "err" } "git_reference_lookup" + { "Reference *", "&this>1", "Repository *", "repo", "const char *", "name" }, + }, + method "oid" { + c_method_call "*OID" "git_reference_oid" {} + }, + method "set_oid" { + c_method_call "GitError" "git_reference_set_oid" { "OID", "&oid" } + }, + method "target" { + c_method_call "const char *" "git_reference_target" {} + }, + method "set_target" { + c_method_call "GitError" "git_reference_set_target" { "const char *", "target" } + }, + method "type" { + c_method_call "git_rtype" "git_reference_type" {} + }, + method "name" { + c_method_call "const char *" "git_reference_name" {} + }, + method "resolve" { + c_call "GitError" "git_reference_resolve" + { "Reference *", "&resolved_ref>1", "Reference *", "this" } + }, + method "owner" { + c_method_call "Repository *" "git_reference_owner" {} + }, + method "rename" { + c_method_call "GitError" "git_reference_rename" { "const char *", "new_name" } + }, + method "delete" { + c_method_call "GitError" "git_reference_delete" {} + }, + c_function "packall" { + c_call "GitError" "git_reference_packall" { "Repository *", "repo" } + }, + c_function "listall" { + var_in{ "Repository *", "repo" }, + var_in{ "unsigned int", "list_flags" }, + var_out{ "StrArray *", "array" }, + var_out{ "GitError", "err" }, + c_source "pre" [[ + git_strarray tmp_array = { .strings = NULL, .count = 0 }; +]], + c_source[[ + /* push this onto stack now, just encase there is a out-of-memory error. */ + ${array} = obj_type_StrArray_push(L, &tmp_array, OBJ_UDATA_FLAG_OWN); + ${err} = git_reference_listall(${array}, ${repo}, ${list_flags}); + if(${err} == GIT_SUCCESS) { + return 1; /* array is already on the stack. */ + } else { + /* there is an error remove the temp array from stack. */ + lua_pop(L, 1); + ${array} = NULL; + } +]] + } +} + diff --git a/src/repository.nobj.lua b/src/repository.nobj.lua index 5985fcf..cef52e8 100644 --- a/src/repository.nobj.lua +++ b/src/repository.nobj.lua @@ -50,19 +50,5 @@ typedef git_repository Repository; c_call { "GitError", "err" } "git_repository_index" { "Index *", "&index>1", "Repository *", "this" }, }, - method "lookup" { - c_call { "int", "(otype)" } "git_object_string2type" { "const char *", "type<3" }, - c_call { "GitError", "err" } "git_repository_lookup" - { "Object *", "&obj>1", "Repository *", "this<1", "OID", "&id<2", "int", "otype" }, - }, - method "newobject" { - c_call { "int", "(otype)" } "git_object_string2type" { "const char *", "type<2" }, - c_call { "GitError", "err" } "git_repository_newobject" - { "Object *", "&obj>1", "Repository *", "this<1", "int", "otype" }, - }, - method "blob_writefile" { - c_call { "GitError", "err" } "git_blob_writefile" - { "OID", "&written_id>1", "Repository *", "this<1", "const char *", "path" }, - }, } diff --git a/src/revwalk.nobj.lua b/src/revwalk.nobj.lua index 8c33804..ea0281f 100644 --- a/src/revwalk.nobj.lua +++ b/src/revwalk.nobj.lua @@ -22,7 +22,6 @@ object "RevWalk" { c_source [[ typedef git_revwalk RevWalk; ]], - extends "Object", constants { SORT_NONE = 0x00, SORT_TOPOLOGICAL = 0x01, @@ -33,23 +32,23 @@ typedef git_revwalk RevWalk; c_call { "GitError", "err" } "git_revwalk_new" { "RevWalk *", "&this>1", "Repository *", "repo" }, }, - destructor { + destructor "close" { c_method_call "void" "git_revwalk_free" {} }, method "reset" { c_method_call "void" "git_revwalk_reset" {} }, method "push" { - c_method_call "GitError" "git_revwalk_push" { "Commit *", "commit" } + c_method_call "GitError" "git_revwalk_push" { "OID", "&id" } }, method "hide" { - c_method_call "GitError" "git_revwalk_hide" { "Commit *", "commit" } + c_method_call "GitError" "git_revwalk_hide" { "OID", "&id" } }, method "next" { - c_call "GitError" "git_revwalk_next" { "Commit *", "&commit>1", "RevWalk *", "this<1" } + c_call "GitError" "git_revwalk_next" { "OID", "&id>1", "RevWalk *", "this<1" } }, method "sorting" { - c_method_call "GitError" "git_revwalk_sorting" { "unsigned int", "sort_mode" } + c_method_call "void" "git_revwalk_sorting" { "unsigned int", "sort_mode" } }, method "repository" { c_method_call "Repository *" "git_revwalk_repository" {} diff --git a/src/strarray.nobj.lua b/src/strarray.nobj.lua new file mode 100644 index 0000000..d9ad367 --- /dev/null +++ b/src/strarray.nobj.lua @@ -0,0 +1,66 @@ +-- Copyright (c) 2010 by Robert G. Jakabosky +-- +-- Permission is hereby granted, free of charge, to any person obtaining a copy +-- of this software and associated documentation files (the "Software"), to deal +-- in the Software without restriction, including without limitation the rights +-- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +-- copies of the Software, and to permit persons to whom the Software is +-- furnished to do so, subject to the following conditions: +-- +-- The above copyright notice and this permission notice shall be included in +-- all copies or substantial portions of the Software. +-- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +-- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +-- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +-- THE SOFTWARE. + +object "StrArray" { + userdata_type = "embed", + c_source [[ +typedef git_strarray StrArray; +]], + constructor "new" { + c_source[[ + StrArray array; + array.strings = NULL; + array.count = 0; + ${this} = &array; +]] + }, + destructor "free" { + c_source[[ + if(${this}->strings != 0) { + git_strarray_free(${this}); + ${this}->strings = NULL; + } +]] + }, + field "size_t" "count" { "ro" }, + method "str" { + var_in{ "size_t", "n" }, + var_out{ "const char *", "str" }, + c_source[[ + if(${n} < ${this}->count) { + ${str} = ${this}->strings[${n}]; + } +]], + }, + method "get_array" { + var_out{ "", "array" }, + c_source "pre" [[ + size_t n; +]], + c_source[[ + lua_createtable(L, ${this}->count, 0); + for(n = 0; n < ${this}->count; n++) { + lua_pushstring(L, ${this}->strings[n]); + lua_rawseti(L, -2, n+1); + } +]] + } +} + diff --git a/src/tag.nobj.lua b/src/tag.nobj.lua index ce7dfc6..76d83ea 100644 --- a/src/tag.nobj.lua +++ b/src/tag.nobj.lua @@ -23,37 +23,21 @@ object "Tag" { typedef git_tag Tag; ]], extends "Object", - constructor "new" { - c_call { "GitError", "err" } "git_tag_new" - { "Tag *", "&this>1", "Repository *", "repo" }, - }, constructor "lookup" { c_call { "GitError", "err" } "git_tag_lookup" { "Tag *", "&this>1", "Repository *", "repo", "OID", "&id" }, }, method "target" { - c_method_call "const Object *" "git_tag_target" {} - }, - method "set_target" { - c_method_call "void" "git_tag_set_target" { "Object *", "target" } + c_call "GitError" "git_tag_target" { "Object *", "&out>1", "Tag *", "this" } }, method "name" { c_method_call "const char *" "git_tag_name" {} }, - method "set_name" { - c_method_call "void" "git_tag_set_name" { "const char *", "name" } - }, method "tagger" { c_method_call "const Signature *" "git_tag_tagger" {} }, - method "set_tagger" { - c_method_call "void" "git_tag_set_tagger" { "const Signature *", "tagger" } - }, method "message" { c_method_call "const char *" "git_tag_message" {} }, - method "set_message" { - c_method_call "void" "git_tag_set_message" { "const char *", "message" } - }, } diff --git a/src/tree.nobj.lua b/src/tree.nobj.lua index af527c5..ab8fa22 100644 --- a/src/tree.nobj.lua +++ b/src/tree.nobj.lua @@ -23,10 +23,6 @@ object "Tree" { typedef git_tree Tree; ]], extends "Object", - constructor "new" { - c_call { "GitError", "err" } "git_tree_new" - { "Tree *", "&this>1", "Repository *", "repo" }, - }, constructor "lookup" { c_call { "GitError", "err" } "git_tree_lookup" { "Tree *", "&this>1", "Repository *", "repo", "OID", "&id" }, @@ -40,15 +36,5 @@ typedef git_tree Tree; method "entry_byindex" { c_method_call "TreeEntry *" "git_tree_entry_byindex" { "int", "index" } }, - method "add_entry" { - c_call { "GitError", "err" } "git_tree_add_entry" { "TreeEntry *", "&entry_out>1", - "Tree *", "this<1", "const OID", "&id", "const char *", "filename", "int", "attributes" }, - }, - method "remove_entry_byname" { - c_method_call "GitError" "git_tree_remove_entry_byname" { "const char *", "filename" } - }, - method "remove_entry_byindex" { - c_method_call "GitError" "git_tree_remove_entry_byindex" { "int", "index" } - }, } diff --git a/src/tree_entry.nobj.lua b/src/tree_entry.nobj.lua index 6ed455f..64a9f52 100644 --- a/src/tree_entry.nobj.lua +++ b/src/tree_entry.nobj.lua @@ -25,25 +25,16 @@ typedef git_tree_entry TreeEntry; method "name" { c_method_call "const char *" "git_tree_entry_name" {} }, - method "set_name" { - c_method_call "void" "git_tree_entry_set_name" {"const char *", "name"} - }, method "attributes" { c_method_call "unsigned int" "git_tree_entry_attributes" {} }, - method "set_attributes" { - c_method_call "void" "git_tree_entry_set_attributes" {"int", "attr"} - }, method "id" { var_out{"OID", "id"}, c_source "${id} = *(git_tree_entry_id(${this}));" }, - method "set_id" { - c_method_call "void" "git_tree_entry_set_id" { "OID", "&id" } - }, method "object" { - c_call {"GitError", "err"} "git_tree_entry_2object" - { "Object *", "&obj>1", "TreeEntry *", "this" } + c_call "GitError" "git_tree_entry_2object" + { "Object *", "&obj>1", "Repository *", "repo", "TreeEntry *", "this" } }, } -- cgit v1.2.1