summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorTyge Løvset <[email protected]>2021-10-06 16:08:08 +0200
committerTyge Løvset <[email protected]>2021-10-06 16:08:08 +0200
commit435fd25e5c74aea72eb20f4007977183cdbe0919 (patch)
tree58606c15052b37d27858ea6f707df8b2edf34a49
parent0fa5220d8d7cddbb668d02045ebd36709ba0bc6f (diff)
downloadSTC-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.md8
-rw-r--r--docs/cqueue_api.md44
-rw-r--r--docs/cstack_api.md36
-rw-r--r--docs/cvec_api.md4
-rw-r--r--include/stc/cdeq.h6
-rw-r--r--include/stc/cstack.h9
-rw-r--r--include/stc/cvec.h6
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;
}