#pragma once
#include <memory>
#include <vector>
#include "common/copy_constructors.h"
#include "common/data_chunk/data_chunk_state.h"
#include "common/vector/value_vector.h"
namespace lbug {
namespace common {
class LBUG_API DataChunk {
public:
DataChunk() : DataChunk{0} {}
explicit DataChunk(uint32_t numValueVectors)
: DataChunk(numValueVectors, std::make_shared<DataChunkState>()) {};
DataChunk(uint32_t numValueVectors, const std::shared_ptr<DataChunkState>& state)
: valueVectors(numValueVectors), state{state} {};
DELETE_COPY_DEFAULT_MOVE(DataChunk);
void insert(uint32_t pos, std::shared_ptr<ValueVector> valueVector);
void resetAuxiliaryBuffer();
uint32_t getNumValueVectors() const { return valueVectors.size(); }
const ValueVector& getValueVector(uint64_t valueVectorPos) const {
return *valueVectors[valueVectorPos];
}
ValueVector& getValueVectorMutable(uint64_t valueVectorPos) const {
return *valueVectors[valueVectorPos];
}
public:
std::vector<std::shared_ptr<ValueVector>> valueVectors;
std::shared_ptr<DataChunkState> state;
};
} }