summaryrefslogtreecommitdiff
path: root/chapter-modules/src/main/smp/sys/adt
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2026-10-24 15:25:58 -0700
committerCliff Click <cliffc@acm.org>2026-10-24 15:25:58 -0700
commit4ae6a06d94b228a5eb67c8473131a791e310c233 (patch)
tree839dfa84f1bfb982122ce62183b6ae4145a4c615 /chapter-modules/src/main/smp/sys/adt
parentc4364363dbd969c9aa27aa7c43fbe6d40544501a (diff)
downloadSimple-4ae6a06d94b228a5eb67c8473131a791e310c233.tar.gz
Simple-4ae6a06d94b228a5eb67c8473131a791e310c233.zip
Rename modules chapter to 28a
Diffstat (limited to 'chapter-modules/src/main/smp/sys/adt')
-rw-r--r--chapter-modules/src/main/smp/sys/adt/bitset.smp57
1 files changed, 0 insertions, 57 deletions
diff --git a/chapter-modules/src/main/smp/sys/adt/bitset.smp b/chapter-modules/src/main/smp/sys/adt/bitset.smp
deleted file mode 100644
index d02cd2fe..00000000
--- a/chapter-modules/src/main/smp/sys/adt/bitset.smp
+++ /dev/null
@@ -1,57 +0,0 @@
-
-// A set of non-negative integers, represented one bit per value.
-struct bitset {
- i64[] !_bits;
-
- new bitset = { ->
- _bits = new i64[1];
- };
-
- // Return 0 for missing, non-zero for true
- val get = { int bit ->
- if( (bit >> 6) >= _bits# ) return false;
- i64 mask = 1 << (bit & 63);
- return (_bits[bit >> 6] & mask);
- };
-
- val _grow = { int bit ->
- int x = bit >> 6;
- int len = _bits#;
- if( x < len ) return self;
- while( x >= len ) len *= 2;
- var bits = new i64[len];
- for( int i=0; i<_bits#; i++ )
- bits[i] = _bits[i];
- _bits = bits;
- return self;
- };
-
- // Set
- val set = { int bit ->
- i64 mask = 1 << (bit & 63);
- _grow(bit)._bits[bit >> 6] |= mask;
- return self;
- };
-
- // Test and set
- val tset = { int bit ->
- int idx = bit >> 6;
- i64 mask = 1 << (bit & 63);
- if( _grow(bit)._bits[idx] & mask )
- return true; // Already set
- _bits[idx] |= mask;
- return false; // Was false (and now set)
- };
-
- val clr = { int bit ->
- if( (bit >> 6) >= _bits# ) return self;
- i64 mask = 1 << (bit & 63);
- _bits[bit >> 6] &= (mask ^ -1);
- return self;
- };
-
- val clear = { ->
- for( int i=0; i<_bits#; i++ ) _bits[i] = 0;
- return self;
- };
-};