Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Mover wrapper_base to a dedicated file
  • Loading branch information
JohanMabille committed Jul 17, 2025
commit 390a21ca892a0932209a0b619be62ede96065443
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ set(GIT2CPP_SRC
${GIT2CPP_SOURCE_DIR}/wrapper/repository_wrapper.hpp
${GIT2CPP_SOURCE_DIR}/wrapper/status_wrapper.cpp
${GIT2CPP_SOURCE_DIR}/wrapper/status_wrapper.hpp
${GIT2CPP_SOURCE_DIR}/wrapper/wrapper_base.hpp
${GIT2CPP_SOURCE_DIR}/main.cpp
${GIT2CPP_SOURCE_DIR}/version.hpp
)
Expand Down
32 changes: 0 additions & 32 deletions src/utils/common.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,38 +19,6 @@ class noncopyable_nonmovable
~noncopyable_nonmovable() = default;
};

template <class T>
class wrapper_base
{
public:
using resource_type = T;

wrapper_base(const wrapper_base&) = delete;
wrapper_base& operator=(const wrapper_base&) = delete;

wrapper_base(wrapper_base&& rhs)
: p_resource(rhs.p_resource)
{
rhs.p_resource = nullptr;
}
wrapper_base& operator=(wrapper_base&& rhs)
{
std::swap(p_resource, rhs.p_resource);
return *this;
}

operator resource_type*() const noexcept
{
return p_resource;
}

protected:
// Allocation and deletion of p_resource must be handled by inheriting class.
wrapper_base() = default;
~wrapper_base() = default;
resource_type* p_resource = nullptr;
};

class libgit2_object : private noncopyable_nonmovable
{
public:
Expand Down
1 change: 1 addition & 0 deletions src/wrapper/index_wrapper.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include <git2.h>

#include "../utils/common.hpp"
#include "../wrapper/wrapper_base.hpp"

class repository_wrapper;

Expand Down
1 change: 1 addition & 0 deletions src/wrapper/refs_wrapper.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#include <git2.h>

#include "../wrapper/repository_wrapper.hpp"
#include "../wrapper/wrapper_base.hpp"

class reference_wrapper : public wrapper_base<git_reference>
{
Expand Down
1 change: 1 addition & 0 deletions src/wrapper/repository_wrapper.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

#include "../utils/common.hpp"
#include "../wrapper/index_wrapper.hpp"
#include "../wrapper/wrapper_base.hpp"

class repository_wrapper : public wrapper_base<git_repository>
{
Expand Down
1 change: 1 addition & 0 deletions src/wrapper/status_wrapper.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include <git2.h>

#include "../wrapper/repository_wrapper.hpp"
#include "../wrapper/wrapper_base.hpp"

class status_list_wrapper : public wrapper_base<git_status_list>
{
Expand Down
35 changes: 35 additions & 0 deletions src/wrapper/wrapper_base.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#pragma once


template <class T>
class wrapper_base
{
public:
using resource_type = T;

wrapper_base(const wrapper_base&) = delete;
wrapper_base& operator=(const wrapper_base&) = delete;

wrapper_base(wrapper_base&& rhs)
: p_resource(rhs.p_resource)
{
rhs.p_resource = nullptr;
}
wrapper_base& operator=(wrapper_base&& rhs)
Comment thread
JohanMabille marked this conversation as resolved.
Outdated
{
std::swap(p_resource, rhs.p_resource);
return *this;
}

operator resource_type*() const noexcept
{
return p_resource;
}

protected:
// Allocation and deletion of p_resource must be handled by inheriting class.
wrapper_base() = default;
~wrapper_base() = default;

resource_type* p_resource = nullptr;
};