diff options
| author | Tyge Løvset <[email protected]> | 2021-10-06 16:08:08 +0200 |
|---|---|---|
| committer | Tyge Løvset <[email protected]> | 2021-10-06 16:08:08 +0200 |
| commit | 435fd25e5c74aea72eb20f4007977183cdbe0919 (patch) | |
| tree | 58606c15052b37d27858ea6f707df8b2edf34a49 | |
| parent | 0fa5220d8d7cddbb668d02045ebd36709ba0bc6f (diff) | |
| download | STC-modified-435fd25e5c74aea72eb20f4007977183cdbe0919.tar.gz STC-modified-435fd25e5c74aea72eb20f4007977183cdbe0919.zip | |
Some while to for changed. Return value for cstack_X_push/emplace. Docs updated.
| -rw-r--r-- | docs/cdeq_api.md | 8 | ||||
| -rw-r--r-- | docs/cqueue_api.md | 44 | ||||
| -rw-r--r-- | docs/cstack_api.md | 36 | ||||
| -rw-r--r-- | docs/cvec_api.md | 4 | ||||
| -rw-r--r-- | include/stc/cdeq.h | 6 | ||||
| -rw-r--r-- | include/stc/cstack.h | 9 | ||||
| -rw-r--r-- | include/stc/cvec.h | 6 |
7 files changed, 57 insertions, 56 deletions
diff --git a/docs/cdeq_api.md b/docs/cdeq_api.md index 26a6bbff..90a44293 100644 --- a/docs/cdeq_api.md +++ b/docs/cdeq_api.md @@ -42,12 +42,12 @@ cdeq_X_value_t* cdeq_X_at(const cdeq_X* self, size_t idx); cdeq_X_value_t* cdeq_X_front(const cdeq_X* self); cdeq_X_value_t* cdeq_X_back(const cdeq_X* self); -void cdeq_X_push_front(cdeq_X* self, i_val value); -void cdeq_X_emplace_front(cdeq_X* self, i_valraw raw); +cdeq_X_value_t* cdeq_X_push_front(cdeq_X* self, i_val value); +cdeq_X_value_t* cdeq_X_emplace_front(cdeq_X* self, i_valraw raw); void cdeq_X_pop_front(cdeq_X* self); -void cdeq_X_push_back(cdeq_X* self, i_val value); -void cdeq_X_emplace_back(cdeq_X* self, i_valraw raw); +cdeq_X_value_t* cdeq_X_push_back(cdeq_X* self, i_val value); +cdeq_X_value_t* cdeq_X_emplace_back(cdeq_X* self, i_valraw raw); void cdeq_X_pop_back(cdeq_X* self); cdeq_X_iter_t cdeq_X_insert(cdeq_X* self, size_t idx, i_val value); // move value diff --git a/docs/cqueue_api.md b/docs/cqueue_api.md index 76c189e5..087f9da5 100644 --- a/docs/cqueue_api.md +++ b/docs/cqueue_api.md @@ -22,38 +22,38 @@ See the c++ class [std::queue](https://en.cppreference.com/w/cpp/container/queue ## Methods ```c -cqueue_X cqueue_X_init(void); -cqueue_X cqueue_X_clone(cqueue_X q); +cqueue_X cqueue_X_init(void); +cqueue_X cqueue_X_clone(cqueue_X q); -void cqueue_X_clear(cqueue_X* self); -void cqueue_X_copy(cqueue_X* self, cqueue_X other); -void cqueue_X_del(cqueue_X* self); // destructor +void cqueue_X_clear(cqueue_X* self); +void cqueue_X_copy(cqueue_X* self, cqueue_X other); +void cqueue_X_del(cqueue_X* self); // destructor -size_t cqueue_X_size(cqueue_X q); -bool cqueue_X_empty(cqueue_X q); -cqueue_X_value_t* cqueue_X_front(const cqueue_X* self); -cqueue_X_value_t* cqueue_X_back(const cqueue_X* self); +size_t cqueue_X_size(cqueue_X q); +bool cqueue_X_empty(cqueue_X q); +cqueue_X_value_t* cqueue_X_front(const cqueue_X* self); +cqueue_X_value_t* cqueue_X_back(const cqueue_X* self); -void cqueue_X_push(cqueue_X* self, cqueue_X_value_t value); -void cqueue_X_emplace(cqueue_X* self, cqueue_X_rawvalue_t raw); +cqueue_X_value_t* cqueue_X_push(cqueue_X* self, i_val value); +cqueue_X_value_t* cqueue_X_emplace(cqueue_X* self, i_valraw raw); -void cqueue_X_pop(cqueue_X* self); +void cqueue_X_pop(cqueue_X* self); -cqueue_X_iter_t cqueue_X_begin(const cqueue_X* self); -cqueue_X_iter_t cqueue_X_end(const cqueue_X* self); -void cqueue_X_next(cqueue_X_iter_t* it); +cqueue_X_iter_t cqueue_X_begin(const cqueue_X* self); +cqueue_X_iter_t cqueue_X_end(const cqueue_X* self); +void cqueue_X_next(cqueue_X_iter_t* it); -cqueue_X_value_t cqueue_X_value_clone(cqueue_X_value_t val); +i_val cqueue_X_value_clone(i_val value); ``` ## Types -| Type name | Type definition | Used to represent... | -|:----------------------|:---------------------------------------|:-------------------------| -| `cqueue_X` | Same as `cdeq_X` type | The cqueue type | -| `cqueue_X_value_t` | " | The cqueue element type | -| `cqueue_X_rawvalue_t` | " | cqueue raw value type | -| `cqueue_X_iter_t` | " | cqueue iterator | +| Type name | Type definition | Used to represent... | +|:----------------------|:---------------------|:-------------------------| +| `cqueue_X` | `cdeq_X` | The cqueue type | +| `cqueue_X_value_t` | `i_val` | The cqueue element type | +| `cqueue_X_rawvalue_t` | `i_valraw` | cqueue raw value type | +| `cqueue_X_iter_t` | `cdeq_X_iter_t` | cqueue iterator | ## Examples ```c diff --git a/docs/cstack_api.md b/docs/cstack_api.md index 31f6ade7..5b878ba4 100644 --- a/docs/cstack_api.md +++ b/docs/cstack_api.md @@ -22,30 +22,30 @@ See the c++ class [std::stack](https://en.cppreference.com/w/cpp/container/stack ## Methods ```c -cstack_X cstack_X_init(void); -cstack_X cstack_X_clone(cstack_X st); +cstack_X cstack_X_init(void); +cstack_X cstack_X_clone(cstack_X st); -void cstack_X_clear(cstack_X* self); -void cstack_X_reserve(cstack_X* self, size_t n); -void cstack_X_shrink_to_fit(cstack_X* self); -void cstack_X_copy(cstack_X* self, cstack_X other); -void cstack_X_del(cstack_X* self); // destructor +void cstack_X_clear(cstack_X* self); +void cstack_X_reserve(cstack_X* self, size_t n); +void cstack_X_shrink_to_fit(cstack_X* self); +void cstack_X_copy(cstack_X* self, cstack_X other); +void cstack_X_del(cstack_X* self); // destructor -size_t cstack_X_size(cstack_X st); -bool cstack_X_empty(cstack_X st); -cstack_X_value_t* cstack_X_top(const cstack_X* self); +size_t cstack_X_size(cstack_X st); +bool cstack_X_empty(cstack_X st); +cstack_X_value_t* cstack_X_top(const cstack_X* self); -void cstack_X_push(cstack_X* self, cstack_X_value_t value); -void cstack_X_emplace(cstack_X* self, cstack_X_rawvalue_t raw); +cstack_X_value_t* cstack_X_push(cstack_X* self, i_val value); +cstack_X_value_t* cstack_X_emplace(cstack_X* self, i_valraw raw); -void cstack_X_pop(cstack_X* self); +void cstack_X_pop(cstack_X* self); -cstack_X_iter_t cstack_X_begin(const cstack_X* self); -cstack_X_iter_t cstack_X_end(const cstack_X* self); -void cstack_X_next(cstack_X_iter_t* it); +cstack_X_iter_t cstack_X_begin(const cstack_X* self); +cstack_X_iter_t cstack_X_end(const cstack_X* self); +void cstack_X_next(cstack_X_iter_t* it); -cstack_X_rawvalue_t cstack_X_value_toraw(cvec_X_value_t* pval); -cstack_X_value_t cstack_X_value_clone(cstack_X_value_t val); +i_valraw cstack_X_value_toraw(cvec_X_value_t* pval); +i_val cstack_X_value_clone(i_val value); ``` ## Types diff --git a/docs/cvec_api.md b/docs/cvec_api.md index 549bce2a..3a78bf58 100644 --- a/docs/cvec_api.md +++ b/docs/cvec_api.md @@ -49,8 +49,8 @@ cvec_X_value_t* cvec_X_at(const cvec_X* self, size_t idx); cvec_X_value_t* cvec_X_front(const cvec_X* self); cvec_X_value_t* cvec_X_back(const cvec_X* self); -void cvec_X_push_back(cvec_X* self, i_val value); -void cvec_X_emplace_back(cvec_X* self, i_valraw raw); +cvec_X_value_t* cvec_X_push_back(cvec_X* self, i_val value); +cvec_X_value_t* cvec_X_emplace_back(cvec_X* self, i_valraw raw); void cvec_X_pop_back(cvec_X* self); cvec_X_iter_t 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 f31000db..01590f47 100644 --- a/include/stc/cdeq.h +++ b/include/stc/cdeq.h @@ -319,7 +319,7 @@ cx_memb(_insert_range_p)(Self* self, cx_value_t* pos, const cx_value_t* p1, const cx_value_t* p2, bool clone) {
pos = cx_memb(_insert_space_)(self, pos, p2 - p1);
cx_iter_t it = {pos};
- if (clone) while (p1 != p2) { *pos++ = i_valfrom(i_valto(p1)); ++p1; }
+ if (clone) for (; p1 != p2; ++p1) *pos++ = i_valfrom(i_valto(p1));
else memcpy(pos, p1, (p2 - p1)*sizeof *p1);
return it;
}
@@ -328,7 +328,7 @@ STC_DEF cx_iter_t cx_memb(_emplace_range_p)(Self* self, cx_value_t* pos, const cx_rawvalue_t* p1, const cx_rawvalue_t* p2) {
pos = cx_memb(_insert_space_)(self, pos, p2 - p1);
cx_iter_t it = {pos};
- while (p1 != p2) { *pos++ = i_valfrom(*p1); ++p1; }
+ for (; p1 != p2; ++p1) *pos++ = i_valfrom(*p1);
return it;
}
@@ -337,7 +337,7 @@ cx_memb(_erase_range_p)(Self* self, cx_value_t* p1, cx_value_t* p2) { size_t n = p2 - p1;
if (n > 0) {
cx_value_t* p = p1, *end = self->data + cdeq_rep_(self)->size;
- while (p != p2) { i_valdel(p); ++p; }
+ for (; p != p2; ++p) i_valdel(p);
if (p1 == self->data) self->data += n;
else memmove(p1, p2, (end - p2) * sizeof(i_val));
cdeq_rep_(self)->size -= n;
diff --git a/include/stc/cstack.h b/include/stc/cstack.h index 7bc0f3fb..00d99fa1 100644 --- a/include/stc/cstack.h +++ b/include/stc/cstack.h @@ -83,13 +83,14 @@ STC_INLINE void cx_memb(_reserve)(Self* self, size_t n) { STC_INLINE void cx_memb(_shrink_to_fit)(Self* self)
{ cx_memb(_reserve)(self, self->size); }
-STC_INLINE void cx_memb(_push)(Self* self, cx_value_t val) {
+STC_INLINE cx_value_t* cx_memb(_push)(Self* self, cx_value_t val) {
if (self->size == self->capacity) cx_memb(_reserve)(self, self->size*3/2 + 4);
- self->data[ self->size++ ] = val;
+ cx_value_t* vp = self->data + self->size++;
+ *vp = val; return vp;
}
-STC_INLINE void cx_memb(_emplace)(Self* self, cx_rawvalue_t raw)
- { cx_memb(_push)(self, i_valfrom(raw)); }
+STC_INLINE cx_value_t* cx_memb(_emplace)(Self* self, cx_rawvalue_t raw)
+ { return cx_memb(_push)(self, i_valfrom(raw)); }
STC_INLINE Self cx_memb(_clone)(Self v) {
Self out = {(cx_value_t *) c_malloc(v.size*sizeof(cx_value_t)), v.size, v.size};
diff --git a/include/stc/cvec.h b/include/stc/cvec.h index 745411fc..c6dcb147 100644 --- a/include/stc/cvec.h +++ b/include/stc/cvec.h @@ -309,7 +309,7 @@ cx_memb(_insert_range_p)(Self* self, cx_value_t* pos, const cx_value_t* p1, const cx_value_t* p2, bool clone) {
pos = cx_memb(_insert_space_)(self, pos, p2 - p1);
cx_iter_t it = {pos};
- if (clone) while (p1 != p2) { *pos++ = i_valfrom(i_valto(p1)); ++p1; }
+ if (clone) for (; p1 != p2; ++p1) *pos++ = i_valfrom(i_valto(p1));
else memcpy(pos, p1, (p2 - p1)*sizeof *p1);
return it;
}
@@ -319,7 +319,7 @@ cx_memb(_emplace_range_p)(Self* self, cx_value_t* pos, const cx_rawvalue_t* p1, const cx_rawvalue_t* p2) {
pos = cx_memb(_insert_space_)(self, pos, p2 - p1);
cx_iter_t it = {pos};
- while (p1 != p2) { *pos++ = i_valfrom(*p1); ++p1; }
+ for (; p1 != p2; ++p1) *pos++ = i_valfrom(*p1);
return it;
}
@@ -328,7 +328,7 @@ cx_memb(_erase_range_p)(Self* self, cx_value_t* p1, cx_value_t* p2) { intptr_t len = p2 - p1;
if (len > 0) {
cx_value_t* p = p1, *end = self->data + cvec_rep_(self)->size;
- while (p != p2) { i_valdel(p); ++p; }
+ for (; p != p2; ++p) i_valdel(p);
memmove(p1, p2, (end - p2) * sizeof(i_val));
cvec_rep_(self)->size -= len;
}
|
