27 lines
		
	
	
		
			683 B
		
	
	
	
		
			Scheme
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			683 B
		
	
	
	
		
			Scheme
		
	
	
	
	
	
(library
 | 
						|
  (disk-units)
 | 
						|
  (export disk-size?
 | 
						|
	  bytes
 | 
						|
          sectors
 | 
						|
          kilo
 | 
						|
          meg
 | 
						|
          gig
 | 
						|
          tera
 | 
						|
          to-bytes
 | 
						|
          to-sectors)
 | 
						|
  (import (rnrs)
 | 
						|
          (math-utils))
 | 
						|
 | 
						|
  (define-record-type disk-size (fields (mutable sectors)))
 | 
						|
 | 
						|
  (define (bytes n) (make-disk-size (div-up n 512)))
 | 
						|
  (define (sectors n) (make-disk-size n))
 | 
						|
  (define (kilo n) (make-disk-size (* n 2)))
 | 
						|
  (define (meg n) (make-disk-size (* n 2 1024)))
 | 
						|
  (define (gig n) (make-disk-size (* n 1024 1024)))
 | 
						|
  (define (tera n) (make-disk-size (* n 1024 104 1024)))
 | 
						|
 | 
						|
  (define (to-bytes ds) (* 512 (disk-size-sectors ds)))
 | 
						|
  (define (to-sectors ds) (disk-size-sectors ds))
 | 
						|
  )
 |