45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| my c library (jlibc)
 | |
| ------------
 | |
| 
 | |
| * bytevector utilities: memswap, memreverse, swap_el, etc.
 | |
| * hashing, random#s: int32hash, int64hash, int64to32hash, lookup3, ptrhash
 | |
| * utf8
 | |
| * bitvector
 | |
| - iostream, socket, asynch io
 | |
| - cross-platform pathnames, cwd, exename, date/time, etc.
 | |
| * floating point number utils: comparison, print_real, print_cplx
 | |
| - strtab (with prefix searching)
 | |
| 
 | |
| (- pool allocator with hooks for gc (sweep function))
 | |
| (- list (dequeue))
 | |
| (- sort: msort list, qsort numbers) not too important since stdlib has qsort
 | |
| 
 | |
| - use non-allocating APIs. this means the interface never allocates or
 | |
|   frees memory for you. you have to manage space for objects yourself.
 | |
| 
 | |
| - separate math library. includes numal, cephes, my complex number routines,
 | |
|   more special functions
 | |
| 
 | |
| 
 | |
| stream redesign:
 | |
| 
 | |
| memstream, single-descriptor-backed, pipe (read/write on separate descriptors)
 | |
| 
 | |
| do our own buffering, so we can implement getline without seek/skip
 | |
| 
 | |
| all provided functions must be in terms of read,write,poll,flush only
 | |
| seek/skip will be available, but only works on files and strings
 | |
| change semantics of bit i/o so it doesn't require skip(-1)
 | |
| 
 | |
| compare our implementation to somebody else's fread,fwrite,etc.
 | |
| 
 | |
| 
 | |
| cool trick for faking string streams with stdio:
 | |
| 
 | |
|     char buf[256];
 | |
|     v = list2(number(6), number(4));
 | |
|     FILE *f = fopen("/dev/null", "a");
 | |
|     setbuffer(f, buf, sizeof(buf));
 | |
|     print(f, v, 0);
 | |
|     printf("got '%s'\n", buf);
 |