/*
* This file is part of the DXX-Rebirth project .
* It is copyright by its individual contributors, as recorded in the
* project's Git history. See COPYING.txt at the top level for license
* terms and a link to the Git history.
*/
#pragma once
#include "dxxsconf.h"
#include "compiler-begin.h"
template
class partial_range_t;
template
__attribute_warn_unused_result
static inline partial_range_t unchecked_partial_range(const char (&file)[NF], unsigned line, const char (&estr)[NE], I range_begin, const UO &o, const UL &l);
template
__attribute_warn_unused_result
static inline partial_range_t unchecked_partial_range(const char (&file)[NF], unsigned line, const char (&estr)[NE], I range_begin, const UL &l);
template ()))>
__attribute_warn_unused_result
static inline partial_range_t partial_range(const char (&file)[NF], unsigned line, const char (&estr)[NE], T &t, const UO &o, const UL &l);
template ()))>
__attribute_warn_unused_result
static inline partial_range_t partial_range(const char (&file)[NF], unsigned line, const char (&estr)[NE], T &t, const UL &l);
template ()))>
__attribute_warn_unused_result
static inline partial_range_t partial_const_range(const char (&file)[NF], unsigned line, const char (&estr)[NE], const T &t, const UO &o, const UL &l);
template ()))>
__attribute_warn_unused_result
static inline partial_range_t partial_const_range(const char (&file)[NF], unsigned line, const char (&estr)[NE], const T &t, const UL &l);
/* Explicitly block use on rvalue t because returned partial_range_t
* will outlive the rvalue.
*/
template ()))>
static inline partial_range_t partial_const_range(const char (&file)[NF], unsigned line, const char (&estr)[NE], const T &&t, const UO &o, const UL &l) = delete;
template ()))>
static inline partial_range_t partial_const_range(const char (&file)[NF], unsigned line, const char (&estr)[NE], const T &&t, const UL &l) = delete;
template ()))>
__attribute_warn_unused_result
static inline partial_range_t make_range(T &t);
#define unchecked_partial_range(T,...) unchecked_partial_range(__FILE__, __LINE__, #T, T, ##__VA_ARGS__)
#define partial_range(T,...) partial_range(__FILE__, __LINE__, #T, T, ##__VA_ARGS__)
#define partial_const_range(T,...) partial_const_range(__FILE__, __LINE__, #T, T, ##__VA_ARGS__)