Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 4371778

Browse files
committed
Polish the VDeleter code a bit
1 parent 4be0406 commit 4371778

31 files changed

Lines changed: 78 additions & 116 deletions

03_Drawing_a_triangle/00_Setup/00_Base_code.md

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,17 +110,14 @@ public:
110110
VDeleter() : VDeleter([](T _) {}) {}
111111

112112
VDeleter(std::function<void(T, VkAllocationCallbacks*)> deletef) {
113-
object = VK_NULL_HANDLE;
114113
this->deleter = [=](T obj) { deletef(obj, nullptr); };
115114
}
116115

117116
VDeleter(const VDeleter<VkInstance>& instance, std::function<void(VkInstance, T, VkAllocationCallbacks*)> deletef) {
118-
object = VK_NULL_HANDLE;
119117
this->deleter = [&instance, deletef](T obj) { deletef(instance, obj, nullptr); };
120118
}
121119

122120
VDeleter(const VDeleter<VkDevice>& device, std::function<void(VkDevice, T, VkAllocationCallbacks*)> deletef) {
123-
object = VK_NULL_HANDLE;
124121
this->deleter = [&device, deletef](T obj) { deletef(device, obj, nullptr); };
125122
}
126123

@@ -138,7 +135,7 @@ public:
138135
}
139136

140137
private:
141-
T object;
138+
T object{VK_NULL_HANDLE};
142139
std::function<void(T)> deleter;
143140

144141
void cleanup() {

README.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,24 @@ have a problem with your code, then use the comments section in the related
1313
chapter to ask a question. Please provide your operating system, graphics card,
1414
driver version, source code, expected behaviour and actual behaviour.
1515

16+
Changing code across chapters
17+
-----------------------------
18+
19+
It is sometimes necessary to change code that is reused across many chapters,
20+
for example the `VDeleter` class or a function like `createBuffer`. If you make
21+
such a change, then you should update the code files using the following steps:
22+
23+
* Update any chapters that reference the modified code.
24+
* Make a copy of the first file that uses it and modify the code there, e.g.
25+
`base_code_fixed.cpp`.
26+
* Create a patch using
27+
`diff -Naur base_code.cpp base_code_fixed.cpp > patch.txt`.
28+
* Apply the patch to the specified code file and all files in later chapters
29+
using the `incremental_patch.sh` script. Run it like this:
30+
`./incremental_patch.sh base_code.cpp patch.txt`.
31+
* Clean up the `base_code_fixed.cpp` and `patch.txt` files.
32+
* Commit.
33+
1634
License
1735
-------
1836

code/base_code.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,14 @@ class VDeleter {
1414
VDeleter() : VDeleter([](T _) {}) {}
1515

1616
VDeleter(std::function<void(T, VkAllocationCallbacks*)> deletef) {
17-
object = VK_NULL_HANDLE;
1817
this->deleter = [=](T obj) { deletef(obj, nullptr); };
1918
}
2019

2120
VDeleter(const VDeleter<VkInstance>& instance, std::function<void(VkInstance, T, VkAllocationCallbacks*)> deletef) {
22-
object = VK_NULL_HANDLE;
2321
this->deleter = [&instance, deletef](T obj) { deletef(instance, obj, nullptr); };
2422
}
2523

2624
VDeleter(const VDeleter<VkDevice>& device, std::function<void(VkDevice, T, VkAllocationCallbacks*)> deletef) {
27-
object = VK_NULL_HANDLE;
2825
this->deleter = [&device, deletef](T obj) { deletef(device, obj, nullptr); };
2926
}
3027

@@ -42,7 +39,7 @@ class VDeleter {
4239
}
4340

4441
private:
45-
T object;
42+
T object{VK_NULL_HANDLE};
4643
std::function<void(T)> deleter;
4744

4845
void cleanup() {

code/command_buffers.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,17 +49,14 @@ class VDeleter {
4949
VDeleter() : VDeleter([](T _) {}) {}
5050

5151
VDeleter(std::function<void(T, VkAllocationCallbacks*)> deletef) {
52-
object = VK_NULL_HANDLE;
5352
this->deleter = [=](T obj) { deletef(obj, nullptr); };
5453
}
5554

5655
VDeleter(const VDeleter<VkInstance>& instance, std::function<void(VkInstance, T, VkAllocationCallbacks*)> deletef) {
57-
object = VK_NULL_HANDLE;
5856
this->deleter = [&instance, deletef](T obj) { deletef(instance, obj, nullptr); };
5957
}
6058

6159
VDeleter(const VDeleter<VkDevice>& device, std::function<void(VkDevice, T, VkAllocationCallbacks*)> deletef) {
62-
object = VK_NULL_HANDLE;
6360
this->deleter = [&device, deletef](T obj) { deletef(device, obj, nullptr); };
6461
}
6562

@@ -77,7 +74,7 @@ class VDeleter {
7774
}
7875

7976
private:
80-
T object;
77+
T object{VK_NULL_HANDLE};
8178
std::function<void(T)> deleter;
8279

8380
void cleanup() {

code/depth_buffering.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,17 +59,14 @@ class VDeleter {
5959
VDeleter() : VDeleter([](T _) {}) {}
6060

6161
VDeleter(std::function<void(T, VkAllocationCallbacks*)> deletef) {
62-
object = VK_NULL_HANDLE;
6362
this->deleter = [=](T obj) { deletef(obj, nullptr); };
6463
}
6564

6665
VDeleter(const VDeleter<VkInstance>& instance, std::function<void(VkInstance, T, VkAllocationCallbacks*)> deletef) {
67-
object = VK_NULL_HANDLE;
6866
this->deleter = [&instance, deletef](T obj) { deletef(instance, obj, nullptr); };
6967
}
7068

7169
VDeleter(const VDeleter<VkDevice>& device, std::function<void(VkDevice, T, VkAllocationCallbacks*)> deletef) {
72-
object = VK_NULL_HANDLE;
7370
this->deleter = [&device, deletef](T obj) { deletef(device, obj, nullptr); };
7471
}
7572

@@ -87,7 +84,7 @@ class VDeleter {
8784
}
8885

8986
private:
90-
T object;
87+
T object{VK_NULL_HANDLE};
9188
std::function<void(T)> deleter;
9289

9390
void cleanup() {

code/descriptor_layout.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,17 +55,14 @@ class VDeleter {
5555
VDeleter() : VDeleter([](T _) {}) {}
5656

5757
VDeleter(std::function<void(T, VkAllocationCallbacks*)> deletef) {
58-
object = VK_NULL_HANDLE;
5958
this->deleter = [=](T obj) { deletef(obj, nullptr); };
6059
}
6160

6261
VDeleter(const VDeleter<VkInstance>& instance, std::function<void(VkInstance, T, VkAllocationCallbacks*)> deletef) {
63-
object = VK_NULL_HANDLE;
6462
this->deleter = [&instance, deletef](T obj) { deletef(instance, obj, nullptr); };
6563
}
6664

6765
VDeleter(const VDeleter<VkDevice>& device, std::function<void(VkDevice, T, VkAllocationCallbacks*)> deletef) {
68-
object = VK_NULL_HANDLE;
6966
this->deleter = [&device, deletef](T obj) { deletef(device, obj, nullptr); };
7067
}
7168

@@ -83,7 +80,7 @@ class VDeleter {
8380
}
8481

8582
private:
86-
T object;
83+
T object{VK_NULL_HANDLE};
8784
std::function<void(T)> deleter;
8885

8986
void cleanup() {

code/descriptor_set.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,17 +55,14 @@ class VDeleter {
5555
VDeleter() : VDeleter([](T _) {}) {}
5656

5757
VDeleter(std::function<void(T, VkAllocationCallbacks*)> deletef) {
58-
object = VK_NULL_HANDLE;
5958
this->deleter = [=](T obj) { deletef(obj, nullptr); };
6059
}
6160

6261
VDeleter(const VDeleter<VkInstance>& instance, std::function<void(VkInstance, T, VkAllocationCallbacks*)> deletef) {
63-
object = VK_NULL_HANDLE;
6462
this->deleter = [&instance, deletef](T obj) { deletef(instance, obj, nullptr); };
6563
}
6664

6765
VDeleter(const VDeleter<VkDevice>& device, std::function<void(VkDevice, T, VkAllocationCallbacks*)> deletef) {
68-
object = VK_NULL_HANDLE;
6966
this->deleter = [&device, deletef](T obj) { deletef(device, obj, nullptr); };
7067
}
7168

@@ -83,7 +80,7 @@ class VDeleter {
8380
}
8481

8582
private:
86-
T object;
83+
T object{VK_NULL_HANDLE};
8784
std::function<void(T)> deleter;
8885

8986
void cleanup() {

code/fixed_functions.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,17 +49,14 @@ class VDeleter {
4949
VDeleter() : VDeleter([](T _) {}) {}
5050

5151
VDeleter(std::function<void(T, VkAllocationCallbacks*)> deletef) {
52-
object = VK_NULL_HANDLE;
5352
this->deleter = [=](T obj) { deletef(obj, nullptr); };
5453
}
5554

5655
VDeleter(const VDeleter<VkInstance>& instance, std::function<void(VkInstance, T, VkAllocationCallbacks*)> deletef) {
57-
object = VK_NULL_HANDLE;
5856
this->deleter = [&instance, deletef](T obj) { deletef(instance, obj, nullptr); };
5957
}
6058

6159
VDeleter(const VDeleter<VkDevice>& device, std::function<void(VkDevice, T, VkAllocationCallbacks*)> deletef) {
62-
object = VK_NULL_HANDLE;
6360
this->deleter = [&device, deletef](T obj) { deletef(device, obj, nullptr); };
6461
}
6562

@@ -77,7 +74,7 @@ class VDeleter {
7774
}
7875

7976
private:
80-
T object;
77+
T object{VK_NULL_HANDLE};
8178
std::function<void(T)> deleter;
8279

8380
void cleanup() {

code/framebuffers.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,17 +49,14 @@ class VDeleter {
4949
VDeleter() : VDeleter([](T _) {}) {}
5050

5151
VDeleter(std::function<void(T, VkAllocationCallbacks*)> deletef) {
52-
object = VK_NULL_HANDLE;
5352
this->deleter = [=](T obj) { deletef(obj, nullptr); };
5453
}
5554

5655
VDeleter(const VDeleter<VkInstance>& instance, std::function<void(VkInstance, T, VkAllocationCallbacks*)> deletef) {
57-
object = VK_NULL_HANDLE;
5856
this->deleter = [&instance, deletef](T obj) { deletef(instance, obj, nullptr); };
5957
}
6058

6159
VDeleter(const VDeleter<VkDevice>& device, std::function<void(VkDevice, T, VkAllocationCallbacks*)> deletef) {
62-
object = VK_NULL_HANDLE;
6360
this->deleter = [&device, deletef](T obj) { deletef(device, obj, nullptr); };
6461
}
6562

@@ -77,7 +74,7 @@ class VDeleter {
7774
}
7875

7976
private:
80-
T object;
77+
T object{VK_NULL_HANDLE};
8178
std::function<void(T)> deleter;
8279

8380
void cleanup() {

code/graphics_pipeline.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,17 +49,14 @@ class VDeleter {
4949
VDeleter() : VDeleter([](T _) {}) {}
5050

5151
VDeleter(std::function<void(T, VkAllocationCallbacks*)> deletef) {
52-
object = VK_NULL_HANDLE;
5352
this->deleter = [=](T obj) { deletef(obj, nullptr); };
5453
}
5554

5655
VDeleter(const VDeleter<VkInstance>& instance, std::function<void(VkInstance, T, VkAllocationCallbacks*)> deletef) {
57-
object = VK_NULL_HANDLE;
5856
this->deleter = [&instance, deletef](T obj) { deletef(instance, obj, nullptr); };
5957
}
6058

6159
VDeleter(const VDeleter<VkDevice>& device, std::function<void(VkDevice, T, VkAllocationCallbacks*)> deletef) {
62-
object = VK_NULL_HANDLE;
6360
this->deleter = [&device, deletef](T obj) { deletef(device, obj, nullptr); };
6461
}
6562

@@ -77,7 +74,7 @@ class VDeleter {
7774
}
7875

7976
private:
80-
T object;
77+
T object{VK_NULL_HANDLE};
8178
std::function<void(T)> deleter;
8279

8380
void cleanup() {

0 commit comments

Comments
 (0)