summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--README.md16
-rw-r--r--docs/ccommon_api.md13
-rw-r--r--include/stc/algo/crange.h12
-rw-r--r--include/stc/ccommon.h4
-rw-r--r--misc/examples/forfilter.c4
-rw-r--r--misc/examples/prime.c2
6 files changed, 28 insertions, 23 deletions
diff --git a/README.md b/README.md
index 3628ecd1..af9ce1ad 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
STC - Smart Template Containers
===============================
-### [Version 4.3 RC2](#version-history)
+### [Version 4.3 RC3](#version-history)
---
Description
@@ -613,10 +613,20 @@ STC is generally very memory efficient. Memory usage for the different container
# Version History
## Version 4.3
-- algo/coroutine.h much improved with new API and more features.
+- Some breaking changes.
+- coroutines: much improved with some new API and added features.
+- cspan: Support for column-major (fortran order) multidim spans and transposed views.
+- Removed default comparison for clist, cvec and cdeq (as with cstack and cqueue).
+ - Using i_val_str, i_valclass, i_valboxed still expects comparisons defined.
+ - Define i_native_cmp to enable built-in i_val types comparisons (<, ==).
+- cstr and csview are now shared linked by default. Static linking by defining i_static.
- New cdeq and cqueue implementation(s), using circular buffer.
-- Removed deprecated uppercase flow-control macro names.
+- Renamed i_extern => i_import.
+ - Define i_import before #include <stc/cstr.h> will also define utf8 case conversions.
+ - Define i_import before #include <stc/cregex.h> will also define cstr + utf8 tables.
+- Renamed c_make() => c_init() macro for initialization lists.
- Removed deprecated crandom.h. Use crand.h with new API.
+- Removed deprecated uppercase flow-control macro names.
- Improved default string hash function.
## Version 4.2
diff --git a/docs/ccommon_api.md b/docs/ccommon_api.md
index d39f6de6..f21f2eaf 100644
--- a/docs/ccommon_api.md
+++ b/docs/ccommon_api.md
@@ -82,16 +82,16 @@ c_forrange (i, 30, 0, -5) printf(" %lld", i);
### crange
A number sequence generator type, similar to [boost::irange](https://www.boost.org/doc/libs/release/libs/range/doc/html/range/reference/ranges/irange.html). The **crange_value** type is `long long`. Below *start*, *stop*, and *step* are of type *crange_value*:
```c
-crange crange_init(stop); // will generate 0, 1, ..., stop-1
-crange crange_init(start, stop); // will generate start, start+1, ... stop-1
-crange crange_init(start, stop, step); // will generate start, start+step, ... upto-not-including stop
+crange crange_make(stop); // will generate 0, 1, ..., stop-1
+crange crange_make(start, stop); // will generate start, start+1, ... stop-1
+crange crange_make(start, stop, step); // will generate start, start+step, ... upto-not-including stop
// note that step may be negative.
crange_iter crange_begin(crange* self);
crange_iter crange_end(crange* self);
void crange_next(crange_iter* it);
// 1. All primes less than 32:
-crange r1 = crange_init(3, 32, 2);
+crange r1 = crange_make(3, 32, 2);
printf("2"); // first prime
c_forfilter (i, crange, r1, isPrime(*i.ref))
printf(" %lld", *i.ref);
@@ -99,7 +99,7 @@ c_forfilter (i, crange, r1, isPrime(*i.ref))
// 2. The first 11 primes:
printf("2");
-crange range = crange_init(3, INT64_MAX, 2);
+crange range = crange_make(3, INT64_MAX, 2);
c_forfilter (i, crange, range,
isPrime(*i.ref) &&
c_flt_take(10)
@@ -140,7 +140,7 @@ bool isPrime(long long i) {
int main() {
// Get 10 prime numbers starting from 1000. Skip the first 15 primes,
// then select every 25th prime (including the initial).
- crange R = crange_init(1001, INT64_MAX, 2); // 1001, 1003, ...
+ crange R = crange_make(1001, INT64_MAX, 2); // 1001, 1003, ...
c_forfilter (i, crange, R,
isPrime(*i.ref) &&
@@ -171,7 +171,6 @@ Make any container from an initializer list:
...
// Initializes with const char*, internally converted to cstr!
cset_str myset = c_init(cset_str, {"This", "is", "the", "story"});
-cset_str myset2 = c_clone(myset);
int x = 7, y = 8;
cmap_int mymap = c_init(cmap_int, { {1, 2}, {3, 4}, {5, 6}, {x, y} });
diff --git a/include/stc/algo/crange.h b/include/stc/algo/crange.h
index 34ed541b..45ef53a1 100644
--- a/include/stc/algo/crange.h
+++ b/include/stc/algo/crange.h
@@ -27,14 +27,14 @@
int main()
{
- crange r1 = crange_init(80, 90);
+ crange r1 = crange_make(80, 90);
c_foreach (i, crange, r1)
printf(" %lld", *i.ref);
puts("");
// use a temporary crange object.
int a = 100, b = INT32_MAX;
- crange r2 = crange_init(a, b, 8);
+ crange r2 = crange_make(a, b, 8);
c_forfilter (i, crange, r2,
c_flt_skip(i, 10) &&
c_flt_take(i, 3))
@@ -51,11 +51,11 @@ typedef long long crange_value;
typedef struct { crange_value start, end, step, value; } crange;
typedef struct { crange_value *ref, end, step; } crange_iter;
-#define crange_init(...) c_MACRO_OVERLOAD(crange_init, __VA_ARGS__)
-#define crange_init_1(stop) crange_init_3(0, stop, 1)
-#define crange_init_2(start, stop) crange_init_3(start, stop, 1)
+#define crange_make(...) c_MACRO_OVERLOAD(crange_make, __VA_ARGS__)
+#define crange_make_1(stop) crange_make_3(0, stop, 1)
+#define crange_make_2(start, stop) crange_make_3(start, stop, 1)
-STC_INLINE crange crange_init_3(crange_value start, crange_value stop, crange_value step)
+STC_INLINE crange crange_make_3(crange_value start, crange_value stop, crange_value step)
{ crange r = {start, stop - (step > 0), step}; return r; }
STC_INLINE crange_iter crange_begin(crange* self)
diff --git a/include/stc/ccommon.h b/include/stc/ccommon.h
index 0cce1610..d6da8734 100644
--- a/include/stc/ccommon.h
+++ b/include/stc/ccommon.h
@@ -241,8 +241,4 @@ STC_INLINE intptr_t cnextpow2(intptr_t n) {
asm("mulq %3" : "=a"(*(lo)), "=d"(*(hi)) : "a"(a), "rm"(b))
#endif
-// [deprecated]:
-#define c_make(...) c_init(__VA_ARGS__)
-#define cspan_make(...) cspan_init(__VA_ARGS__)
-#define crange_make(...) crange_init(__VA_ARGS__)
#endif // CCOMMON_H_INCLUDED
diff --git a/misc/examples/forfilter.c b/misc/examples/forfilter.c
index d39693b5..7e3c4c9c 100644
--- a/misc/examples/forfilter.c
+++ b/misc/examples/forfilter.c
@@ -55,7 +55,7 @@ fn main() {
void demo2(void)
{
IVec vector = {0};
- crange r = crange_init(INT64_MAX);
+ crange r = crange_make(INT64_MAX);
c_forfilter (x, crange, r,
c_flt_skipwhile(x, *x.ref != 11) &&
(*x.ref % 2) != 0 &&
@@ -125,7 +125,7 @@ void demo5(void)
{
#define flt_even(i) ((*i.ref & 1) == 0)
#define flt_mid_decade(i) ((*i.ref % 10) != 0)
- crange R = crange_init(1963, INT32_MAX);
+ crange R = crange_make(1963, INT32_MAX);
c_forfilter (i, crange, R,
c_flt_skip(i,15) &&
diff --git a/misc/examples/prime.c b/misc/examples/prime.c
index 34fa144c..cb3b095a 100644
--- a/misc/examples/prime.c
+++ b/misc/examples/prime.c
@@ -41,7 +41,7 @@ int main(void)
puts("\n");
puts("Show the last 50 primes using a temporary crange generator:");
- crange range = crange_init(n - 1, 0, -2);
+ crange range = crange_make(n - 1, 0, -2);
c_forfilter (i, crange, range,
cbits_test(&primes, *i.ref/2) &&