summaryrefslogtreecommitdiffhomepage
path: root/examples
diff options
context:
space:
mode:
authorTyge Løvset <[email protected]>2022-05-22 20:45:31 +0200
committerTyge Løvset <[email protected]>2022-05-22 20:45:31 +0200
commit314a41be6b39b6c5967d79555dbf018dbc7eb5f6 (patch)
tree881e2e6654a91357dfc225c9e67a80bfca37263c /examples
parentc0de7d59a09417e2e18909f808258e909c36ee09 (diff)
downloadSTC-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.c26
-rw-r--r--examples/bits2.c42
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("");
+}