-
add missing sort functions to mulle-structarray
-
changed
mulle_structarray_cmp_t
signature -
clarified that insert now only returns 0 or 1 (if applicable)
-
register now always returns the registered value
feat: improve CMake packaging and dependency handling
-
Add CMake package configuration support
- Add mulle-container-config.cmake.in template
- Add version information in config header
- Support proper package version compatibility checks
- Enable namespace exports for targets
-
Enhance dependency management
- Add
COLLECT_DEPENDENCY_LIBRARIES_AS_NAMES
mode - Improve library name collection for dependencies
- Support both system and local library finding
- Preserve dependency order in library list
- Add
-
Build system improvements
- Use
CMAKE_CURRENT_SOURCE_DIR
for better subdir support - Add tree command to development tools
- Fix Windows compatibility issues
- Improve header installation handling
- Use
-
Documentation updates
- Clarify installation instructions
- Rename "Manual Installation" to "Legacy Installation"
- Update README formatting
-
BREAKING after a longer research i now settled on
size_t
as the index and capacity for the datastructures. So fromuintptr_t
to unsigned int now tosize_t.
I really don't want my own unsigned<whatevr>
define in here and also not NSUInteger which must beuintptr_t
-
BREAKING
_INIT
macros are now called_DATA
for overall consistency with other mulle libraries -
There are now a lot but not enough
_default
init functions, whre you don't even need to pass in an allocatore, for even more convenience -
BREAKING
mulle_flexarray
is now superflous and replaced bymulle_alloca.
just remove the third parameter -
add
mulle_structarray_pop
function -
added update functions to hashtables/maps besides insert and set
- changed type for
sizeof_type
in create routines tosize_t
- add lots more convenience functions that were missing like for example
mulle_array_find
_mulle_structarray_set
added (not sure if these array set functions won't all be renamed toset_at_index)
- BREAKING CHANGES renamed a lot of functions that were named "search" to "find" as they werent binary searches
- fixed rarely if ever used "shrink" code of various containers
- added
mulle__pointermap_remove
- add a lot of functions to
mulle__array_add
for completeness - rename
_mulle__pointerarray_absorb
to_mulle__pointerarray_absorb_array
to be more inline with other two array functions - add sorting to
_mulle_pointerarray
and_mulle__structarray
- add
mulle__assoc_create,
mulle_assoc_find
andmulle_assoc_find_in_range,
which where missing - BREAKING
insert_value_forkeys
functions are now renamed toinsert_key_values
and the order of keys and values is reversed, which is technically better, because now you don't need two NULLs to terminate the arguments, but just one - The
copy_items
functions no longer return an error code - the struct queue and array gain a new field
"copy_sizeof_struct"
so that there should be no reading off to much memory on input now, which could conceivably page fault when alignment is needed to expand the items - BREAKING the function
_mulle__pointermap_describe
has been removed as it was unused - added mulle-pointerset more or less for the convenience of writing test code for mulle--pointerset-generic
- BREAKING
mulle_uniquepointerarray
is now completely superflous and was removed as mulle-pointerset exists now - added
_do
convenience temporary constructors to most if not all containers - added
mulle__pointermap_find_by_value
- add sort routines to pointerarray and array
- add structqueue as an alternative to structarray
- BREAKINK CHANGE
mulle_flexarray
now also defines the<type>
*name argument and you don't have to assign the return value of alloc anymore to it. This makes it easier to work with, especially if you are mostly usingmulle_flexarray_do
and only sometimes need more control mulle__pointerarray
gains zeroing functions. This allows random access to a pointer array, so that the unused portions are filled up with zeroes. This is not sparse though!- finally there is a
_mulle__structarray_set_count
to explicitly grow or shrink a struct array - BREAKING CHANGE
_mulle__assoc_set
has been renamed to__mulle_assoc_set_at_index
- if your
mulle_assoc
isintptr_t
key base, you can now easily remap or move key ranges sometimes even without the need for memory coyping - new function
_mulle_pointerpair_bsearch_or_less
- callback
mulle_container_keycallback_intptr_is_equal
is now actually its own function, to be able to discern it when inspecting a callback - mulle-qsort added as
qsort_r
is not cross-platform and I want to support it for bsearch - added mulle-assoc an associative array as an alternative to mulle-map
- remove package.json as it conflicts with clib.json
- the various "empty" structs are now just defines, which produces better code
mulle__rangeset
can now be intialized with static storage_mulle__rangeset_get
added- BREAKING
_mulle__rangeset_search
renamed to_mulle__rangeset_search_location
- make empty const structs #defined for { 0}, not really API breaking IMO, but will give problems if you do
&mulle__pointersetenumerator_empty
(but why would you ? - more dumbing down of perfectly fine code for adversarial compiler writers
- add clib.json to project
- GLOBAL declaration changes for Windows
- added function
mulle_structarray_get_first
- added function
mulle_structarray_get_current
- added function
mulle_structarray_get_allocator
- added function
mulle_structarray_reset
- new function
mulle_array_copy
for completeness - new function
mulle_set_add_set
for completeness - new function
mulle_map_add_map
for completeness mulle_array_create
gets a capacity parameter, to make it more similiar tomulle_map_create
andmulle_set_create
_mulle__pointermapenumerator_next_pair
now returns the pair as other pair enumerator functions do, at the expense of a larger enumerator- fixed
mulle_array
to also respect 'notakey' - added
mulle_array_remove
function - added
MULLE_CONTAINER_EXTERN_GLOBAL
to some functions - fix
notakey
sometimes not being used but NULL instead - add
mulle_map_init
andmulle_map_done
struct mulle_range
andmulle_not_found_e
moved to mulle-data- continued to unify enumerators to return value by reference and state by int return value
- added more convenience functions to structarray and pointerarray
- removed allocator from function signatures of
mulle_pointerarray_guarantee
andmulle_pointerarray_grow
which was superflous - added
mulle_pointerarray_advance
- renamed all
*_remove_last
functions to*_pop
- there is now a
mulle_pointerqueue
that complements themulle__pointerqueue
without the embedded allocator
- still flip/flopping on the index type. Started with
uintpr_t`,` then moved to
size_t`` and nowunsigned int
. Don't want to typedef this though. See dox/DATATYPES.md for this. - moved prime and hash code to new project mulle-data
- removed some stub documentation, that now does more harm than good
- added verb modifiers to the function naming style doc
- added
describe
for debugging guarantee
now returns a non-null pointer on success- new range get methods like
_mulle__array_get_in_range
for example compact
as a verb is no more, usesize_to_fit
- enumerators now nil the by reference item when they are exhausted
- redid all enumerators, so that they are uniformly returning the value by reference
- made the capabilities of the various data structures more orthogonal to each other, but there is still some functions lacking
- There is no more notakey functionality in the arrays
- Improved README with nice pictures
- redid mulle-set it is now based on a mulle--pointerset, similar to mulle-array
- mulle--pointers have no notakey and mulle-pointerarray has notakey
- add mulle--pointerset and mulle--pointerarray
- added
_mulle__map_count_collisions
- add mulle-structarray
- Various small improvements
- moved nonnull stuff to mulle-c11, fixed up container functions with
MULLE_C_NONNULL
declarations - renamed incomplete datastructures from
_mulle_<name>
tomulle__<name>
. Functions that are checking for null parameters and those that don't can now be discerned properly. - renamed
mulle_pointermap
to_mulle_pointermap
because it contains no allocator - added shrinking to map and set for the benefit of enumeration
- fixed range so that ranges with 0 length are always contained f.e
- added mulle-pointermap
- add
mulle_range
and_mulle_rangeset
to project - move some common code to mulle-container-math.h
- don't necessarily make the given capacity a power of two to conserve space
- removed mulle-bigmap and mulle-bigset, which are currently unused but now buggy due to recent changes in mulle-map and mulle-set
- rewrote
_mulle_set
and_mulle_map
for improved performance - rewrote
_mulle_map
to internally use a different memory layout, which in theory should be better for the cpu cache - small maps get will be preceeded by a quick scan for pointer equality, which can speed up things considerably
- Improved the container callback functions with a few typedefs.
- Fixed bugs in
_mulle-pointerqueue
- Added
mulle_pointerarray_enumerate_nil,
for when you know that notakey is nil. It allows passing in a nil array for enumeration
- Improved the container callback functions with a few typedefs.
- Fixed bugs in
_mulle-pointerqueue
- Added
mulle_pointerarray_enumerate_nil,
for when you know that notakey is nil. It allows passing in a nil array for enumeration
- added
mulle_pointerarray_create
- renamed
mulle_pointerarray_enumerator
tomulle_pointerarrayenumerator
- added empty enumerator structs
- renamed and redid
_mulle_queue
as_mulle_pointerqueue
- modernized to mulle-sde with .mulle folder
- use memmove in strategic places
- fix travis
- upgrade to newest mulle-sde
- hide farmhash headers
- use latest instead of mulle-c
- fix cityhash-info remnant
- less verbose travis
- migrated to farmhash and got rid of the painful configure step
- fix for mingw, update project
- modernized mulle-sde
- set -std=c99 for everybody
- fix corrupted environment
- Various small improvements
- Various small improvements
- fix travis.yml
- fix travis
- migrated to mulle-sde
- made headernames hyphenated
- no longer distributed as a homebrew package
- Various small improvements
- support new mulle-tests
- fixed scion wrapper command
- follow mulle-configuration 3.1 changes and move .travis.yml to trusty
- adapt to mulle-configuration 2.0
- make it a cmake "C" project
- drastic API change _keys_and_values functions have been replaced by values_for_keys functions that reflect the parameter order. sorry
- community version
- merge in community version
- fix CMakeList.txt
- improve README
- merge in community version changes
- fixes for community version
- documentation, documentation, documentation
- move mulle-buffer into own library, because it really is quite different
- adapt to mulle-alloctor 2.0
- fix crass bug of misplaced pointer hash function
- remove some warnings
- ensure it's C99 compatible
- weaned off
<unistd.h>
, lostoff_t
in the process though, might come to regret this.
- don't malloc a block on extract, if there is nothing in the buffer
- moved the hexdumper here, because I want to reuse it
- upgrade mulle_allocator
- rename
_mulle__buffer_add_string_with_length
to_mulle__buffer_add_string_with_maxlength
and fix the assert - added mulle_pointerpairarray
- renamed keyvaluepair to pointerpair
- Fix problems with notakey being different than 0
- make buffer growth work as intended
- Moved the allocator out of the callback, since that clashes with the use in MulleObjCFoundation.
- Adapted to new mulle_allocator version.