LeviLamina
Loading...
Searching...
No Matches
SubChunkStorage.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4#include "mc/util/IDataOutput.h"
5#include "mc/world/level/chunk/sub_chunk_storage_unit/PruneType.h"
6#include "mc/world/level/chunk/sub_chunk_storage_unit/Type.h"
7
8template <typename T>
10public:
11 // NOLINTBEGIN
12 static SubChunkStorageUnit::Type chooseTypeForElementTypeCount(size_t elementCount);
13 static std::unique_ptr<SubChunkStorage<T>> makeUniform(T const& element);
14 static std::unique_ptr<SubChunkStorage<T>> makeExpanded(SubChunkStorage<T> const& oldStorage);
15
16 virtual ~SubChunkStorage() = default;
17
18 virtual bool isUniform(T const&) const = 0;
19
20 virtual bool isPaletteUniform(T const&) const = 0;
21
22 virtual T const& getElement(uint16_t) const = 0;
23
24 virtual bool setElement(uint16_t, T const&) = 0;
25
26 virtual size_t getElementTypeCapacity() const = 0;
27
28 virtual SubChunkStorageUnit::Type getType() const = 0;
29
30 virtual size_t getMemoryEstimate() const = 0;
31
32 virtual std::unique_ptr<SubChunkStorage<T>> makePrunedCopy(SubChunkStorageUnit::PruneType) const = 0;
33
34 // NOLINTEND
35};
Definition SubChunkStorage.h:9