; Minimal sci.impl.io stub for the Jolt bootstrap.
; SCI's real io.cljc needs JVM/CLJS-only features (System/getenv, *print-meta*,
; thread-local *out* binding). Jolt has native I/O, so we provide just the names
; that sci.impl.namespaces references when building the clojure.core binding map,
; backed by Jolt's native equivalents. (Only references symbols Jolt defines.)
(ns sci.impl.io)

(def out (atom nil))
(def in (atom nil))
(def err (atom nil))
(def newline (fn newline [] (clojure.core/pr "\n") nil))
(def flush (fn flush [] nil))
(def pr clojure.core/pr)
(def prn clojure.core/prn)
(def print clojure.core/print)
(def println clojure.core/println)
(def pr-str clojure.core/pr-str)
(def prn-str clojure.core/prn-str)
(def print-str clojure.core/str)
(def println-str clojure.core/println-str)
(def printf (fn printf [fmt & args] (clojure.core/print (apply clojure.core/format fmt args)) nil))
(def print-simple (fn print-simple [o w] (clojure.core/pr o) nil))
(def read-line (fn read-line [] nil))
(def with-out-str (fn with-out-str [& body] ""))
(def with-in-str (fn with-in-str [s & body] nil))
(def print-dup-var (atom false))
(def print-meta (atom false))
(def print-readably (atom true))
(def print-length (atom nil))
(def print-level (atom nil))
(def print-namespace-maps (atom false))
(def print-newline (atom true))
(def flush-on-newline (atom true))
(def print-fn (atom nil))
(def print-err-fn (atom nil))
(def file (atom nil))
