lib/IO-struct.ss
#lang scheme/base

(require (planet chongkai/sml/ml-package)
         (planet chongkai/sml/ml-primitives)
         (for-syntax scheme/base))
  
(provide IO-struct)
  
  
(define-package IO-struct
  (Io-datatype Io Io?
               BlockingNotSupported-datatype BlockingNotSupported BlockingNotSupported?
               NonblockingNotSupported-datatype NonblockingNotSupported NonblockingNotSupported?
               RandomAccessNotSupported-datatype RandomAccessNotSupported RandomAccessNotSupported?
               TerminatedStream-datatype TerminatedStream TerminatedStream?
               ClosedStream-datatype ClosedStream ClosedStream?
               NO_BUF-datatype NO_BUF NO_BUF?
               LINE_BUF-datatype LINE_BUF LINE_BUF?
               BLOCK_BUF-datatype BLOCK_BUF BLOCK_BUF?)
  
  (define*-syntax Io-datatype (syntax-local-value #'Io-datatype))
  (define*-values (Io Io?)
    (values Io Io?))
  
  (define-ml-exn BlockingNotSupported #f)
  (define-ml-exn NonblockingNotSupported #f)
  (define-ml-exn RandomAccessNotSupported #f)
  (define-ml-exn TerminatedStream #f)
  (define-ml-exn ClosedStream #f)
  (define-ml-exn NO_BUF #f)
  (define-ml-exn LINE_BUF #f)
  (define-ml-exn BLOCK_BUF #f))