]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/alarms/alarms.factor
Merge branch 'master' of git://factorcode.org/git/factor
[factor.git] / basis / alarms / alarms.factor
index 251d82eec8f096704be879493699c5f599cfda64..b006131182bf2a506f32267da8fd8e89150d7344 100644 (file)
@@ -19,13 +19,15 @@ SYMBOL: alarm-thread
 : notify-alarm-thread ( -- )
     alarm-thread get-global interrupt ;
 
-: normalize-argument ( obj -- nanoseconds )
-    >duration duration>nanoseconds >integer ;
+GENERIC: >nanoseconds ( obj -- duration/f )
+M: f >nanoseconds ;
+M: real >nanoseconds >integer ;
+M: duration >nanoseconds duration>nanoseconds >integer ;
 
 : <alarm> ( quot start interval -- alarm )
     alarm new
-        swap dup [ normalize-argument ] when >>interval
-        swap dup [ normalize-argument nano-count + ] when >>start
+        swap >nanoseconds >>interval
+        swap >nanoseconds nano-count + >>start
         swap >>quot
         <box> >>entry ;