Commit graph

89 commits

Author SHA1 Message Date
Kp 57412a21c9 Return vobjptridx from segiter
The segiter code used objptridx because end is signalled by object_none,
and vobjptridx does not allow object_none.  However, the compiler
produces better code if segment_object_range_t returns vobjptridx and
future cleanups are easier if iterating objects_in yields vobjptridx
objects.  Add a special-case override of the normal checking rules, move
the required checks into segiter, and then let segiter break the rules
normally enforced by valptridx.  Add a comment explaining that this
permits unsafe coding and should be done only with a clear understanding
of the responsibilities it brings.
2016-10-29 23:16:18 +00:00
Kp aaca04ba1f Simplify valptridx array access restrictions 2016-10-15 00:53:18 +00:00
Kp 608467161b Remove obsolete arguments from DEFINE_VALPTRIDX_SUBTYPE 2016-04-06 03:34:13 +00:00
Kp 443b1f2915 Add file/line to valptridx output when available 2016-04-06 03:34:13 +00:00
Kp 5b3a36e6b8 Remove valptridx operator-(P *, A &) 2016-04-06 03:34:13 +00:00
Kp 553b313099 Use vwallptr 2016-02-12 04:02:28 +00:00
Kp e6d5b6f041 Move valptridx get_count/set_count to untyped base 2016-02-10 03:58:05 +00:00
Kp 1f9e69b0b7 Replace highest_valid(V,offset) with partial_range 2016-02-06 22:12:55 +00:00
Kp ec025d4e88 Pass common highest_valid to vptr factory 2016-02-06 22:12:54 +00:00
Kp a3ae630829 Remove default argument for basic_ptridx(index) 2016-01-09 16:38:14 +00:00
Kp 0be0475309 Move valptridx array highest to base class 2016-01-09 16:38:14 +00:00
Kp 6489c64598 Use type_traits to manage valptridx const 2016-01-09 16:38:13 +00:00
Kp 98f5afa9f8 Remove default argument for basic_ptr(pointer,array &) 2016-01-09 16:38:13 +00:00
Kp d17b12da31 Remove default argument for basic_ptr(index,array &) 2016-01-09 16:38:12 +00:00
Kp 1cef946a90 Remove default argument for basic_idx(index,array &) 2016-01-09 16:38:12 +00:00
Kp f48eddeece Block direct changes to Highest_object_index
Route updates through helper functions.
2016-01-09 16:38:12 +00:00
Kp e8c34be843 Use v*ptr* factories with highest_valid 2015-12-22 04:18:51 +00:00
Kp d479819931 Use absolute_sibling to reduce global references for ptridx 2015-12-22 04:18:51 +00:00
Kp af8876efe1 Make array optional for valptridx check_index_range 2015-12-22 04:18:50 +00:00
Kp 45f1a71420 Move valptridx get_global_array to DXX_VALPTRIDX_DECLARE_GLOBAL_SUBTYPE
This removes the need to repeat the array name when invoking
DEFINE_VALPTRIDX_SUBTYPE.
2015-12-08 04:20:24 +00:00
Kp db77622f0e Move array_size into valptridx_specialized_types 2015-11-26 02:56:55 +00:00
Kp 82d0c2ed96 Make some implicit uses of ptridx construction explicit 2015-11-19 03:23:34 +00:00
Kp 8997ec557d Simplify valptridx get_global_array definition 2015-11-14 18:17:21 +00:00
Kp 5f29170702 Move valptridx error reporting out of main header 2015-10-13 02:43:25 +00:00
Kp 9bd5c492aa Move valptridx size call out of line 2015-10-13 02:43:24 +00:00
Kp dd0f5cb83f Move fwdvalptridx.h -> fwd-valptridx.h for consistency 2015-10-09 02:46:11 +00:00
Kp 76b94de1de Add commented out hook for warning on valptridx exceptions 2015-09-26 21:17:12 +00:00
Kp 2f927c68f9 Improve support for using exact_type with valptridx 2015-09-15 02:48:04 +00:00
Kp fb5ae4e0bc Fix various header freestanding issues 2015-09-09 03:27:52 +00:00
Kp 9ca2bc20c6 Use DXX_CONSTANT_TRUE for valptridx static checks 2015-08-22 20:43:04 +00:00
Kp 2833e81ab4 Disallow copying vptr factories 2015-08-22 20:43:04 +00:00
Kp e6fab164ae Remove valptridx internal use of operator-(ptr,array) 2015-08-22 20:43:04 +00:00
Kp 2155c417cb Move array_managed_type into valptridx<T> 2015-08-22 20:43:04 +00:00
Kp a126f72bef Remove array for basic_ptr(basic_ptr<rpolicy>,array) 2015-08-22 20:43:04 +00:00
Kp fcfd3d7e54 Cast valptridx size_t to unsigned long for Windows
Windows has `typedef unsigned size_t`, so %lu triggers a format warning
for Windows targets.

Reported-by: Mako88 <https://github.com/dxx-rebirth/dxx-rebirth/issues/116>
2015-08-19 02:42:49 +00:00
Kp 0a3de25d7a Flatten valptridx ptr/idx further
Use a dummy template parameter to prevent slicing, instead of an extra
class in the inheritance chain.  This improves the generated code
slightly.
2015-08-07 03:13:51 +00:00
Kp 3458454f7e Flatten valptridx hierarchy 2015-08-06 02:57:59 +00:00
Kp b3d1c6efaa Use helper for valptridx array size checks 2015-08-06 02:57:58 +00:00
Kp eb5fcb34e6 Remove default argument for basic_ptr(reference,array) 2015-07-29 03:05:28 +00:00
Kp e0e1b28c72 Remove default argument for basic_ptr(reference,index,array) 2015-07-29 03:05:28 +00:00
Kp 84bd64a14c Remove default argument for basic_ptridx(magic,array) 2015-07-29 03:05:28 +00:00
Kp ba38214bab Remove default argument for basic_ptridx(pointer,index,array) 2015-07-29 03:05:28 +00:00
Kp b7838318b1 Fix valptridx for -fno-inline 2015-07-25 23:10:46 +00:00
Kp 1c5399427a Work around clang name lookup bug #13983
clang searches scopes in the wrong order, causing strange failures when
an inner template has a parameter with the same name as a type in an
outer scope.

clang bug report: <https://llvm.org/bugs/show_bug.cgi?id=13983>
2015-07-13 01:09:37 +00:00
Kp 6c94416a90 Pass array from ptridx factory 2015-07-13 01:09:37 +00:00
Kp fa8dcc9113 Explicitly delete basic_ptridx(pointer_type); require array
Require the array argument for basic_ptridx, which is supplied
automatically when the factory is used.
2015-07-13 01:09:37 +00:00
Kp ff5bb37c5c Combine basic_ptr_global_factory, basic_vptridx_global_factory 2015-07-13 01:09:36 +00:00
Kp 73fdd59225 Require exact type for valptridx factory 2015-07-13 01:09:36 +00:00
Kp 8b7c5c3e2b Rewrite valptridx
Move decisions out to policy classes.  Provide trivial copy
construction/assignment.  Simplify checking for unsafe conversions.
2015-07-09 03:12:45 +00:00
Kp 286753d210 Fix valptridx operator& definition 2015-06-13 22:42:15 +00:00