47 lines
1.2 KiB
C++
47 lines
1.2 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "dna/DNA.h"
|
|
#include "dna/Helpers.h"
|
|
#include "dna/types/Aliases.h"
|
|
|
|
namespace dna {
|
|
|
|
class BaseImpl {
|
|
protected:
|
|
explicit BaseImpl(MemoryResource* memRes_) :
|
|
memRes{memRes_},
|
|
dna{UnknownLayerPolicy::Preserve, UpgradeFormatPolicy::Allowed, memRes} {
|
|
}
|
|
|
|
BaseImpl(UnknownLayerPolicy unknownPolicy, UpgradeFormatPolicy upgradePolicy, MemoryResource* memRes_) :
|
|
memRes{memRes_},
|
|
dna{unknownPolicy, upgradePolicy, memRes} {
|
|
}
|
|
|
|
~BaseImpl() = default;
|
|
|
|
BaseImpl(const BaseImpl&) = delete;
|
|
BaseImpl& operator=(const BaseImpl&) = delete;
|
|
|
|
BaseImpl(BaseImpl&& rhs) = delete;
|
|
BaseImpl& operator=(BaseImpl&&) = delete;
|
|
|
|
public:
|
|
MemoryResource* getMemoryResource() {
|
|
return memRes;
|
|
}
|
|
|
|
void rawCopyInto(DNA& destination, DataLayer layer, UnknownLayerPolicy policy, MemoryResource* memRes_) {
|
|
copy(dna, destination, layer, policy, memRes_);
|
|
}
|
|
|
|
protected:
|
|
MemoryResource* memRes;
|
|
mutable DNA dna;
|
|
|
|
};
|
|
|
|
} // namespace dna
|