summaryrefslogtreecommitdiffhomepage
path: root/include/stc/cmap.h
AgeCommit message (Collapse)Author
2022-12-19Renames:Tyge Løvset
cstr_null => cstr_NULL csview_null => csview_NULL cstr_npos => c_NPOS csview_npos => c_NPOS c_ARGsv(sv) => c_ARGSV(sv) c_init(x) => c_INIT(x)
2022-11-22Fixes of -Wconversion warnings (not examples).Tyge Løvset
2022-11-14Internal update.Tyge Løvset
2022-11-13Reverted forward declaration from c_declare_X back to c_forward_X, and the ↵Tyge Løvset
flag "i_opt c_declared" to "i_opt c_is_forward". Sorry about this, but hopefully not a widely used feature for most yet.
2022-11-05Added possibility to have per container-instance customizable compare/lookup ↵Tyge Løvset
functions (cmp, less, eq, hash) for priority queue and associative containers. Is achived by embedding the container in a struct along with function pointer(s) which can be accessed through the c_container_of() macro. See the updated cpque.c example in the examples folder.
2022-11-03Made cmap i_max_load_factor a compile time template parameter instead of ↵Tyge Løvset
runtime. Enables cmap to be NULL initialized. Currently only cvec/cdeq and csmap cannot be NULL initialized, but eventually they will.
2022-11-03Renamed forward_CONTAINER(...) => declare_CONTAINER(...),Tyge Løvset
and c_is_fwd => c_declared, for the i_opt option define.
2022-10-28Renamed semi-internal macro (used for c++ compability) c_make => c_init.Tyge Løvset
2022-10-20Fixed some inconsistencies, and a minor bug in cmap.Tyge Løvset
2022-09-24Removed deprecated c_forarray, c_autovar, c_autoscope, c_autodefer.Tyge Løvset
Finalized and improved loops.
2022-08-17reverted parts of last commit. No need to specify .end var in cmap_X_end() func.Tyge Løvset
2022-08-17Fix cmap_X_end() function.Tyge Løvset
2022-08-13Experimental: Renamed c_autovar => c_with, c_autoscope => c_scope, ↵Tyge Løvset
c_autodefer => c_defer. May or may not be reverted before V4.0 release.
2022-08-11Renamed all iter members ._end to .end, to make them "public".Tyge Lovset
2022-08-10Fixed cdeq, cvec, cmap and cstack: iterators .ref is now NULL when it is ↵Tyge Løvset
end(). clist and csmap/cset already has this property.
2022-08-09Experiment with other type of iterator. Does not compile.Tyge Løvset
2022-08-08Fixed const mistake.Tyge Løvset
2022-07-31Changed cmap struct internal rep. so that load-factor is first: useful for ↵Tyge Løvset
global initialization of maps. This changes ABI, but so far STC has no stable ABI guarantees.
2022-07-15cmap: No longer uses c_umul128. If `i_size` is defined by user, table is ↵Tyge Lovset
power of 2 length and bit-masking used for mapping hash to index.
2022-07-06Version 3.7. Make sure to check NEWS/Changes in README.md for a few ↵Tyge Løvset
code-breaking API changes.
2022-06-10Revert last.Tyge Løvset
2022-06-10Small simplifications in cmap.hTyge Løvset
2022-06-01Converted all files with DOS line endings to LINUX.Tyge Løvset
2022-05-29Internal: Changed using i_keyraw to using _cx_raw or _cx_rawkey typedefs: ↵Tyge Lovset
avoids problem when i_keyraw is pointer.
2022-05-13constness and code formatting.Tyge Lovset
2022-05-11minor cleanup cmapTyge Løvset
2022-05-07Updated alt/csmap.h to be synced with current csmap.h; alt-version allocates ↵Tyge Løvset
each node separately on the heap, regular uses an array. Now alt-version of csmap and cstr can be used by defining -DSTC_CSMAP_V1 and -DSTC_CSTR_V1 when compiling. Improved code readability by making line breaks after if and while (also cmap.h). Note, the alt-versions may be removed in the future, but the alt csmap.h may be made into an intrusive sorted map, where the creation and destruction of nodes must be done by the user.
2022-05-01- Array expansions (insert, reserve, clone) are now checked for malloc ↵Tyge Lovset
nomem, and result can be checked by user in cvec, cdeq, cmap, csmap (cvec/cdeq insert functions now returns pointer, not iter). - Refactoring.
2022-04-29cmap/csmap cleanup incl. docs.Tyge Løvset
2022-04-28_i_implement moved to user-level template parameter as i_implement. Removed ↵Tyge Løvset
i_opt flag c_implement. Removed OLD include/alt/clist.h
2022-04-25Removed size argument to `i_hash` template parameter and `c_default_hash`. ↵Tyge Løvset
This was a "design error", and is not worth keeping for backward compability. Please update your code where you use i_hash template parameter (simply remove second argument).
2022-04-23Integrated (and removed) c_hash32 and c_hash64 into c_default_hash, which is ↵Tyge Løvset
improved. Added i_key_ssv and i_val_ssv (cstr with csview as raw-type).
2022-04-22Changed API for c*map_X_push() to take a entry pair (c*map_X_value) argument ↵Tyge Løvset
instead of key + val.
2022-04-22Readded push()/emplace() to all containers missing them. Made _hash function ↵Tyge Løvset
required for i_key_bind, _eq is derived from _cmp.
2022-04-21Switched to use i_key as primary template type parameter for all containers. ↵Tyge Løvset
Only maps will actually use i_val. Users can still specify i_val for non-maps, so there are no usability changes, other than the option to use i_key always, which makes the implementation and switching between container types simpler.
2022-04-20Support for cloning containers with carc and cbox.Tyge Lovset
Disabled emplace methods for containers with carc and cbox.
2022-04-19Added #error/warnings for likely missing definitions of i_hash/i_cmp.Tyge Løvset
2022-04-18Renamed newly added map function put_r() to put_raw() - alias for ↵Tyge Lovset
emplace_or_assign() for symetri with insert_or_assign()/put(). Experimental, may be removed.
2022-04-16Added at_mut() to some containers. Added put_r() to cmap, csmap as alias for ↵Tyge Løvset
emplace_or_assign().
2022-04-15Adding comment to #endif's.Tyge Løvset
2022-04-15Updated README.md docs on template args! Reverted to put() as alias for ↵Tyge Løvset
insert_or_assign() for maps. Reverted/added push_back()/emplace_back()/pop_back() to cstack.
2022-04-10Parenthesized args in calls to i_keyfrom(c), i_keyto(p) i_valfrom(c), ↵Tyge Løvset
i_valto(p), and i_keydrop(p) - can be defined as macro without parenthesized args.
2022-04-10Parenthesized args in calls to i_cmp(x, y), i_eq(x, y) and i_hash(x, len) - ↵Tyge Løvset
can be defined as macro without parenthesized args.
2022-04-10Parenthesized calls to i_drop(x) - can be defined as macro without ↵Tyge Løvset
parenthesis around arg.
2022-04-09- Switched from .._put() to .._push() as the "generic" method to add ↵Tyge Løvset
element to any container. - Changed clist_X_insert()/emplace() to clist_X_insert_at()/emplace_at() to make it consistent with cvec/cdeq. - Updated documentation.
2022-04-09Universally added a put() function to all containers.Tyge Løvset
2022-04-07Partly reverted (auto defined _i_no_emplace): emplace functions only ↵Tyge Løvset
available when either i_valraw or i_keyraw was defined. Avoids potensial bugs.
2022-04-02Internal refactoring/macro rename.Tyge Lovset
2022-04-01Simplified internal logic on enabling default cloningTyge Løvset
2022-03-24Misc. small internal API renaming/refactoring and additions.Tyge Løvset