#include "../wrapper/branch_wrapper.hpp"
#include
#include "../utils/git_exception.hpp"
#include "../wrapper/commit_wrapper.hpp"
#include "../wrapper/repository_wrapper.hpp"
branch_wrapper::branch_wrapper(git_reference* ref)
: base_type(ref)
{
}
branch_wrapper::~branch_wrapper()
{
git_reference_free(p_resource);
p_resource = nullptr;
}
std::string_view branch_wrapper::name() const
{
const char* out = nullptr;
throw_if_error(git_branch_name(&out, *this));
return std::string_view(out);
}
std::string_view branch_wrapper::reference_name() const
{
const char* out = git_reference_name(*this);
return out ? out : std::string_view();
}
void delete_branch(branch_wrapper&& branch)
{
throw_if_error(git_branch_delete(branch));
}
branch_iterator::branch_iterator(git_branch_iterator* iter)
: base_type(iter)
{
}
branch_iterator::~branch_iterator()
{
git_branch_iterator_free(p_resource);
p_resource = nullptr;
}
std::optional branch_iterator::next()
{
git_reference* ref = nullptr;
git_branch_t type;
int res = git_branch_next(&ref, &type, p_resource);
if (res == 0)
{
return branch_wrapper(ref);
}
else
{
return std::nullopt;
}
}