aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/util/Private.cpp
blob: cb4cb5b75ea2909f3da6b482c7b09b8f726651b4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include "Private.h"

using namespace crepe;

bool Private::empty() const noexcept {
	return this->instance == nullptr;
}

Private::~Private() {
	if (this->instance == nullptr) return;
	this->destructor(this->instance);
}

Private::Private(Private && other) {
	*this = std::move(other);
}

Private & Private::operator=(Private && other) {
	// TODO: ideally this function checks for self-assignment
	this->instance = other.instance;
	this->destructor = other.destructor;
	this->type = other.type;

	other.instance = nullptr;
	other.destructor = [](void*){};

	return *this;
}

Private::Private(const Private & other) { }
Private & Private::operator=(const Private & other) {
	return *this;
}