21 virtual std::unique_ptr<DataLayoutFactory>
clone()
const = 0;
25 view v(schema.
cbegin(), schema.
cend(), [](
auto it) ->
auto & { return it->type; });
26 return make(v.begin(), v.end(), num_tuples);
32 return make(std::vector<const Type*>(begin, end), num_tuples);
36 virtual DataLayout make(std::vector<const Type*> types, std::size_t num_tuples = 0)
const = 0;
40 void dump(std::ostream &out)
const;
44 virtual void print(std::ostream &out)
const = 0;
49 std::unique_ptr<DataLayoutFactory>
clone()
const override {
return std::make_unique<RowLayoutFactory>(); }
52 DataLayout make(std::vector<const Type*> types, std::size_t num_tuples = 0)
const override;
55 void print(std::ostream &out)
const override { out <<
"Row"; }
84 M_insist(num != 0,
"number of tuples or rather number of bytes must at least be 1");
91 std::unique_ptr<DataLayoutFactory>
clone()
const override {
96 DataLayout make(std::vector<const Type*> types, std::size_t num_tuples = 0)
const override;
99 void print(std::ostream &out)
const override {
A Schema represents a sequence of identifiers, optionally with a prefix, and their associated types.
const_iterator cend() const
const_iterator cbegin() const
This is an interface for factories that compute particular DataLayouts for a given sequence of Types,...
virtual void print(std::ostream &out) const =0
virtual ~DataLayoutFactory()
virtual std::unique_ptr< DataLayoutFactory > clone() const =0
Creates and returns a deep copy of this.
virtual DataLayout make(std::vector< const Type * > types, std::size_t num_tuples=0) const =0
Returns a DataLayout for the given types and length num_tuples (0 means infinite layout).
DataLayout make(It begin, It end, std::size_t num_tuples=0) const
Returns a DataLayout for the given Types in the range from begin to end and length num_tuples.
friend M_EXPORT std::ostream & operator<<(std::ostream &out, const DataLayoutFactory &factory)
DataLayout make(const Schema &schema, std::size_t num_tuples=0) const
Returns a DataLayout for the given Types contained in schema and length num_tuples.
Models how data is laid out in a linear address space.
PAXLayoutFactory(block_size_t option, uint64_t num)
static constexpr uint64_t DEFAULT_NUM_TUPLES
PAXLayoutFactory(block_size_t option=NBytes)
void print(std::ostream &out) const override
std::unique_ptr< DataLayoutFactory > clone() const override
Creates and returns a deep copy of this.
static constexpr uint64_t DEFAULT_NUM_BYTES
4 KiB
DataLayout make(std::vector< const Type * > types, std::size_t num_tuples=0) const override
Returns a DataLayout for the given types and length num_tuples (0 means infinite layout).
DataLayout make(std::vector< const Type * > types, std::size_t num_tuples=0) const override
Returns a DataLayout for the given types and length num_tuples (0 means infinite layout).
void print(std::ostream &out) const override
std::unique_ptr< DataLayoutFactory > clone() const override
Creates and returns a deep copy of this.