From b06500c3920ae7ec56489d4dfe05f6a33af85a31 Mon Sep 17 00:00:00 2001 From: Tyge Løvset Date: Wed, 20 Apr 2022 11:51:00 +0200 Subject: Final carc / cbox cleanup. --- docs/carc_api.md | 2 +- docs/cbox_api.md | 2 +- include/stc/carc.h | 6 ++++-- include/stc/cbox.h | 8 ++++---- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/docs/carc_api.md b/docs/carc_api.md index cc5b3f41..90aec0ed 100644 --- a/docs/carc_api.md +++ b/docs/carc_api.md @@ -32,7 +32,7 @@ See similar c++ class [std::shared_ptr](https://en.cppreference.com/w/cpp/memory ## Methods ```c carc_X carc_X_init(); // empty shared pointer -carc_X carc_X_make(i_valraw raw); // construct owned value from raw type +carc_X carc_X_make(i_valraw raw); // create owned value from raw type, if defined. carc_X carc_X_from(i_val val); // create new heap allocated object. Take ownership of val. carc_X carc_X_from_ptr(i_val* p); // create a carc from raw pointer. Takes ownership of p. diff --git a/docs/cbox_api.md b/docs/cbox_api.md index 556c56df..a4e88801 100644 --- a/docs/cbox_api.md +++ b/docs/cbox_api.md @@ -31,7 +31,7 @@ compare the pointer addresses when used. Additionally, `c_no_clone` or `i_is_fwd ## Methods ```c cbox_X cbox_X_init(); // return an empty cbox -cbox_X cbox_X_make(i_valraw raw); // create owned value from raw type. +cbox_X cbox_X_make(i_valraw raw); // create owned value from raw type, if defined. cbox_X cbox_X_from(i_val val); // allocate new heap object with val. Take ownership of val. cbox_X cbox_X_from_ptr(i_val* p); // create a cbox from a pointer. Takes ownership of p. diff --git a/include/stc/carc.h b/include/stc/carc.h index a061a606..7f9c4390 100644 --- a/include/stc/carc.h +++ b/include/stc/carc.h @@ -143,8 +143,10 @@ _cx_memb(_reset_from)(_cx_self* self, i_val val) { *self = _cx_memb(_from)(val); } -STC_INLINE _cx_self -_cx_memb(_make)(_cx_raw raw) { return _cx_memb(_from)(i_valfrom(raw)); } +#if !defined _i_no_clone + STC_INLINE _cx_self + _cx_memb(_make)(_cx_raw raw) { return _cx_memb(_from)(i_valfrom(raw)); } +#endif // !_i_no_clone // does not use i_valfrom, so we can bypass c_no_clone STC_INLINE _cx_self diff --git a/include/stc/cbox.h b/include/stc/cbox.h index 690c8a7f..c2ecbae4 100644 --- a/include/stc/cbox.h +++ b/include/stc/cbox.h @@ -117,10 +117,10 @@ _cx_memb(_reset_from)(_cx_self* self, i_val val) { else self->get = c_new(i_val, val); } -STC_INLINE _cx_self -_cx_memb(_make)(_cx_raw raw) { return _cx_memb(_from)(i_valfrom(raw)); } - #if !defined _i_no_clone + STC_INLINE _cx_self + _cx_memb(_make)(_cx_raw raw) { return _cx_memb(_from)(i_valfrom(raw)); } + STC_INLINE _cx_self _cx_memb(_clone)(_cx_self other) { if (!other.get) return other; @@ -134,7 +134,7 @@ _cx_memb(_make)(_cx_raw raw) { return _cx_memb(_from)(i_valfrom(raw)); } _cx_memb(_drop)(self); *self = _cx_memb(_clone)(other); } -#endif +#endif // !_i_no_clone STC_INLINE void _cx_memb(_take)(_cx_self* self, _cx_self other) { -- cgit v1.2.3