From 4ae6a06d94b228a5eb67c8473131a791e310c233 Mon Sep 17 00:00:00 2001 From: Cliff Click Date: Sat, 24 Oct 2026 15:25:58 -0700 Subject: Rename modules chapter to 28a --- chapter-modules/src/main/smp/sys/aryi64.smp | 82 ----------------------------- 1 file changed, 82 deletions(-) delete mode 100644 chapter-modules/src/main/smp/sys/aryi64.smp (limited to 'chapter-modules/src/main/smp/sys/aryi64.smp') diff --git a/chapter-modules/src/main/smp/sys/aryi64.smp b/chapter-modules/src/main/smp/sys/aryi64.smp deleted file mode 100644 index 98b72605..00000000 --- a/chapter-modules/src/main/smp/sys/aryi64.smp +++ /dev/null @@ -1,82 +0,0 @@ - -// Ary/Vector of i64s -struct aryi64 { - u32 !len = 0; - i64[] !buf; - - new aryi64 = { i64[] b -> - buf = b; - }; - - // Grow as needed - val _grow = { int len2 -> - if( len+len2 < buf# ) return self; - int newlen = buf# * 2; - while( len+len2 >= newlen ) newlen *= 2; - i64[] !buf2 = new i64[newlen]; - for( int i=0; i - _grow(1).buf[len++] = c; - self; - }; - - val get = { int index -> return buf[index]; }; - - // Write the bracketed array-list form to aryu8. - val str = { -> - // TODO: clunky default constructor syntax - var str = new aryu8().add('['); - for( int i=0; i - i64 tmp = buf[i]; - buf[i] = buf[j]; - buf[j] = tmp; - self; - }; -}; - - - -// Parse a comma-separated list of numbers, wrapped with square brackets, -// with optional whitespace e.g. "[ -17, 0,99,12456789 ] ". -// parseAryI64 & aryi64.str are bijections modulo whitespace. -// Returns null if the parse failed, without giving a clue as to why. -val parseAryI64 = { u8[~] str -> - !scan !s = new scan(str); - if( !s.match('[') ) return null; - // Array of parsed results - var nums = new aryi64(new i64[1]); - - // Parse a list of numbers - if( s.match(']') ) // Handle the empty list - return nums; - - // Parse number commas "123, " until something else - while( s.x < s.buf# ) { - nums.add(s.number()); - if( s.bad ) return null; - if( !s.match(',') ) - break; - }; - // Close the list - if( !s.match(']') ) return null; - s.skip(); - return s.x == s.buf# ? nums : null; -}; - -val copy = { i64[] dst, int doff, i64[~] src, int soff, int len -> - for( int i=0; i