cs & io: small clean-ups to seconds->date
Streamline some things that probably needed to be different along the way.
This commit is contained in:
parent
4b7b1872dc
commit
c7ca4414ca
|
@ -213,6 +213,13 @@
|
||||||
(ftype-ref rktio_identity_t (b_bits) p)
|
(ftype-ref rktio_identity_t (b_bits) p)
|
||||||
(ftype-ref rktio_identity_t (c_bits) p))))
|
(ftype-ref rktio_identity_t (c_bits) p))))
|
||||||
|
|
||||||
|
(define (in-date-range? si)
|
||||||
|
(if (> (fixnum-width) 32)
|
||||||
|
(<= -9223372036854775808 si 9223372036854775807)
|
||||||
|
(<= -2147483648 si 2147483647)))
|
||||||
|
|
||||||
|
(define unknown-zone-name (string->immutable-string "?"))
|
||||||
|
|
||||||
(define (rktio_seconds_to_date* rktio si nsecs get-gmt)
|
(define (rktio_seconds_to_date* rktio si nsecs get-gmt)
|
||||||
(cond
|
(cond
|
||||||
[(not (in-date-range? si))
|
[(not (in-date-range? si))
|
||||||
|
|
|
@ -133,7 +133,6 @@
|
||||||
|
|
||||||
struct:date* date*? date* make-date*
|
struct:date* date*? date* make-date*
|
||||||
date*-nanosecond date*-time-zone-name
|
date*-nanosecond date*-time-zone-name
|
||||||
in-date-range? unknown-zone-name ;; not exported to Racket
|
|
||||||
|
|
||||||
struct:arity-at-least arity-at-least arity-at-least?
|
struct:arity-at-least arity-at-least arity-at-least?
|
||||||
arity-at-least-value
|
arity-at-least-value
|
||||||
|
|
|
@ -104,10 +104,3 @@
|
||||||
(define (current-seconds)
|
(define (current-seconds)
|
||||||
(let ((t (current-time 'time-utc)))
|
(let ((t (current-time 'time-utc)))
|
||||||
(time-second t)))
|
(time-second t)))
|
||||||
|
|
||||||
(define (in-date-range? si)
|
|
||||||
(if (> (fixnum-width) 32)
|
|
||||||
(<= -9223372036854775808 si 9223372036854775807)
|
|
||||||
(<= -2147483648 si 2147483647)))
|
|
||||||
|
|
||||||
(define unknown-zone-name (string->immutable-string "?"))
|
|
||||||
|
|
|
@ -38087,19 +38087,19 @@
|
||||||
'current-load-extension))
|
'current-load-extension))
|
||||||
(define rktio_seconds_to_date-error-kind (vector-immutable 3 25))
|
(define rktio_seconds_to_date-error-kind (vector-immutable 3 25))
|
||||||
(define 1/seconds->date
|
(define 1/seconds->date
|
||||||
|
(let ((seconds->date_0
|
||||||
(|#%name|
|
(|#%name|
|
||||||
seconds->date
|
seconds->date
|
||||||
(case-lambda
|
(lambda (s2_0 local?1_0)
|
||||||
((s_0) (begin (1/seconds->date s_0 #t)))
|
|
||||||
((s_0 local?_0)
|
|
||||||
(begin
|
(begin
|
||||||
(if (real? s_0)
|
(begin
|
||||||
|
(if (real? s2_0)
|
||||||
(void)
|
(void)
|
||||||
(raise-argument-error 'seconds->date "real?" s_0))
|
(raise-argument-error 'seconds->date "real?" s2_0))
|
||||||
(let ((s_1 (inexact->exact s_0)))
|
(let ((s_0 (inexact->exact s2_0)))
|
||||||
(let ((si_0 (floor s_1)))
|
(let ((si_0 (floor s_0)))
|
||||||
(let ((get-gmt_0 (if local?_0 0 1)))
|
(let ((get-gmt_0 (if local?1_0 0 1)))
|
||||||
(let ((nsecs_0 (floor (* (- s_1 si_0) 1000000000))))
|
(let ((nsecs_0 (floor (* (- s_0 si_0) 1000000000))))
|
||||||
(let ((dt_0
|
(let ((dt_0
|
||||||
(|#%app|
|
(|#%app|
|
||||||
rktio_seconds_to_date*
|
rktio_seconds_to_date*
|
||||||
|
@ -38126,7 +38126,12 @@
|
||||||
(|#%app|
|
(|#%app|
|
||||||
exn:fail
|
exn:fail
|
||||||
app_0
|
app_0
|
||||||
(current-continuation-marks))))))))))))))))))
|
(current-continuation-marks)))))))))))))))))))
|
||||||
|
(|#%name|
|
||||||
|
seconds->date
|
||||||
|
(case-lambda
|
||||||
|
((s_0) (begin (seconds->date_0 s_0 #t)))
|
||||||
|
((s_0 local?1_0) (seconds->date_0 s_0 local?1_0))))))
|
||||||
(define 1/unsafe-poller
|
(define 1/unsafe-poller
|
||||||
(|#%name|
|
(|#%name|
|
||||||
unsafe-poller
|
unsafe-poller
|
||||||
|
|
|
@ -747,8 +747,8 @@
|
||||||
(test l (sync l))
|
(test l (sync l))
|
||||||
(define-values (tai tao) (tcp-accept l))
|
(define-values (tai tao) (tcp-accept l))
|
||||||
|
|
||||||
(test #f (file-stream-port? i))
|
(test #f (file-stream-port? ti))
|
||||||
(test #f (file-stream-port? o))
|
(test #f (file-stream-port? to))
|
||||||
|
|
||||||
(test 6 (write-string "hello\n" to))
|
(test 6 (write-string "hello\n" to))
|
||||||
(flush-output to)
|
(flush-output to)
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
(require racket/include
|
(require racket/include
|
||||||
racket/fixnum
|
racket/fixnum
|
||||||
(only-in '#%linklet primitive-table)
|
(only-in '#%linklet primitive-table)
|
||||||
(only-in '#%kernel [date* kernel:date*])
|
|
||||||
ffi/unsafe
|
ffi/unsafe
|
||||||
ffi/unsafe/atomic
|
ffi/unsafe/atomic
|
||||||
(for-syntax racket/base)
|
(for-syntax racket/base)
|
||||||
|
@ -135,7 +134,7 @@
|
||||||
(define dt (cast p _pointer _Rrktio_date_t-pointer))
|
(define dt (cast p _pointer _Rrktio_date_t-pointer))
|
||||||
(define tzn (Rrktio_date_t-zone_name dt))
|
(define tzn (Rrktio_date_t-zone_name dt))
|
||||||
(begin0
|
(begin0
|
||||||
(kernel:date*
|
(date*
|
||||||
(Rrktio_date_t-second dt)
|
(Rrktio_date_t-second dt)
|
||||||
(Rrktio_date_t-minute dt)
|
(Rrktio_date_t-minute dt)
|
||||||
(Rrktio_date_t-hour dt)
|
(Rrktio_date_t-hour dt)
|
||||||
|
@ -226,7 +225,15 @@
|
||||||
(define (rktio_make_sha2_ctx)
|
(define (rktio_make_sha2_ctx)
|
||||||
(malloc _Rrktio_sha2_ctx_t))
|
(malloc _Rrktio_sha2_ctx_t))
|
||||||
|
|
||||||
|
(define (replace-ltps-open ht)
|
||||||
|
;; Disable rktio_ltps_open in demo mode, since it is not
|
||||||
|
;; connected to the host scheduler
|
||||||
|
(hash-set ht 'rktio_ltps_open
|
||||||
|
(lambda (x) (vector RKTIO_ERROR_KIND_RACKET
|
||||||
|
RKTIO_ERROR_UNSUPPORTED))))
|
||||||
|
|
||||||
(primitive-table '#%rktio
|
(primitive-table '#%rktio
|
||||||
|
(replace-ltps-open
|
||||||
(let ()
|
(let ()
|
||||||
(define-syntax extract-functions
|
(define-syntax extract-functions
|
||||||
(syntax-rules (define-constant
|
(syntax-rules (define-constant
|
||||||
|
@ -276,4 +283,4 @@
|
||||||
'rktio_do_install_os_signal_handler rktio_do_install_os_signal_handler
|
'rktio_do_install_os_signal_handler rktio_do_install_os_signal_handler
|
||||||
'rktio_get_ctl_c_handler rktio_get_ctl_c_handler]
|
'rktio_get_ctl_c_handler rktio_get_ctl_c_handler]
|
||||||
form ...))
|
form ...))
|
||||||
(include "../../rktio/rktio.rktl")))
|
(include "../../rktio/rktio.rktl"))))
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
(provide seconds->date)
|
(provide seconds->date)
|
||||||
|
|
||||||
(require racket/fixnum
|
(require racket/fixnum
|
||||||
(only-in '#%kernel [date*? kernel:date*?])
|
|
||||||
"../common/check.rkt"
|
"../common/check.rkt"
|
||||||
"../host/rktio.rkt"
|
"../host/rktio.rkt"
|
||||||
"../host/error.rkt"
|
"../host/error.rkt"
|
||||||
|
@ -14,10 +13,7 @@
|
||||||
(vector-immutable RKTIO_ERROR_KIND_RACKET
|
(vector-immutable RKTIO_ERROR_KIND_RACKET
|
||||||
RKTIO_ERROR_TIME_OUT_OF_RANGE))
|
RKTIO_ERROR_TIME_OUT_OF_RANGE))
|
||||||
|
|
||||||
(define/who seconds->date
|
(define/who (seconds->date s [local? #t])
|
||||||
(case-lambda
|
|
||||||
[(s) (seconds->date s #t)]
|
|
||||||
[(s local?)
|
|
||||||
(check who real? s)
|
(check who real? s)
|
||||||
(let* ([s (inexact->exact s)]
|
(let* ([s (inexact->exact s)]
|
||||||
[si (floor s)]
|
[si (floor s)]
|
||||||
|
@ -28,10 +24,10 @@
|
||||||
;; therefore no atomicity is needed here.
|
;; therefore no atomicity is needed here.
|
||||||
[dt (rktio_seconds_to_date* rktio si nsecs get-gmt)])
|
[dt (rktio_seconds_to_date* rktio si nsecs get-gmt)])
|
||||||
(cond
|
(cond
|
||||||
[(kernel:date*? dt)
|
[(date*? dt)
|
||||||
dt]
|
dt]
|
||||||
[(equal? dt rktio_seconds_to_date-error-kind)
|
[(equal? dt rktio_seconds_to_date-error-kind)
|
||||||
(raise-arguments-error who "integer is out-of-range"
|
(raise-arguments-error who "integer is out-of-range"
|
||||||
"integer" si)]
|
"integer" si)]
|
||||||
[else
|
[else
|
||||||
(raise-rktio-error who dt "conversion error")]))]))
|
(raise-rktio-error who dt "conversion error")])))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user