Disallow using signed offsets with partial_range

This commit is contained in:
Kp 2014-02-01 23:41:55 +00:00
parent bca9531fbe
commit 0257b9ca1c
3 changed files with 10 additions and 6 deletions

View file

@ -7,6 +7,7 @@
#pragma once
#include "dxxsconf.h"
#include "compiler-begin.h"
#include "compiler-type_traits.h"
template <typename iterator>
struct partial_range_t
@ -40,15 +41,18 @@ namespace boost
}
#endif
template <typename T>
partial_range_t<typename T::iterator> partial_range(T &t, typename T::size_type l)
template <typename T, typename U>
typename tt::enable_if<!tt::is_unsigned<U>::value, void>::type partial_range(T &, U) DXX_CXX11_EXPLICIT_DELETE;
template <typename T, typename U>
typename tt::enable_if<tt::is_unsigned<U>::value, partial_range_t<typename T::iterator>>::type partial_range(T &t, const U &l)
{
auto b = begin(t);
return partial_range_t<typename T::iterator>(b, b + l);
}
template <typename T>
partial_range_t<typename T::const_iterator> partial_range(const T &t, typename T::size_type l)
template <typename T, typename U>
typename tt::enable_if<tt::is_unsigned<U>::value, partial_range_t<typename T::const_iterator>>::type partial_range(const T &t, const U &l)
{
auto b = begin(t);
return partial_range_t<typename T::const_iterator>(b, b + l);

View file

@ -49,7 +49,7 @@ struct segmasks
struct segment_depth_array_t : public array<ubyte, MAX_SEGMENTS> {};
extern int Highest_vertex_index; // Highest index in Vertices and Vertex_active, an efficiency hack
extern int Highest_segment_index; // Highest index in Segments, an efficiency hack
extern unsigned Highest_segment_index; // Highest index in Segments, an efficiency hack
extern int Doing_lighting_hack_flag;
extern void compute_center_point_on_side(vms_vector *vp,segment *sp,int side);

View file

@ -52,7 +52,7 @@ int Num_vertices = 0;
int Num_segments = 0;
int Highest_vertex_index=0;
int Highest_segment_index=0;
unsigned Highest_segment_index;
// Translate table to get opposite side of a face on a segment.
const char Side_opposite[MAX_SIDES_PER_SEGMENT] = {WRIGHT, WBOTTOM, WLEFT, WTOP, WFRONT, WBACK};