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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
#include "aoflagger.h"
#include "structures.h"
namespace aoflagger {
FlagMask::FlagMask() : _data(nullptr) {}
FlagMask::FlagMask(size_t width, size_t height)
: _data(new FlagMaskData(Mask2D::CreateUnsetMaskPtr(width, height))) {}
FlagMask::FlagMask(size_t width, size_t height, bool initialValue)
: _data(new FlagMaskData(Mask2D::CreateUnsetMaskPtr(width, height))) {
if (initialValue)
_data->mask->SetAll<true>();
else
_data->mask->SetAll<false>();
}
FlagMask::FlagMask(const FlagMask& sourceMask)
: _data(sourceMask._data == nullptr ? nullptr
: new FlagMaskData(*sourceMask._data)) {
}
FlagMask::FlagMask(FlagMask&& sourceMask)
: _data(std::move(sourceMask._data)) {}
FlagMask& FlagMask::operator=(const FlagMask& flagMask) {
if (flagMask._data == nullptr) {
_data.reset();
} else if (_data == nullptr) {
_data.reset(new FlagMaskData(*flagMask._data));
} else {
*_data = *flagMask._data;
}
return *this;
}
FlagMask& FlagMask::operator=(FlagMask&& flagMask) {
std::swap(_data, flagMask._data);
return *this;
}
FlagMask::~FlagMask() {}
size_t FlagMask::Width() const { return _data->mask->Width(); }
size_t FlagMask::Height() const { return _data->mask->Height(); }
size_t FlagMask::HorizontalStride() const { return _data->mask->Stride(); }
bool* FlagMask::Buffer() { return _data->mask->ValuePtr(0, 0); }
const bool* FlagMask::Buffer() const { return _data->mask->ValuePtr(0, 0); }
} // namespace aoflagger
|