consolidate all repos to one for archive

This commit is contained in:
2025-01-28 13:46:42 +01:00
commit a6610fbc7a
5350 changed files with 2705721 additions and 0 deletions

View File

@@ -0,0 +1,60 @@
#ifndef NALOGA0901_SMARTPOINTER_H
#define NALOGA0901_SMARTPOINTER_H
#include "ReferenceCounter.h"
template<typename T>
class SmartPointer {
private:
T *pointer;
ReferenceCounter *used;
public:
SmartPointer() {
used = new ReferenceCounter();
++*used;
}
SmartPointer(T *pointer) : pointer(pointer) {
used = new ReferenceCounter();
++*used;
}
SmartPointer(const SmartPointer<T> &p1) : pointer(p1.pointer), used(p1.used) {
++*used;
}
~SmartPointer() {
if (--*used == 0) {
delete pointer;
delete used;
}
}
T &operator*() {
return *pointer;
}
T *operator->() {
return pointer;
}
SmartPointer<T> &operator=(const SmartPointer<T> &sp) {
if (this != &sp) {
if (--*used == 0) {
delete pointer;
delete used;
}
pointer = sp.pointer;
used = sp.used;
++*used;
}
return *this;
}
unsigned int useCount() {
return used->useCount();
}
};
#endif //NALOGA0901_SMARTPOINTER_H