summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert G. Jakabosky <bobby@sharedrealm.com>2011-04-02 14:11:34 -0700
committerRobert G. Jakabosky <bobby@sharedrealm.com>2011-04-02 14:11:34 -0700
commit8fcc9f34d7bc1eed7ce6724e407c77eeca8b4eaf (patch)
tree02b5ac631dd92fe08943bc7144748facb2ec6d20
parent86f0d0974af2c72452f0bfc8336ba6a04cf93148 (diff)
downloadluagit2-8fcc9f34d7bc1eed7ce6724e407c77eeca8b4eaf.tar.gz
Update luagit2 to latest libgit2 interface (3e3e4631a0362ba23)
-rwxr-xr-xCMakeLists.txt11
-rw-r--r--LIBGIT2_VERSION2
-rw-r--r--git2.nobj.lua59
-rw-r--r--src/blob.nobj.lua25
-rw-r--r--src/commit.nobj.lua65
-rw-r--r--src/database.nobj.lua43
-rw-r--r--src/object.nobj.lua18
-rw-r--r--src/odb_object.nobj.lua50
-rw-r--r--src/pre_generated-git2.nobj.c1603
-rw-r--r--src/rawobject.nobj.lua135
-rw-r--r--src/reference.nobj.lua86
-rw-r--r--src/repository.nobj.lua14
-rw-r--r--src/revwalk.nobj.lua11
-rw-r--r--src/strarray.nobj.lua66
-rw-r--r--src/tag.nobj.lua18
-rw-r--r--src/tree.nobj.lua14
-rw-r--r--src/tree_entry.nobj.lua13
17 files changed, 1027 insertions, 1206 deletions
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 <bobby@sharedrealm.com>
+--
+-- 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["<object_name>"] = 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 <git2/odb_backend.h>
-
-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_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 <bobby@sharedrealm.com>
---
--- 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{"<any>", "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 <bobby@sharedrealm.com>
+--
+-- 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 <bobby@sharedrealm.com>
+--
+-- 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{ "<any>", "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" }
},
}