aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/util/Private.cpp
blob: 262620ddb8873f736d01df8b7e0b4c28a341a1b4 (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
#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; }