From 1a4223837d4e34a085f00e323759ee5f9cd81bd3 Mon Sep 17 00:00:00 2001 From: Tyge Løvset Date: Sat, 9 Apr 2022 00:14:50 +0200 Subject: Universally added a put() function to all containers. --- docs/clist_api.md | 1 + docs/cpque_api.md | 1 + docs/cqueue_api.md | 1 + docs/cset_api.md | 17 +++++++++-------- docs/csmap_api.md | 2 +- docs/csset_api.md | 5 +++-- docs/cstack_api.md | 4 +--- docs/cvec_api.md | 3 +-- include/stc/cdeq.h | 2 ++ include/stc/clist.h | 2 ++ include/stc/cmap.h | 11 ++++++----- include/stc/cpque.h | 3 +++ include/stc/csmap.h | 10 ++++++---- include/stc/cstack.h | 6 +----- include/stc/cvec.h | 4 +--- 15 files changed, 39 insertions(+), 33 deletions(-) diff --git a/docs/clist_api.md b/docs/clist_api.md index 8f907eca..bbb17796 100644 --- a/docs/clist_api.md +++ b/docs/clist_api.md @@ -55,6 +55,7 @@ void clist_X_emplace_front(clist_X* self, i_valraw raw); void clist_X_pop_front(clist_X* self); void clist_X_push_back(clist_X* self, i_val value); // note: no pop_back(). +void clist_X_put(clist_X* self, i_val value); // alias for push_back(). void clist_X_emplace_back(clist_X* self, i_valraw raw); clist_X_iter clist_X_insert(clist_X* self, clist_X_iter it, i_val value); // return iter to new elem diff --git a/docs/cpque_api.md b/docs/cpque_api.md index 97ac70f5..055d2065 100644 --- a/docs/cpque_api.md +++ b/docs/cpque_api.md @@ -42,6 +42,7 @@ i_val* cpque_X_top(const cpque_X* self); void cpque_X_make_heap(cpque_X* self); // heapify the vector. void cpque_X_push(cpque_X* self, i_val value); +void cpque_X_put(cpque_X* self, i_val value); // alias for push() void cpque_X_emplace(cpque_X* self, i_valraw raw); // converts from raw void cpque_X_pop(cpque_X* self); diff --git a/docs/cqueue_api.md b/docs/cqueue_api.md index 0ecae014..75105928 100644 --- a/docs/cqueue_api.md +++ b/docs/cqueue_api.md @@ -35,6 +35,7 @@ cqueue_X_value* cqueue_X_front(const cqueue_X* self); cqueue_X_value* cqueue_X_back(const cqueue_X* self); cqueue_X_value* cqueue_X_push(cqueue_X* self, i_val value); +cqueue_X_value* cqueue_X_put(cqueue_X* self, i_val value); // alias for push() cqueue_X_value* cqueue_X_emplace(cqueue_X* self, i_valraw raw); void cqueue_X_pop(cqueue_X* self); diff --git a/docs/cset_api.md b/docs/cset_api.md index b5f8073b..56c2669c 100644 --- a/docs/cset_api.md +++ b/docs/cset_api.md @@ -29,27 +29,28 @@ cset_X cset_X_clone(cset_x set); void cset_X_clear(cset_X* self); void cset_X_copy(cset_X* self, cset_X other); -void cset_X_max_load_factor(cset_X* self, float max_load); // default: 0.85 +void cset_X_max_load_factor(cset_X* self, float max_load); // default: 0.85 bool cset_X_reserve(cset_X* self, size_t size); void cset_X_shrink_to_fit(cset_X* self); void cset_X_swap(cset_X* a, cset_X* b); -void cset_X_drop(cset_X* self); // destructor +void cset_X_drop(cset_X* self); // destructor -size_t cset_X_size(cset_X set); // num. of allocated buckets -size_t cset_X_capacity(cset_X set); // buckets * max_load_factor +size_t cset_X_size(cset_X set); // num. of allocated buckets +size_t cset_X_capacity(cset_X set); // buckets * max_load_factor bool cset_X_empty(cset_X set); size_t cset_X_bucket_count(cset_X set); bool cset_X_contains(const cset_X* self, i_keyraw rkey); -const cset_X_value* cset_X_get(const cset_X* self, i_keyraw rkey); // return NULL if not found -cset_X_value* cset_X_get_mut(cset_X* self, i_keyraw rkey); // mutable get +const cset_X_value* cset_X_get(const cset_X* self, i_keyraw rkey); // return NULL if not found +cset_X_value* cset_X_get_mut(cset_X* self, i_keyraw rkey); // mutable get cset_X_iter cset_X_find(const cset_X* self, i_keyraw rkey); cset_X_result cset_X_insert(cset_X* self, i_key key); +cset_X_result cset_X_put(cset_X* self, i_key key); // alias for insert() cset_X_result cset_X_emplace(cset_X* self, i_keyraw rkey); -size_t cset_X_erase(cset_X* self, i_keyraw rkey); // return 0 or 1 -cset_X_iter cset_X_erase_at(cset_X* self, cset_X_iter it); // return iter after it +size_t cset_X_erase(cset_X* self, i_keyraw rkey); // return 0 or 1 +cset_X_iter cset_X_erase_at(cset_X* self, cset_X_iter it); // return iter after it void cset_X_erase_entry(cset_X* self, cset_X_value* entry); cset_X_iter cset_X_begin(const cset_X* self); diff --git a/docs/csmap_api.md b/docs/csmap_api.md index 964046b1..e6f5515c 100644 --- a/docs/csmap_api.md +++ b/docs/csmap_api.md @@ -62,7 +62,7 @@ csmap_X_value* csmap_X_back(const csmap_X* self); csmap_X_result csmap_X_insert(csmap_X* self, i_key key, i_val mapped); // no change if key in map csmap_X_result csmap_X_insert_or_assign(csmap_X* self, i_key key, i_val mapped); // always update mapped -csmap_X_result csmap_X_put(csmap_X* self, i_key key, i_val mapped); // same as insert_or_assign() +csmap_X_result csmap_X_put(csmap_X* self, i_key key, i_val mapped); // alias for insert_or_assign() csmap_X_result csmap_X_emplace(csmap_X* self, i_keyraw rkey, i_valraw rmapped); // no change if rkey in map csmap_X_result csmap_X_emplace_or_assign(csmap_X* self, i_keyraw rkey, i_valraw rmapped); // always update rmapped diff --git a/docs/csset_api.md b/docs/csset_api.md index 5a33c70c..0329a9df 100644 --- a/docs/csset_api.md +++ b/docs/csset_api.md @@ -42,11 +42,12 @@ csset_X_value* csset_X_find_it(const csset_X* self, i_keyraw rkey, csset_X csset_X_iter csset_X_lower_bound(const csset_X* self, i_keyraw rkey); // find closest entry >= rkey csset_X_result csset_X_insert(csset_X* self, i_key key); +csset_X_result csset_X_put(csset_X* self, i_key key); // alias for insert() csset_X_result csset_X_emplace(csset_X* self, i_keyraw rkey); size_t csset_X_erase(csset_X* self, i_keyraw rkey); -csset_X_iter csset_X_erase_at(csset_X* self, csset_X_iter it); // return iter after it -csset_X_iter csset_X_erase_range(csset_X* self, csset_X_iter it1, csset_X_iter it2); // return updated it2 +csset_X_iter csset_X_erase_at(csset_X* self, csset_X_iter it); // return iter after it +csset_X_iter csset_X_erase_range(csset_X* self, csset_X_iter it1, csset_X_iter it2); // return updated it2 csset_X_iter csset_X_begin(const csset_X* self); csset_X_iter csset_X_end(const csset_X* self); diff --git a/docs/cstack_api.md b/docs/cstack_api.md index 417e8d80..e6348489 100644 --- a/docs/cstack_api.md +++ b/docs/cstack_api.md @@ -41,12 +41,10 @@ i_val* cstack_X_top(const cstack_X* self); const i_val* cstack_X_at(const cstack_X* self, size_t idx); i_val* cstack_X_push(cstack_X* self, i_val value); -i_val* cstack_X_push_back(cstack_X* self, i_val value); // same as push +i_val* cstack_X_put(cstack_X* self, i_val value); // alias for push i_val* cstack_X_emplace(cstack_X* self, i_valraw raw); -i_val* cstack_X_emplace_back(cstack_X* self, i_valraw raw); // same as emplace void cstack_X_pop(cstack_X* self); -void cstack_X_pop_back(cstack_X* self); // same as pop cstack_X_iter cstack_X_begin(const cstack_X* self); cstack_X_iter cstack_X_end(const cstack_X* self); diff --git a/docs/cvec_api.md b/docs/cvec_api.md index c1d46f6d..a1ac6a4f 100644 --- a/docs/cvec_api.md +++ b/docs/cvec_api.md @@ -61,8 +61,7 @@ cvec_X_value* cvec_X_back(const cvec_X* self); cvec_X_value* cvec_X_emplace_back(cvec_X* self, i_valraw raw); cvec_X_value* cvec_X_push_back(cvec_X* self, i_val value); void cvec_X_pop_back(cvec_X* self); -cvec_X_value* cvec_X_emplace(cvec_X* self, i_valraw raw); // alias for emplace_back -cvec_X_value* cvec_X_push(cvec_X* self, i_val value); // alias for push_back +cvec_X_value* cvec_X_put(cvec_X* self, i_val value); // alias for push_back void cvec_X_pop(cvec_X* self); // alias for pop_back cvec_X_iter cvec_X_insert(cvec_X* self, size_t idx, i_val value); // move value diff --git a/include/stc/cdeq.h b/include/stc/cdeq.h index 93e181c4..e9df8898 100644 --- a/include/stc/cdeq.h +++ b/include/stc/cdeq.h @@ -88,6 +88,8 @@ STC_INLINE void _cx_memb(_swap)(_cx_self* a, _cx_self* b) {c_swap(_cx_se STC_INLINE i_val _cx_memb(_value_fromraw)(i_valraw raw) { return i_valfrom(raw); } STC_INLINE i_valraw _cx_memb(_value_toraw)(_cx_value* pval) { return i_valto(pval); } +STC_INLINE _cx_value* _cx_memb(_put)(_cx_self* self, i_val value) + { return _cx_memb(_push_back)(self, value); } STC_INLINE void _cx_memb(_pop_front)(_cx_self* self) { i_valdrop(self->data); ++self->data; --cdeq_rep_(self)->size; } STC_INLINE _cx_value* _cx_memb(_back)(const _cx_self* self) diff --git a/include/stc/clist.h b/include/stc/clist.h index 5591c93a..54eb6801 100644 --- a/include/stc/clist.h +++ b/include/stc/clist.h @@ -125,6 +125,8 @@ STC_INLINE _cx_iter _cx_memb(_emplace)(_cx_self* self, _cx_iter it, i_valraw #endif #endif +STC_INLINE _cx_value* _cx_memb(_put)(_cx_self* self, i_val value) + { return _cx_memb(_push_back)(self, value); } STC_INLINE _cx_self _cx_memb(_init)(void) { return c_make(_cx_self){NULL}; } STC_INLINE bool _cx_memb(_reserve)(_cx_self* self, size_t n) { return true; } STC_INLINE bool _cx_memb(_empty)(_cx_self cx) { return cx.last == NULL; } diff --git a/include/stc/cmap.h b/include/stc/cmap.h index a8e23da5..6fb3974d 100644 --- a/include/stc/cmap.h +++ b/include/stc/cmap.h @@ -117,11 +117,6 @@ STC_INLINE bool _cx_memb(_contains)(const _cx_self* self, i_keyraw rkey) #endif STC_API _cx_result _cx_memb(_insert_or_assign)(_cx_self* self, i_key _key, i_val _mapped); - STC_INLINE _cx_result /* short-form, like operator[]: */ - _cx_memb(_put)(_cx_self* self, i_key key, i_val mapped) { - return _cx_memb(_insert_or_assign)(self, key, mapped); - } - STC_INLINE const _cx_mapped* _cx_memb(_at)(const _cx_self* self, i_keyraw rkey) { chash_bucket_t b = _cx_memb(_bucket_)(self, &rkey); @@ -175,6 +170,12 @@ _cx_memb(_insert)(_cx_self* self, i_key _key _i_MAP_ONLY(, i_val _mapped)) { return _res; } +STC_INLINE _cx_result +_cx_memb(_put)(_cx_self* self, i_key _key _i_MAP_ONLY(, i_val _mapped)) { + return _i_SET_ONLY( _cx_memb(_insert)(self, _key) ) + _i_MAP_ONLY( _cx_memb(_insert_or_assign)(self, _key, _mapped) ); +} + STC_INLINE _cx_iter _cx_memb(_find)(const _cx_self* self, i_keyraw rkey) { _cx_size idx; diff --git a/include/stc/cpque.h b/include/stc/cpque.h index 3fa561ed..c30d1f8b 100644 --- a/include/stc/cpque.h +++ b/include/stc/cpque.h @@ -42,6 +42,9 @@ STC_API void _cx_memb(_make_heap)(_cx_self* self); STC_API void _cx_memb(_erase_at)(_cx_self* self, size_t idx); STC_API void _cx_memb(_push)(_cx_self* self, _cx_value value); +STC_INLINE void _cx_memb(_put)(_cx_self* self, _cx_value value) + { _cx_memb(_push)(self, value); } + STC_INLINE _cx_self _cx_memb(_init)(void) { return c_make(_cx_self){NULL}; } diff --git a/include/stc/csmap.h b/include/stc/csmap.h index ea9e1984..a040203b 100644 --- a/include/stc/csmap.h +++ b/include/stc/csmap.h @@ -163,15 +163,17 @@ _cx_memb(_value_drop)(_cx_value* val) { #endif STC_API _cx_result _cx_memb(_insert_or_assign)(_cx_self* self, i_key key, i_val mapped); - STC_INLINE _cx_result - _cx_memb(_put)(_cx_self* self, i_key key, i_val mapped) - { return _cx_memb(_insert_or_assign)(self, key, mapped); } - STC_INLINE const _cx_mapped* _cx_memb(_at)(const _cx_self* self, i_keyraw rkey) { _cx_iter it; return &_cx_memb(_find_it)(self, rkey, &it)->second; } #endif +STC_INLINE _cx_result +_cx_memb(_put)(_cx_self* self, i_key _key _i_MAP_ONLY(, i_val _mapped)) { + return _i_SET_ONLY( _cx_memb(_insert)(self, _key) ) + _i_MAP_ONLY( _cx_memb(_insert_or_assign)(self, _key, _mapped) ); +} + STC_INLINE _cx_iter _cx_memb(_find)(const _cx_self* self, i_keyraw rkey) { _cx_iter it; diff --git a/include/stc/cstack.h b/include/stc/cstack.h index bbf4613b..76103139 100644 --- a/include/stc/cstack.h +++ b/include/stc/cstack.h @@ -87,13 +87,11 @@ STC_INLINE _cx_value* _cx_memb(_push)(_cx_self* self, _cx_value val) { _cx_value* vp = self->data + self->size++; *vp = val; return vp; } -STC_INLINE _cx_value* _cx_memb(_push_back)(_cx_self* self, _cx_value val) +STC_INLINE _cx_value* _cx_memb(_put)(_cx_self* self, _cx_value val) { return _cx_memb(_push)(self, val); } STC_INLINE void _cx_memb(_pop)(_cx_self* self) { _cx_value* p = &self->data[--self->size]; i_valdrop(p); } -STC_INLINE void _cx_memb(_pop_back)(_cx_self* self) - { _cx_memb(_pop)(self); } STC_INLINE const _cx_value* _cx_memb(_at)(const _cx_self* self, size_t idx) { assert(idx < self->size); return self->data + idx; } @@ -102,8 +100,6 @@ STC_INLINE const _cx_value* _cx_memb(_at)(const _cx_self* self, size_t idx) #if !defined _i_no_emplace STC_INLINE _cx_value* _cx_memb(_emplace)(_cx_self* self, _cx_raw raw) { return _cx_memb(_push)(self, i_valfrom(raw)); } -STC_INLINE _cx_value* _cx_memb(_emplace_back)(_cx_self* self, _cx_raw raw) - { return _cx_memb(_push)(self, i_valfrom(raw)); } #endif STC_INLINE _cx_self _cx_memb(_clone)(_cx_self v) { _cx_self out = {(_cx_value *) c_malloc(v.size*sizeof(_cx_value)), v.size, v.size}; diff --git a/include/stc/cvec.h b/include/stc/cvec.h index 1990b15d..34e830ba 100644 --- a/include/stc/cvec.h +++ b/include/stc/cvec.h @@ -109,8 +109,6 @@ STC_API _cx_iter _cx_memb(_emplace_range_p)(_cx_self* self, _cx_value* po const _cx_raw* p1, const _cx_raw* p2); STC_INLINE _cx_value* _cx_memb(_emplace_back)(_cx_self* self, i_valraw raw) { return _cx_memb(_push_back)(self, i_valfrom(raw)); } -STC_INLINE _cx_value* _cx_memb(_emplace)(_cx_self* self, i_valraw raw) - { return _cx_memb(_push_back)(self, i_valfrom(raw)); } STC_INLINE _cx_iter _cx_memb(_emplace_n)(_cx_self* self, const size_t idx, const _cx_raw arr[], const size_t n) { return _cx_memb(_emplace_range_p)(self, self->data + idx, arr, arr + n); @@ -134,7 +132,7 @@ STC_INLINE void _cx_memb(_swap)(_cx_self* a, _cx_self* b) { c_swap(_cx_s STC_INLINE _cx_value* _cx_memb(_front)(const _cx_self* self) { return self->data; } STC_INLINE _cx_value* _cx_memb(_back)(const _cx_self* self) { return self->data + cvec_rep_(self)->size - 1; } -STC_INLINE _cx_value* _cx_memb(_push)(_cx_self* self, i_val value) +STC_INLINE _cx_value* _cx_memb(_put)(_cx_self* self, i_val value) { return _cx_memb(_push_back)(self, value); } STC_INLINE void _cx_memb(_pop_back)(_cx_self* self) { _cx_value* p = &self->data[--cvec_rep_(self)->size]; i_valdrop(p); } -- cgit v1.2.3