swh:1:snp:f521c49ab17ef7db6ec70b2430e1ed203f50383f
Raw File
Tip revision: fcbcaa969341a89842d8b03326543b6fcc5b13f6 authored by Lars Bilke on 19 September 2022, 11:21:24 UTC
6.4.3
Tip revision: fcbcaa9
DynamicSpan.h
/**
 * \file
 * \copyright
 * Copyright (c) 2012-2022, OpenGeoSys Community (http://www.opengeosys.org)
 *            Distributed under a Modified BSD License.
 *              See accompanying file LICENSE.txt or
 *              http://www.opengeosys.org/project/license
 */

#pragma once

#include <cstddef>

namespace BaseLib
{
template <typename T>
struct DynamicSpan
{
    template <typename Iterator>
    DynamicSpan(Iterator data_, std::size_t size)
        : data{&*data_ /* manually convert iterator to pointer */}, size_{size}
    {
    }

    T* begin() const { return data; }
    T* end() const { return data + size_; }
    std::size_t size() const { return size_; }
    T& operator[](std::size_t i) const { return data[i]; }

    T* data;

private:
    std::size_t size_;
};

template <typename T>
DynamicSpan(T*, std::size_t) -> DynamicSpan<T>;
}  // namespace BaseLib
back to top