72 Commits

Author SHA1 Message Date
Myles Busig
efd61da7d0 Add string_stream pipe modifiers 2024-03-25 21:17:03 -06:00
Myles Busig
dbdf8b6e3c Change armv4t integer to string conversion to use an unrolled loop
This implementation also writes the digits from left to right instead of
right to left. Using this method we can write the string to the
beginning of the buffer and still avoid reversing the string. It also
has the benefit of being slightly slower than the previous
implementation. The function's signature changed as well because there
is no longer a reason to pass the buffer size or a pointer to output the
start of the string.
2024-03-25 17:13:29 -06:00
Myles Busig
bd1efb0bf9 Add armv4t assembly macros for division by 10^x, x=[1,9] 2024-03-25 17:11:49 -06:00
Myles Busig
cf77d1041d Add architecture dependent declarations in utility.hpp and add
math/tostring helpers
2024-03-24 21:27:58 -06:00
Myles Busig
0cf2b2f45e Rename armv4t math macro file 2024-03-24 21:26:43 -06:00
Myles Busig
998e3adf4d Add armv4t assembly optimized division and modulo by 10 2024-03-24 00:30:56 -06:00
Myles Busig
8e58ff710d Add exceptions
Can't use std::exception because it dynamically allocates memory. This
implementation doesn't allocate memory, but also doesn't allow leaving
an exception message.
2024-03-13 00:36:58 -06:00
Myles Busig
72a6bbe584 Remove istring::append with template 2024-03-07 21:49:55 -07:00
Myles Busig
63284206a2 Remove istring::push_back / istring::pop_back 2024-03-07 21:41:15 -07:00
Myles Busig
cf90307a1f Implement istring comparison operators
Not thoroughly tested.
2024-03-07 21:29:44 -07:00
Myles Busig
b6746d7ac0 Remove iterators from string and string_view
Iterators could probably be implemented efficiently, but it is not a
priority at the moment. They are removed for the time being.
2024-03-07 19:38:00 -07:00
Myles Busig
ca8aae6c66 Change istring to use string_view for the majority of its operations
The istring and string_view operators have identical implementations. By
changing the istring operators to cast to string_view and use that
implementation instead, the number of redundant implementations is
reduced. This does incurr a small performance penalty, around 15 cycles
when tested on the MGBA Gameboy Advance emulator (uses an armv7tdmi).
When compared to the time operations take, the performance difference is
negligible. Ex. An insertion with two 8 character strings takes around
450 cycles.
2024-03-07 16:28:18 -07:00
Myles Busig
8d8ceb0456 Document istring::insert 2024-03-07 16:09:32 -07:00
Myles Busig
cb4f9d2861 Implement string::copy and string_view::copy 2024-03-07 15:57:29 -07:00
Myles Busig
674371a66d Change string_view to use char_traits instead of custom strlen 2024-03-07 15:55:00 -07:00
Myles Busig
fefdce4e41 Fix incorrect memcpy 2024-03-07 14:44:17 -07:00
Myles Busig
7bfc38d978 Change strings to use string_view instead of const char*
Because the length of a string_view is computed at compile time, it is
faster for simple copies.
2024-03-07 14:25:39 -07:00
Myles Busig
99bb7d4b6e Add initial string_view implementation 2024-03-07 14:24:10 -07:00
Myles Busig
f0dfd29692 Fix incorrect function name in fixed.hpp 2024-03-06 23:49:40 -07:00
Myles Busig
6f74f94aee Add initial fixed point number implementation 2024-03-06 23:42:48 -07:00
Myles Busig
1d42c106e0 Add initial finite state machine implementation 2024-03-06 23:02:00 -07:00
Myles Busig
29aa5bdc5b Add cmake files and initial memcpy/string implementation 2024-03-04 20:44:58 -07:00