Commit Graph

68 Commits

Author SHA1 Message Date
23aba2a27f core: add bstr data structure
bstr is very similar to b_stringstream, with the key difference being it can be
stack-allocated. this allows you to write a complex formatted string to a
stack-allocated character buffer with no heap memory allocation required.
bstr also supports automatically-managed dynamic string buffers for unbounded
string construction.
2026-02-03 14:34:58 +00:00
bdcd4163c7 core: stringstream: added read-support
any characters written to a stringstream can be optionally read back again
using the b_stream read API.

this functions similar to a ringbuffer, with two key differences:
 1) the buffer is not circular, and will continuously expand to accomodate all incoming data.
 2) reading data from the stringstream does not remove it from the buffer.
2026-02-03 14:33:06 +00:00
add05ef478 core: iterator: added inline definition of is_valid() 2026-02-03 14:32:15 +00:00
68ab79fe2a core: hash: add support for hashing the contents of ropes 2026-02-03 14:31:35 +00:00
ce9195c130 core: queue: implement moving queue entries
this works exactly the same as moving btree nodes.
2026-02-03 14:30:53 +00:00
837a42e249 core: btree: implement moving btree nodes
moving a btree node is similar to simply using memmove() or memcpy(), with the added
bonus of updating the pointers in the wider data structure to the new node memory
and zeroing the old node memory so that it isn't used accidentally after the move
is complete.
2026-02-03 14:28:58 +00:00
6b65727535 core: error: rename b_error_release to b_error_discard 2025-11-04 10:03:10 +00:00
493b9ec4a4 core: iterator: implement const iterators 2025-11-01 09:58:18 +00:00
144c3a4c68 core: error: clean up includes and formatting 2025-10-29 14:32:19 +00:00
1e4b5bc4e6 core: btree: replace legacy iterator interface 2025-10-29 14:30:33 +00:00
c2b894ef22 core: queue: replace legacy iterator interface 2025-10-29 14:29:05 +00:00
009b6c6292 core: iterator: re-design b_iterator as a b_object interface 2025-10-29 13:52:27 +00:00
b58015baff core: type: check if a class tries to implement an interface it doesn't extend or inherit 2025-10-28 15:17:50 +00:00
5b090c72c7 core: stream: change read/write buffer type from unsigned char* to void* 2025-10-28 15:14:57 +00:00
2687477cb2 core: ringbuffer: update from simple struct to a b_object type 2025-10-28 15:14:09 +00:00
5f2bbc7151 core: class: add functions to get a registered class, and get the name of a class 2025-10-28 15:11:54 +00:00
75e9291da3 core: error: update header include guard 2025-10-25 19:36:25 +01:00
a429e76721 core: stream: add utf-8 awareness to b_stream interface
b_stream can now read/write utf-8 encoded data, and will do so unless
the stream is in binary mode.

b_stream will also report an error it encounters invalid utf-8 data
(unless binary mode is enabled).
2025-10-25 00:02:33 +01:00
f6f49faf97 core: encoding: add utf-8 functions from b_string to b_wchar interface 2025-10-25 00:02:15 +01:00
a5762e537b core: stringstream: convert to a b_object type inheriting from b_stream 2025-10-24 12:32:54 +01:00
fd4f60e37f core: stream: convert to a b_object interface and base class 2025-10-24 12:32:16 +01:00
8840971d83 core: object: add more virtual function dispatch macros 2025-10-24 12:31:51 +01:00
ed105307c7 core: type: fix registration of types that extend something other than b_object 2025-10-24 12:29:24 +01:00
36b624849c core: object: add functions to retrieve multiple parts of an object at once 2025-10-24 12:28:50 +01:00
ab1c2b370d core: object: implement rvalue object support 2025-10-19 20:58:32 +01:00
d5bd8fa32a core: stream: add a second generic pointer to b_stream 2025-10-19 10:22:35 +01:00
c389e32dc6 core: add B_NPOS definition 2025-10-19 10:22:11 +01:00
379bd048b2 core: object: make interface query functions const; remove type parameters 2025-10-19 10:21:43 +01:00
e1e4544b67 core: macros: fix bad return type on unref() function template 2025-10-18 21:54:34 +01:00
4044961478 core: rename b_retain/b_release to b_object_ref/b_object_unref 2025-10-18 21:51:51 +01:00
503dc56328 core: add macros for performing non-virtual class method dispatch 2025-10-18 21:41:40 +01:00
a0b7b5b85b core: remove type parameter from object interface query functions 2025-10-18 21:06:20 +01:00
06add543bf Merge branch 'main' into feature/new-object-system 2025-10-15 11:13:00 +01:00
9d2ebfce2e core: move new object system to core module
this will allow a wider range of data structures (e.g. b_error, b_stream, b_stringstream) to make use
of the new object system, and other modules and library users can use the object system without
depending on the blue-object or blue-ds modules.

blue-ds will become a simple library of data structures (string, hashmap, etc), built on top of the
core object system.
2025-10-15 10:38:18 +01:00
4ab524a66b core: hash: rename b_hash_string to avoid conflict with b_string 2025-09-22 10:31:30 +01:00
072903f896 core: error: fix b_error_caused_by_code calling an undefined function 2025-09-22 10:29:48 +01:00
0a2a1c695a core: error: add function to test if an error has a particular vendor/code 2025-09-22 10:29:01 +01:00
db3d1e3183 core: add a type to store unicode characters, as well as functions to query them 2025-09-22 10:28:03 +01:00
3f2558cac3 core: add B_BTREE_INIT macro 2025-08-16 16:00:33 +01:00
2c15d5cd45 core: add new object related status codes 2025-08-16 16:00:04 +01:00
a5e3e06306 core: add basic mutex and per-thread data support 2025-08-09 19:49:06 +01:00
ed8e51ed5e core: bitop: add atomic compare-exchange 2025-08-09 19:48:01 +01:00
67392d12e6 core: stream: replaced cached cursor counter with a tell() function callback 2025-07-31 11:13:40 +01:00
2f874ff11a core: ringbuffer: make open_read_buffer pointer parameter const-correct 2025-07-30 18:24:45 +01:00
b5c07c2390 core: stream: make b_stream_write_bytes buffer pointer const 2025-07-30 18:23:33 +01:00
514b9f1c5f core: stream: add function to open a b_stream from a FILE pointer 2025-07-30 17:49:56 +01:00
f94cff5eef core: add error reporting api 2025-07-28 22:16:26 +01:00
3f96be28ed core: add format with va_list function to stringstream 2025-07-28 22:14:34 +01:00
5bac4db7ed core: add ringbuffer data structure 2025-07-28 22:13:41 +01:00
722a22a0e0 core: stringstream: update stringstream to support b_stream 2025-06-27 21:42:53 +01:00