Rubidium
55588b052e
Codechange: add concept of ConvertibleThroughBase for strong types
...
This makes it possible to write templated alternatives for ConvertibleThroughBase
which are then available for any (strong) type that implements a base() function
In the end making adding new ConvertibleThroughBase types less awkward.
2025-02-01 19:22:02 +01:00
Rubidium
89d0a688a9
Codechange: Use EnumBitSet for pool types
2025-02-01 17:04:04 +01:00
Rubidium
4ca1fe6c32
Codechange: replace MAX_UVALUE with std::numeric_limits::max
2025-02-01 01:29:02 +01:00
Peter Nelson
1dd4adc50c
Add: EnumBitSet function to test if All or Any enum values are set.
...
This allows multiple values to be tested in one operation.
2025-01-31 17:08:24 +00:00
Peter Nelson
6d1f56ce6b
Codechange: Allow using EnumBitSet over network commands.
2025-01-29 21:46:39 +00:00
Peter Nelson
fdb3555147
Add: EnumBitSet class to safely use enum class values as a bitset.
...
This maintains type-safe enum values and type-safe masks, and avoids using undefined enum values.
2025-01-29 21:46:39 +00:00
Peter Nelson
afc0745aa2
Codechange: Specify underlying type for all enums excluding those exposed to scripts. ( #13383 )
2025-01-28 22:17:34 +00:00
Peter Nelson
fb6781015a
Codechange: Use std::endian instead of TTD_ENDIAN defines.
2025-01-28 19:37:34 +00:00
Rubidium
4099acb946
Codechange: replace BSWAP32/BSWAP16 with std::byteswap
2025-01-28 19:22:12 +01:00
Rubidium
2481f2e085
Codechange: introduce own std::byteswap implementation
...
This is only available from C++23, but the implementation is fairly trivial
and the old variants of BSWAP32/BSWAP16 were not constexpr on MSVC. This was
due to all kinds of intrinsics that were added to get better code. However,
recent compilers with reasonable optimisation settings see the naive code and
will inject the appropriate optimised code (bswap op on x86-64).
For x86-64 recent is: Clang 6+ -O1, GCC 6+ -O2, MSVC 19.34+ /O1.
2025-01-28 19:22:12 +01:00
Rubidium
45444f9666
Codechange: rename DECLARE_POSTFIX_INCREMENT to DECLARE_INCREMENT_DECREMENT_OPERATORS
2025-01-28 18:56:58 +01:00
Rubidium
0207f91b8d
Codechange: use traits to add increment/decrement operators to enums when requested
2025-01-28 18:56:58 +01:00
Rubidium
ff0b2e1064
Codechange: use std::vector instead of ReallocT-ed memory
2025-01-19 22:49:06 +01:00
Peter Nelson
ce4012b7c7
Codechange: Use enum class for Borders values. ( #13290 )
...
This makes water border settings type-safe, and avoids mixing bit numbers with masks.
2025-01-08 17:55:53 +00:00
Peter Nelson
b653f875b0
Codechange: Space between template and < ( #13278 )
...
Make it all consistent so it matches CODINGSTYLE.
2025-01-04 17:56:14 +00:00
Rubidium
a59cd8b2c0
Codefix: narrowing warnings with MSVC when base type is smaller than int
2025-01-02 20:03:40 +00:00
Rubidium
c0df898ac5
Codechange: do not implicitly convert during assignment to StrongType
2025-01-01 21:32:51 +01:00
Rubidium
a22e357911
Codechange: make strongtype constructor explicit
2025-01-01 17:40:00 +01:00
SamuXarick
1e259b7f47
Codefix: Missing this-> in Kdtree ( #13095 )
2024-12-10 17:30:55 +00:00
Peter Nelson
01d1ea6264
Codechange: Add Slide container helper function.
...
This function will move the selected range between first and last to position, rotating elements as necessary.
Returns iterators to the new positions.
2024-12-05 18:17:58 +00:00
Peter Nelson
3be0166801
Codechange: Use std::ranges::find where possible.
...
Replace `std::find(range.begin(), range.end(), ...)` with `std::ranges::find(range, ...)`.
2024-11-24 10:36:03 +00:00
SamuXarick
85e9f5745a
Codefix: Replace magic number in Kdtree ( #13098 )
2024-11-19 20:34:25 +00:00
Peter Nelson
fc8685d618
Codechange: Use functor for Kdtree's XYFunc. ( #13074 )
...
Kdtree uses a function pointer and incorrectly calls it a functor. The function pointer needs to be passed on instantiaton.
Instead, use an actual functor. This simplifies instantiation.
2024-11-19 20:29:56 +00:00
SamuXarick
60ae50e016
Codechange: Make kdtree member functions const for const-correctness ( #13099 )
2024-11-19 12:36:56 +00:00
Peter Nelson
0340e19e04
Codechange: Add to_underlying() to convert enum to underlying type. ( #12958 )
...
This simplifies and replaces static_cast and C-style casts doing the same.
`std::to_underlying()` exists in C++23 but not C++20.
2024-09-22 18:07:42 +01:00
Peter Nelson
376e882a14
Codechange: Add HasFlag() to test if a value is present in a bitset enum type. ( #12959 )
...
This simplifies tests for `(x & y) != y` with enum classes by reducing repetition, similar to HasBit(), and also makes the intent of the expression clearer.
2024-09-22 14:51:37 +01:00
Jonathan G Rennison
e477706bf5
Codechange: Add AssignBit function to assign the value of a single bit ( #12934 )
...
* Codechange: Add AssignBit function to assign the value of a single bit
* Codechange: Replace various uses of SB with AssignBit
* Codechange: Replace various uses of SB with a constant with SetBit
2024-09-10 08:36:58 -04:00
rubidium42
fd4cf699e5
Codefix 37a03b5: the return value of maxdim should always be assigned ( #12590 )
2024-04-28 17:42:58 +00:00
Peter Nelson
b4e00fa738
Codechange: Replace C-casts in pool functions. ( #12541 )
2024-04-20 16:50:13 +01:00
Paco Esteban
b477a8458c
Codechange: Use arc4random_buf on random_func.cpp for OpenBSD
2024-04-17 19:29:26 +02:00
Peter Nelson
7e28605830
Fix: Use reinterpret_cast instead of C-style cast to align pointers.
2024-04-08 18:21:42 +01:00
Peter Nelson
4daf95b878
Fix: Use static_cast instead of C-cast to avoid hidden errors.
2024-04-08 18:21:42 +01:00
Patric Stout
a3cfd23cf9
Codechange: rename byte to uint8_t ( #12308 )
2024-03-16 23:59:32 +01:00
Rubidium
a06814c173
Codechange: use std::source_location over __FILE__ and __LINE__ for Random
2024-03-11 20:30:33 +01:00
Rubidium
bab5a8a787
Codechange: use std::source_location over __FILE__ and __LINE__ for Backup
2024-03-10 10:14:20 +01:00
Peter Nelson
2ecc3c90f7
Change: Improve performance of finding free pool slots. ( #12055 )
...
Add a bitmap of used pool slots which allows finding a free pool slot without having to check if each index is already used or not.
Loosely based on a JGRPP patch.
2024-02-17 18:29:21 +00:00
Rubidium
f0c50ad529
Codechange: Add function to get the power of ten for a given number
2024-02-17 14:33:16 +01:00
frosch
b1718478c8
Codechange: Replace old non-standard attributes with C++17/20 standard attributes.
2024-02-02 22:29:28 +01:00
Jonathan G Rennison
c0b8e58404
Codechange: Simplify SetBitIterator
...
Use FindFirstBit and KillFirstBit, allowing simpler iterator equality
Add simple test
2024-02-01 23:05:57 +01:00
Patric Stout
ea8c1d8597
Change: make for smooth-scrolling based on actual time
...
This means if rendering takes a bit longer, scrolling goes a bit
quicker, making travel time always about the same time for the
same distance.
2024-01-25 10:29:48 +01:00
Tyler Trahan
735abfe111
Codechange: Split dates and timers into Economy and Calendar time ( #10700 )
2024-01-22 09:04:34 -05:00
Patric Stout
71b8801b61
Fix bd85f61a: [Linux] don't include sys/random.h on older glibc systems ( #11844 )
2024-01-20 20:43:06 +00:00
Rubidium
086cbd0d72
Codechange: add constexpr to math functions where applicable
2024-01-20 17:30:36 +01:00
Rubidium
dfe70181f1
Codechange: add constexpr to bitmath functions where applicable
2024-01-20 17:30:36 +01:00
Rubidium
4c51534b6a
Remove: LeastCommonMultiple / GreatestCommonDivisor
...
Use std::lcm / std::gcd instead.
2024-01-20 16:45:21 +01:00
Patric Stout
bd85f61a40
Change: use a stronger hash and actual random information to generate Uids
2024-01-20 14:23:03 +01:00
Rubidium
6b21368bc2
Codechange: replace FIND_FIRST_BIT/FindFirstBit2x64 with FindFirstBit
2024-01-19 21:10:39 +01:00
Rubidium
8faaedeff9
Codechange: replace hand written function to find first/last bit with C++ variant
2024-01-19 21:10:39 +01:00
Rubidium
1c694e433d
Codechange: use std::popcount instead of hand written loop
2024-01-19 06:48:55 +01:00
Peter Nelson
ae575a7a5b
Codechange: Store text run positions in vector of points.
...
This simplifies the interlaced vector of x/y positions.
2024-01-19 00:08:31 +00:00