summaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorTyge Løvset <[email protected]>2021-05-22 15:20:32 +0200
committerTyge Løvset <[email protected]>2021-05-22 15:20:32 +0200
commit7472580ee0159d7164bf2a219c292cd060b904a2 (patch)
tree51c3ef11078dbf09ad78d7af07d24c3e4eed375f /include
parent24f6e33a161b70f549d2c436dd1fc2b4c705273a (diff)
downloadSTC-modified-7472580ee0159d7164bf2a219c292cd060b904a2.tar.gz
STC-modified-7472580ee0159d7164bf2a219c292cd060b904a2.zip
Added *_value_toraw() methods to base containers.
Diffstat (limited to 'include')
-rw-r--r--include/stc/cdeq.h1
-rw-r--r--include/stc/clist.h4
-rw-r--r--include/stc/cmap.h6
-rw-r--r--include/stc/csmap.h5
-rw-r--r--include/stc/cvec.h5
5 files changed, 17 insertions, 4 deletions
diff --git a/include/stc/cdeq.h b/include/stc/cdeq.h
index 990c556a..ee0d1c2c 100644
--- a/include/stc/cdeq.h
+++ b/include/stc/cdeq.h
@@ -75,6 +75,7 @@ struct cdeq_rep { size_t size, cap; void* base[]; };
STC_INLINE size_t CX##_capacity(CX cx) {return _cdeq_rep(&cx)->cap;} \
STC_INLINE void CX##_swap(CX* a, CX* b) {c_swap(CX, *a, *b);} \
STC_INLINE Value CX##_value_fromraw(RawValue raw) {return valueFromRaw(raw);} \
+ STC_INLINE RawValue CX##_value_toraw(CX##_value_t* pval) {return valueToRaw(pval);} \
STC_INLINE Value CX##_value_clone(Value val) \
{return valueFromRaw(valueToRaw(&val));} \
STC_INLINE void CX##_emplace_back(CX* self, RawValue raw) \
diff --git a/include/stc/clist.h b/include/stc/clist.h
index 8e23a43e..55ab5bf0 100644
--- a/include/stc/clist.h
+++ b/include/stc/clist.h
@@ -120,10 +120,10 @@ STC_API size_t _clist_count(const clist_VOID* self);
STC_INLINE size_t CX##_count(CX cx) \
{return _clist_count((const clist_VOID*) &cx);} \
STC_INLINE void CX##_clear(CX* self) {CX##_del(self);} \
+ STC_INLINE Value CX##_value_fromraw(RawValue raw) {return valueFromRaw(raw);} \
+ STC_INLINE RawValue CX##_value_toraw(CX##_value_t* pval) {return valueToRaw(pval);} \
STC_INLINE Value CX##_value_clone(Value val) \
{return valueFromRaw(valueToRaw(&val));} \
- STC_INLINE Value CX##_value_fromraw(RawValue raw) \
- {return valueFromRaw(raw);} \
STC_INLINE void CX##_pop_front(CX* self) \
{CX##_erase_after_(self, self->last);} \
STC_INLINE CX##_iter_t CX##_erase(CX* self, CX##_iter_t it) \
diff --git a/include/stc/cmap.h b/include/stc/cmap.h
index 937da0af..efa1ddb9 100644
--- a/include/stc/cmap.h
+++ b/include/stc/cmap.h
@@ -209,6 +209,12 @@ STC_INLINE uint64_t c_default_hash64(const void* data, size_t ignored)
MAP_ONLY_##C( _dst->second = mappedFromRaw(mappedToRaw(&_val->second)); ) \
} \
\
+ STC_INLINE CX##_rawvalue_t \
+ CX##_value_toraw(CX##_value_t* val) { \
+ return SET_ONLY_##C( keyToRaw(val) ) \
+ MAP_ONLY_##C( c_make(CX##_rawvalue_t){keyToRaw(&val->first), mappedToRaw(&val->second)} ); \
+ } \
+\
STC_INLINE void \
CX##_value_del(CX##_value_t* _val) { \
keyDel((CX##_key_t*) KEY_REF_##C(_val)); \
diff --git a/include/stc/csmap.h b/include/stc/csmap.h
index 4a57ee33..91cf3d11 100644
--- a/include/stc/csmap.h
+++ b/include/stc/csmap.h
@@ -206,6 +206,11 @@ struct csmap_rep { size_t root, disp, head, size, cap; void* nodes[]; };
return tree; \
} \
\
+ STC_INLINE CX##_rawvalue_t \
+ CX##_value_toraw(CX##_value_t* val) { \
+ return SET_ONLY_##C( keyToRaw(val) ) \
+ MAP_ONLY_##C( c_make(CX##_rawvalue_t){keyToRaw(&val->first), mappedToRaw(&val->second)} ); \
+ } \
STC_INLINE void \
CX##_value_del(CX##_value_t* val) { \
keyDel((CX##_key_t*) KEY_REF_##C(val)); \
diff --git a/include/stc/cvec.h b/include/stc/cvec.h
index dc090dae..e4feaf8a 100644
--- a/include/stc/cvec.h
+++ b/include/stc/cvec.h
@@ -75,6 +75,9 @@ struct cvec_rep { size_t size, cap; void* data[]; };
STC_INLINE size_t CX##_capacity(CX cx) { return _cvec_rep(&cx)->cap; } \
STC_INLINE bool CX##_empty(CX cx) {return !_cvec_rep(&cx)->size;} \
STC_INLINE Value CX##_value_fromraw(RawValue raw) {return valueFromRaw(raw);} \
+ STC_INLINE RawValue CX##_value_toraw(CX##_value_t* val) {return valueToRaw(val);} \
+ STC_INLINE Value CX##_value_clone(CX##_value_t val) \
+ {return valueFromRaw(valueToRaw(&val));} \
STC_INLINE void CX##_swap(CX* a, CX* b) {c_swap(CX, *a, *b);} \
STC_INLINE CX##_value_t*CX##_front(const CX* self) {return self->data;} \
STC_INLINE CX##_value_t*CX##_back(const CX* self) \
@@ -83,8 +86,6 @@ struct cvec_rep { size_t size, cap; void* data[]; };
{CX##_push_back(self, valueFromRaw(raw));} \
STC_INLINE void CX##_pop_back(CX* self) \
{valueDel(&self->data[--_cvec_rep(self)->size]);} \
- STC_INLINE Value CX##_value_clone(CX##_value_t val) \
- {return valueFromRaw(valueToRaw(&val));} \
STC_INLINE CX##_iter_t CX##_begin(const CX* self) \
{return c_make(CX##_iter_t){self->data};} \
STC_INLINE CX##_iter_t CX##_end(const CX* self) \