diff options
| author | Tyge Løvset <[email protected]> | 2022-04-22 12:20:31 +0200 |
|---|---|---|
| committer | Tyge Løvset <[email protected]> | 2022-04-22 12:20:31 +0200 |
| commit | 8f57f3d331de4cb4aa7d06862c2de3424eb1ba5b (patch) | |
| tree | 1a730578475e4d6e260948578cd0c2a5fd4463f4 /include | |
| parent | 182099800f230f876fb46dac9f1f49a4fe3c3981 (diff) | |
| download | STC-modified-8f57f3d331de4cb4aa7d06862c2de3424eb1ba5b.tar.gz STC-modified-8f57f3d331de4cb4aa7d06862c2de3424eb1ba5b.zip | |
Readded push()/emplace() to all containers missing them. Made _hash function required for i_key_bind, _eq is derived from _cmp.
Diffstat (limited to 'include')
| -rw-r--r-- | include/stc/cdeq.h | 15 | ||||
| -rw-r--r-- | include/stc/clist.h | 4 | ||||
| -rw-r--r-- | include/stc/cmap.h | 11 | ||||
| -rw-r--r-- | include/stc/cqueue.h | 4 | ||||
| -rw-r--r-- | include/stc/csmap.h | 12 | ||||
| -rw-r--r-- | include/stc/template.h | 5 |
6 files changed, 26 insertions, 25 deletions
diff --git a/include/stc/cdeq.h b/include/stc/cdeq.h index 7d6c0254..2c0df8c3 100644 --- a/include/stc/cdeq.h +++ b/include/stc/cdeq.h @@ -46,7 +46,7 @@ STC_API _cx_self _cx_memb(_with_capacity)(const size_t n); STC_API bool _cx_memb(_reserve)(_cx_self* self, const size_t n);
STC_API void _cx_memb(_clear)(_cx_self* self);
STC_API void _cx_memb(_drop)(_cx_self* self);
-STC_API _cx_value* _cx_memb(_push_back)(_cx_self* self, i_key value);
+STC_API _cx_value* _cx_memb(_push)(_cx_self* self, i_key value);
STC_API void _cx_memb(_shrink_to_fit)(_cx_self *self);
#if !defined _i_queue
#if !defined _i_no_clone
@@ -71,8 +71,8 @@ STC_API _cx_iter _cx_memb(_insert_range_p)(_cx_self* self, _cx_value* pos #if !defined _i_no_clone
STC_API _cx_self _cx_memb(_clone)(_cx_self cx);
#if !defined _i_no_emplace
-STC_INLINE _cx_value* _cx_memb(_emplace_back)(_cx_self* self, i_keyraw raw)
- { return _cx_memb(_push_back)(self, i_keyfrom(raw)); }
+STC_INLINE _cx_value* _cx_memb(_emplace)(_cx_self* self, i_keyraw raw)
+ { return _cx_memb(_push)(self, i_keyfrom(raw)); }
#endif
STC_INLINE i_key _cx_memb(_value_clone)(i_key val)
{ return i_keyclone(val); }
@@ -115,6 +115,9 @@ STC_INLINE _cx_value* _cx_memb(_at_mut)(_cx_self* self, const size_t idx) { assert(idx < cdeq_rep_(self)->size); return self->data + idx;
}
+STC_INLINE _cx_value* _cx_memb(_push_back)(_cx_self* self, i_key value) {
+ return _cx_memb(_push)(self, value);
+}
STC_INLINE _cx_iter
_cx_memb(_insert)(_cx_self* self, const size_t idx, i_key value) {
return _cx_memb(_insert_range_p)(self, self->data + idx, &value, &value + 1);
@@ -151,6 +154,10 @@ STC_INLINE _cx_value* _cx_memb(_emplace_front)(_cx_self* self, i_keyraw raw) { return _cx_memb(_push_front)(self, i_keyfrom(raw));
}
+STC_INLINE _cx_value* _cx_memb(_emplace_back)(_cx_self* self, i_keyraw raw) {
+ return _cx_memb(_push)(self, i_keyfrom(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);
@@ -287,7 +294,7 @@ _cx_memb(_reserve)(_cx_self* self, const size_t n) { }
STC_DEF _cx_value*
-_cx_memb(_push_back)(_cx_self* self, i_key value) {
+_cx_memb(_push)(_cx_self* self, i_key value) {
struct cdeq_rep* r = cdeq_rep_(self);
if (_cdeq_nfront(self) + r->size == r->cap) {
_cx_memb(_expand_right_half_)(self, r->size, 1);
diff --git a/include/stc/clist.h b/include/stc/clist.h index 8247b04a..33aa6feb 100644 --- a/include/stc/clist.h +++ b/include/stc/clist.h @@ -122,6 +122,8 @@ STC_INLINE _cx_value* _cx_memb(_emplace_front)(_cx_self* self, i_keyraw raw) { return _cx_memb(_push_front)(self, i_keyfrom(raw)); }
STC_INLINE _cx_iter _cx_memb(_emplace_at)(_cx_self* self, _cx_iter it, i_keyraw raw)
{ return _cx_memb(_insert_at)(self, it, i_keyfrom(raw)); }
+STC_INLINE _cx_value* _cx_memb(_emplace)(_cx_self* self, i_keyraw raw)
+ { return _cx_memb(_push_back)(self, i_keyfrom(raw)); }
#endif // !_i_no_emplace
#endif // !_i_no_clone
@@ -131,6 +133,8 @@ STC_INLINE bool _cx_memb(_empty)(_cx_self cx) { return cx.last == NULL; STC_INLINE size_t _cx_memb(_count)(_cx_self cx)
{ return _clist_count((const clist_VOID*) &cx); }
STC_INLINE void _cx_memb(_clear)(_cx_self* self) { _cx_memb(_drop)(self); }
+STC_INLINE _cx_value* _cx_memb(_push)(_cx_self* self, i_key value)
+ { return _cx_memb(_push_back)(self, value); }
STC_INLINE void _cx_memb(_pop_front)(_cx_self* self)
{ _cx_memb(_erase_after_)(self, self->last); }
STC_INLINE _cx_value* _cx_memb(_front)(const _cx_self* self) { return &self->last->next->value; }
diff --git a/include/stc/cmap.h b/include/stc/cmap.h index c5172f3b..16041094 100644 --- a/include/stc/cmap.h +++ b/include/stc/cmap.h @@ -118,14 +118,8 @@ STC_INLINE bool _cx_memb(_contains)(const _cx_self* self, i_keyraw rkey) STC_API _cx_result _cx_memb(_insert_or_assign)(_cx_self* self, i_key _key, i_val _mapped);
#if !defined _i_no_clone && !defined _i_no_emplace
STC_API _cx_result _cx_memb(_emplace_or_assign)(_cx_self* self, i_keyraw rkey, i_valraw rmapped);
- STC_INLINE _cx_result _cx_memb(_put_raw)(_cx_self* self, i_keyraw rkey, i_valraw rmapped)
- { return _cx_memb(_emplace_or_assign)(self, rkey, rmapped); } // alias
#endif
- 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) {
chash_bucket_t b = _cx_memb(_bucket_)(self, &rkey);
@@ -183,6 +177,11 @@ _cx_memb(_insert)(_cx_self* self, i_key _key _i_MAP_ONLY(, i_val _mapped)) { return _res;
}
+STC_INLINE _cx_result
+_cx_memb(_push)(_cx_self* self, i_key _key _i_MAP_ONLY(, i_val _mapped)) {
+ return _cx_memb(_insert)(self, _key _i_MAP_ONLY(, _mapped));
+}
+
STC_INLINE _cx_iter
_cx_memb(_find)(const _cx_self* self, i_keyraw rkey) {
_cx_size idx;
diff --git a/include/stc/cqueue.h b/include/stc/cqueue.h index b07582e0..920f8eac 100644 --- a/include/stc/cqueue.h +++ b/include/stc/cqueue.h @@ -57,13 +57,9 @@ int main() { #define _i_prefix cqueue_
#endif
#define _i_queue
-#define _push_back _push
-#define _emplace_back _emplace
#define _pop_front _pop
#include "cdeq.h"
-#undef _push_back
-#undef _emplace_back
#undef _pop_front
#undef _i_queue
diff --git a/include/stc/csmap.h b/include/stc/csmap.h index eba9a591..700aa4c2 100644 --- a/include/stc/csmap.h +++ b/include/stc/csmap.h @@ -159,15 +159,8 @@ _cx_memb(_value_drop)(_cx_value* val) { #ifndef _i_isset
#if !defined _i_no_clone && !defined _i_no_emplace
STC_API _cx_result _cx_memb(_emplace_or_assign)(_cx_self* self, i_keyraw rkey, i_valraw rmapped);
- STC_INLINE _cx_result
- _cx_memb(_put_raw)(_cx_self* self, i_keyraw rkey, i_valraw rmapped)
- { return _cx_memb(_emplace_or_assign)(self, rkey, rmapped); } // alias
#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)
@@ -177,6 +170,11 @@ _cx_memb(_value_drop)(_cx_value* val) { { _cx_iter it; return &_cx_memb(_find_it)(self, rkey, &it)->second; }
#endif // !_i_isset
+STC_INLINE _cx_result
+_cx_memb(_push)(_cx_self* self, i_key _key _i_MAP_ONLY(, i_val _mapped)) {
+ return _cx_memb(_insert)(self, _key _i_MAP_ONLY(, _mapped));
+}
+
STC_INLINE _cx_iter
_cx_memb(_find)(const _cx_self* self, i_keyraw rkey) {
_cx_iter it;
diff --git a/include/stc/template.h b/include/stc/template.h index f614cd58..d47b06ec 100644 --- a/include/stc/template.h +++ b/include/stc/template.h @@ -123,10 +123,7 @@ #ifndef i_cmp
#define i_cmp c_paste(i_keyraw, _cmp)
#endif
- #if !defined i_eq && (defined _i_ishash || c_option(c_eq))
- #define i_eq c_paste(i_keyraw, _eq)
- #endif
- #if !defined i_hash && (defined _i_ishash || c_option(c_hash))
+ #if !defined i_hash
#define i_hash c_paste(i_keyraw, _hash)
#endif
#endif
|
