#include "php_git2.h"
#include "php_git2_priv.h"
#include "note.h"
/* {{{ proto resource git_note_iterator_new(resource $repo, string $notes_ref)
*/
PHP_FUNCTION(git_note_iterator_new)
{
php_git2_t *result = NULL, *_repo = NULL;
git_note_iterator *out = NULL;
zval *repo = NULL;
char *notes_ref = NULL;
int notes_ref_len = 0, error = 0;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
"rs", &repo, ¬es_ref, ¬es_ref_len) == FAILURE) {
return;
}
ZEND_FETCH_RESOURCE(_repo, php_git2_t*, &repo, -1, PHP_GIT2_RESOURCE_NAME, git2_resource_handle);
error = git_note_iterator_new(&out, PHP_GIT2_V(_repo, repository), notes_ref);
if (php_git2_check_error(error, "git_note_iterator_new" TSRMLS_CC)) {
RETURN_FALSE;
}
if (php_git2_make_resource(&result, PHP_GIT2_TYPE_NOTE_ITERATOR, out, 1 TSRMLS_CC)) {
RETURN_FALSE;
}
ZVAL_RESOURCE(return_value, GIT2_RVAL_P(result));
}
/* }}} */
/* {{{ proto void git_note_iterator_free(resource $it)
*/
PHP_FUNCTION(git_note_iterator_free)
{
zval *it = NULL;
php_git2_t *_it = NULL;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
"r", &it) == FAILURE) {
return;
}
ZEND_FETCH_RESOURCE(_it, php_git2_t*, &it, -1, PHP_GIT2_RESOURCE_NAME, git2_resource_handle);
if (GIT2_SHOULD_FREE(_it)) {
git_note_iterator_free(PHP_GIT2_V(_it, note_iterator));
GIT2_SHOULD_FREE(_it) = 0;
};
zval_ptr_dtor(&it);
}
/* }}} */
/* {{{ proto long git_note_next(string $note_id, string $annotated_id, resource $it)
*/
PHP_FUNCTION(git_note_next)
{
int result = 0, note_id_len = 0, annotated_id_len = 0;
char *note_id = NULL, *annotated_id = NULL;
zval *it = NULL;
php_git2_t *_it = NULL;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
"ssr", ¬e_id, ¬e_id_len, &annotated_id, &annotated_id_len, &it) == FAILURE) {
return;
}
ZEND_FETCH_RESOURCE(_it, php_git2_t*, &it, -1, PHP_GIT2_RESOURCE_NAME, git2_resource_handle);
result = git_note_next(note_id, annotated_id, PHP_GIT2_V(_it, note_iterator));
RETURN_LONG(result);
}
/* }}} */
/* {{{ proto resource git_note_read(resource $repo, string $notes_ref, string $oid)
*/
PHP_FUNCTION(git_note_read)
{
php_git2_t *result = NULL, *_repo = NULL;
git_note *out = NULL;
zval *repo = NULL;
char *notes_ref = NULL, *oid = NULL;
int notes_ref_len = 0, oid_len = 0, error = 0;
git_oid __oid = {0};
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
"rss", &repo, ¬es_ref, ¬es_ref_len, &oid, &oid_len) == FAILURE) {
return;
}
ZEND_FETCH_RESOURCE(_repo, php_git2_t*, &repo, -1, PHP_GIT2_RESOURCE_NAME, git2_resource_handle);
if (git_oid_fromstrn(&__oid, oid, oid_len)) {
RETURN_FALSE;
}
error = git_note_read(&out, PHP_GIT2_V(_repo, repository), notes_ref, &__oid);
if (php_git2_check_error(error, "git_note_read" TSRMLS_CC)) {
RETURN_FALSE;
}
if (php_git2_make_resource(&result, PHP_GIT2_TYPE_NOTE, out, 1 TSRMLS_CC)) {
RETURN_FALSE;
}
ZVAL_RESOURCE(return_value, GIT2_RVAL_P(result));
}
/* }}} */
/* {{{ proto string git_note_message(resource $note)
*/
PHP_FUNCTION(git_note_message)
{
const char *result = NULL;
zval *note = NULL;
php_git2_t *_note = NULL;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
"r", ¬e) == FAILURE) {
return;
}
ZEND_FETCH_RESOURCE(_note, php_git2_t*, ¬e, -1, PHP_GIT2_RESOURCE_NAME, git2_resource_handle);
result = git_note_message(PHP_GIT2_V(_note, note));
RETURN_STRING(result, 1);
}
/* }}} */
/* {{{ proto resource git_note_oid(resource $note)
*/
PHP_FUNCTION(git_note_oid)
{
const git_oid *result = NULL;
zval *note = NULL;
php_git2_t *_note = NULL;
char __result[GIT2_OID_HEXSIZE] = {0};
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
"r", ¬e) == FAILURE) {
return;
}
ZEND_FETCH_RESOURCE(_note, php_git2_t*, ¬e, -1, PHP_GIT2_RESOURCE_NAME, git2_resource_handle);
result = git_note_oid(PHP_GIT2_V(_note, note));
git_oid_fmt(__result, result);
RETURN_STRING(__result, 1);
}
/* }}} */
/* {{{ proto resource git_note_create(resource $repo, array $author, array $committer, string $notes_ref, string $oid, string $note, long $force)
*/
PHP_FUNCTION(git_note_create)
{
php_git2_t *_repo = NULL;
git_oid out = {0}, __oid = {0};
zval *repo = NULL, *author = NULL, *committer = NULL;
char *notes_ref = NULL, *oid = NULL, *note = NULL;
int notes_ref_len = 0, oid_len = 0, note_len = 0, error = 0;
long force = 0;
char buf[GIT2_OID_HEXSIZE] = {0};
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
"raasssl", &repo, &author, &committer, ¬es_ref, ¬es_ref_len, &oid, &oid_len, ¬e, ¬e_len, &force) == FAILURE) {
return;
}
ZEND_FETCH_RESOURCE(_repo, php_git2_t*, &repo, -1, PHP_GIT2_RESOURCE_NAME, git2_resource_handle);
if (git_oid_fromstrn(&__oid, oid, oid_len)) {
RETURN_FALSE;
}
error = git_note_create(&out, PHP_GIT2_V(_repo, repository), author, committer, notes_ref, &__oid, note, force);
if (php_git2_check_error(error, "git_note_create" TSRMLS_CC)) {
RETURN_FALSE;
}
git_oid_fmt(buf, &out);
RETURN_STRING(buf, 1);
}
/* }}} */
/* {{{ proto long git_note_remove(resource $repo, string $notes_ref, array $author, array $committer, string $oid)
*/
PHP_FUNCTION(git_note_remove)
{
int result = 0, notes_ref_len = 0, oid_len = 0;
zval *repo = NULL, *author = NULL, *committer = NULL;
php_git2_t *_repo = NULL;
char *notes_ref = NULL, *oid = NULL;
git_oid __oid = {0};
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
"rsaas", &repo, ¬es_ref, ¬es_ref_len, &author, &committer, &oid, &oid_len) == FAILURE) {
return;
}
ZEND_FETCH_RESOURCE(_repo, php_git2_t*, &repo, -1, PHP_GIT2_RESOURCE_NAME, git2_resource_handle);
if (git_oid_fromstrn(&__oid, oid, oid_len)) {
RETURN_FALSE;
}
result = git_note_remove(PHP_GIT2_V(_repo, repository), notes_ref, author, committer, &__oid);
RETURN_LONG(result);
}
/* }}} */
/* {{{ proto void git_note_free(resource $note)
*/
PHP_FUNCTION(git_note_free)
{
zval *note = NULL;
php_git2_t *_note = NULL;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
"r", ¬e) == FAILURE) {
return;
}
ZEND_FETCH_RESOURCE(_note, php_git2_t*, ¬e, -1, PHP_GIT2_RESOURCE_NAME, git2_resource_handle);
if (GIT2_SHOULD_FREE(_note)) {
git_note_free(PHP_GIT2_V(_note, note));
GIT2_SHOULD_FREE(_note) = 0;
};
zval_ptr_dtor(¬e);
}
/* }}} */
/* {{{ proto resource git_note_default_ref(resource $repo)
*/
PHP_FUNCTION(git_note_default_ref)
{
php_git2_t *_repo = NULL;
char *out = NULL;
zval *repo = NULL;
int error = 0;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
"r", &repo) == FAILURE) {
return;
}
ZEND_FETCH_RESOURCE(_repo, php_git2_t*, &repo, -1, PHP_GIT2_RESOURCE_NAME, git2_resource_handle);
error = git_note_default_ref(&out, PHP_GIT2_V(_repo, repository));
if (php_git2_check_error(error, "git_note_default_ref" TSRMLS_CC)) {
RETURN_FALSE;
}
RETURN_STRING(out, 1);
}
/* }}} */
/* {{{ proto long git_note_foreach(resource $repo, string $notes_ref, Callable $note_cb, $payload)
*/
PHP_FUNCTION(git_note_foreach)
{
int result = 0, notes_ref_len = 0;
zval *repo = NULL, *payload = NULL;
php_git2_t *_repo = NULL;
char *notes_ref = NULL;
zend_fcall_info fci = empty_fcall_info;
zend_fcall_info_cache fcc = empty_fcall_info_cache;
php_git2_cb_t *cb = NULL;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
"rsfz", &repo, ¬es_ref, ¬es_ref_len, &fci, &fcc, &payload) == FAILURE) {
return;
}
ZEND_FETCH_RESOURCE(_repo, php_git2_t*, &repo, -1, PHP_GIT2_RESOURCE_NAME, git2_resource_handle);
if (php_git2_cb_init(&cb, &fci, &fcc, payload TSRMLS_CC)) {
RETURN_FALSE;
}
//result = git_note_foreach(PHP_GIT2_V(_repo, repository), notes_ref, , cb);
php_git2_cb_free(cb);
RETURN_LONG(result);
}
/* }}} */