/* * 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], 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], T &&t, const UL &l) = delete; template ()))> __attribute_warn_unused_result static inline partial_range_t make_range(const char (&file)[NF], unsigned line, const char (&estr)[NE], 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__) #define make_range(T,...) make_range(__FILE__, __LINE__, #T, T, ##__VA_ARGS__)