File tree Expand file tree Collapse file tree 7 files changed +40
-32
lines changed Expand file tree Collapse file tree 7 files changed +40
-32
lines changed Original file line number Diff line number Diff 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)
Original file line number Diff line number Diff 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-
5422class libgit2_object : private noncopyable_nonmovable
5523{
5624public:
Original file line number Diff line number Diff line change 66#include < git2.h>
77
88#include " ../utils/common.hpp"
9+ #include " ../wrapper/wrapper_base.hpp"
910
1011class repository_wrapper ;
1112
Original file line number Diff line number Diff line change 55#include < git2.h>
66
77#include " ../wrapper/repository_wrapper.hpp"
8+ #include " ../wrapper/wrapper_base.hpp"
89
910class reference_wrapper : public wrapper_base <git_reference>
1011{
Original file line number Diff line number Diff line change 66
77#include " ../utils/common.hpp"
88#include " ../wrapper/index_wrapper.hpp"
9+ #include " ../wrapper/wrapper_base.hpp"
910
1011class repository_wrapper : public wrapper_base <git_repository>
1112{
Original file line number Diff line number Diff line change 66#include < git2.h>
77
88#include " ../wrapper/repository_wrapper.hpp"
9+ #include " ../wrapper/wrapper_base.hpp"
910
1011class status_list_wrapper : public wrapper_base <git_status_list>
1112{
Original file line number Diff line number Diff line change 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+ };
You can’t perform that action at this time.
0 commit comments