Skip to content

Commit 390a21c

Browse files
committed
Mover wrapper_base to a dedicated file
1 parent 78f7356 commit 390a21c

File tree

7 files changed

+40
-32
lines changed

7 files changed

+40
-32
lines changed

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ set(GIT2CPP_SRC
5757
${GIT2CPP_SOURCE_DIR}/wrapper/repository_wrapper.hpp
5858
${GIT2CPP_SOURCE_DIR}/wrapper/status_wrapper.cpp
5959
${GIT2CPP_SOURCE_DIR}/wrapper/status_wrapper.hpp
60+
${GIT2CPP_SOURCE_DIR}/wrapper/wrapper_base.hpp
6061
${GIT2CPP_SOURCE_DIR}/main.cpp
6162
${GIT2CPP_SOURCE_DIR}/version.hpp
6263
)

src/utils/common.hpp

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -19,38 +19,6 @@ class noncopyable_nonmovable
1919
~noncopyable_nonmovable() = default;
2020
};
2121

22-
template <class T>
23-
class wrapper_base
24-
{
25-
public:
26-
using resource_type = T;
27-
28-
wrapper_base(const wrapper_base&) = delete;
29-
wrapper_base& operator=(const wrapper_base&) = delete;
30-
31-
wrapper_base(wrapper_base&& rhs)
32-
: p_resource(rhs.p_resource)
33-
{
34-
rhs.p_resource = nullptr;
35-
}
36-
wrapper_base& operator=(wrapper_base&& rhs)
37-
{
38-
std::swap(p_resource, rhs.p_resource);
39-
return *this;
40-
}
41-
42-
operator resource_type*() const noexcept
43-
{
44-
return p_resource;
45-
}
46-
47-
protected:
48-
// Allocation and deletion of p_resource must be handled by inheriting class.
49-
wrapper_base() = default;
50-
~wrapper_base() = default;
51-
resource_type* p_resource = nullptr;
52-
};
53-
5422
class libgit2_object : private noncopyable_nonmovable
5523
{
5624
public:

src/wrapper/index_wrapper.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include <git2.h>
77

88
#include "../utils/common.hpp"
9+
#include "../wrapper/wrapper_base.hpp"
910

1011
class repository_wrapper;
1112

src/wrapper/refs_wrapper.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include <git2.h>
66

77
#include "../wrapper/repository_wrapper.hpp"
8+
#include "../wrapper/wrapper_base.hpp"
89

910
class reference_wrapper : public wrapper_base<git_reference>
1011
{

src/wrapper/repository_wrapper.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
#include "../utils/common.hpp"
88
#include "../wrapper/index_wrapper.hpp"
9+
#include "../wrapper/wrapper_base.hpp"
910

1011
class repository_wrapper : public wrapper_base<git_repository>
1112
{

src/wrapper/status_wrapper.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include <git2.h>
77

88
#include "../wrapper/repository_wrapper.hpp"
9+
#include "../wrapper/wrapper_base.hpp"
910

1011
class status_list_wrapper : public wrapper_base<git_status_list>
1112
{

src/wrapper/wrapper_base.hpp

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#pragma once
2+
3+
4+
template <class T>
5+
class wrapper_base
6+
{
7+
public:
8+
using resource_type = T;
9+
10+
wrapper_base(const wrapper_base&) = delete;
11+
wrapper_base& operator=(const wrapper_base&) = delete;
12+
13+
wrapper_base(wrapper_base&& rhs)
14+
: p_resource(rhs.p_resource)
15+
{
16+
rhs.p_resource = nullptr;
17+
}
18+
wrapper_base& operator=(wrapper_base&& rhs)
19+
{
20+
std::swap(p_resource, rhs.p_resource);
21+
return *this;
22+
}
23+
24+
operator resource_type*() const noexcept
25+
{
26+
return p_resource;
27+
}
28+
29+
protected:
30+
// Allocation and deletion of p_resource must be handled by inheriting class.
31+
wrapper_base() = default;
32+
~wrapper_base() = default;
33+
34+
resource_type* p_resource = nullptr;
35+
};

0 commit comments

Comments
 (0)