diff options
| author | Tyge Løvset <[email protected]> | 2022-05-22 20:45:31 +0200 |
|---|---|---|
| committer | Tyge Løvset <[email protected]> | 2022-05-22 20:45:31 +0200 |
| commit | 314a41be6b39b6c5967d79555dbf018dbc7eb5f6 (patch) | |
| tree | 881e2e6654a91357dfc225c9e67a80bfca37263c /examples | |
| parent | c0de7d59a09417e2e18909f808258e909c36ee09 (diff) | |
| download | STC-modified-314a41be6b39b6c5967d79555dbf018dbc7eb5f6.tar.gz STC-modified-314a41be6b39b6c5967d79555dbf018dbc7eb5f6.zip | |
Rewrote cbits to make it dual: fixed-sized or dynamically sized by adding optional i_len template parameter. Renamed cbits_set_values() to cbits_set_pattern(). Added example bits2.c
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/bits.c | 26 | ||||
| -rw-r--r-- | examples/bits2.c | 42 |
2 files changed, 55 insertions, 13 deletions
diff --git a/examples/bits.c b/examples/bits.c index 680b3501..bd2a9f03 100644 --- a/examples/bits.c +++ b/examples/bits.c @@ -4,8 +4,8 @@ int main()
{
c_autovar (cbits set = cbits_with_size(23, true), cbits_drop(&set)) {
- printf("count %" PRIuMAX ", %" PRIuMAX "\n", cbits_count(set), set.size);
- cbits s1 = cbits_new("1110100110111");
+ printf("count %" PRIuMAX ", %" PRIuMAX "\n", cbits_count(set), cbits_size(set));
+ cbits s1 = cbits_from("1110100110111");
char buf[256];
cbits_to_str(s1, buf, 0, -1);
printf("buf: %s: %" PRIuMAX "\n", buf, cbits_count(s1));
@@ -13,11 +13,11 @@ int main() cbits_reset(&set, 9);
cbits_resize(&set, 43, false);
- c_autobuf (str, char, set.size + 1)
+ c_autobuf (str, char, cbits_size(set) + 1)
printf(" str: %s\n", cbits_to_str(set, str, 0, -1));
- printf("%4" PRIuMAX ": ", set.size);
- c_forrange (i, set.size)
+ printf("%4" PRIuMAX ": ", cbits_size(set));
+ c_forrange (i, cbits_size(set))
printf("%d", cbits_test(set, i));
puts("");
@@ -26,13 +26,13 @@ int main() cbits_resize(&set, 93, false);
cbits_resize(&set, 102, true);
cbits_set_value(&set, 99, false);
- printf("%4" PRIuMAX ": ", set.size);
- c_forrange (i, set.size)
+ printf("%4" PRIuMAX ": ", cbits_size(set));
+ c_forrange (i, cbits_size(set))
printf("%d", cbits_test(set, i));
puts("\nIterate:");
- printf("%4" PRIuMAX ": ", set.size);
- c_forrange (i, set.size)
+ printf("%4" PRIuMAX ": ", cbits_size(set));
+ c_forrange (i, cbits_size(set))
printf("%d", cbits_test(set, i));
puts("");
@@ -42,19 +42,19 @@ int main() cbits_set(&s2, 17);
cbits_set(&s2, 18);
printf(" new: ");
- c_forrange (i, s2.size)
+ c_forrange (i, cbits_size(s2))
printf("%d", cbits_test(s2, i));
puts("");
printf(" xor: ");
cbits_xor(&set, s2);
- c_forrange (i, set.size)
+ c_forrange (i, cbits_size(set))
printf("%d", cbits_test(set, i));
puts("");
cbits_set_all(&set, false);
- printf("%4" PRIuMAX ": ", set.size);
- c_forrange (i, set.size)
+ printf("%4" PRIuMAX ": ", cbits_size(set));
+ c_forrange (i, cbits_size(set))
printf("%d", cbits_test(set, i));
puts("");
}
diff --git a/examples/bits2.c b/examples/bits2.c new file mode 100644 index 00000000..e9202efc --- /dev/null +++ b/examples/bits2.c @@ -0,0 +1,42 @@ +#include <stdio.h>
+// Example of static sized (stack allocated) bitsets
+
+#define i_type Bits
+#define i_len 80 // enable fixed bitset on the stack
+#include <stc/cbits.h>
+
+int main()
+{
+ Bits s1 = Bits_from("1110100110111");
+
+ printf("size %" PRIuMAX "\n", Bits_size(s1));
+ char buf[256];
+ Bits_to_str(s1, buf, 0, -1);
+ printf("buf: %s: count=%" PRIuMAX "\n", buf, Bits_count(s1));
+
+ Bits_reset(&s1, 8);
+ c_autobuf (str, char, Bits_size(s1) + 1)
+ printf(" s1: %s\n", Bits_to_str(s1, str, 0, -1));
+
+ Bits s2 = Bits_clone(s1);
+
+ Bits_flip_all(&s2);
+ Bits_reset(&s2, 66);
+ Bits_reset(&s2, 67);
+ printf(" s2: ");
+ c_forrange (i, Bits_size(s2))
+ printf("%d", Bits_test(s2, i));
+ puts("");
+
+ printf("xor: ");
+ Bits_xor(&s1, s2);
+ c_forrange (i, Bits_size(s1))
+ printf("%d", Bits_test(s1, i));
+ puts("");
+
+ printf("all: ");
+ Bits_set_pattern(&s1, 0x3333333333333333);
+ c_forrange (i, Bits_size(s1))
+ printf("%d", Bits_test(s1, i));
+ puts("");
+}
|
