[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Calling #_Date2Secs
- To: info-mcl@cambridge.apple.com
 
- Subject: Calling #_Date2Secs
 
- From: jbk@world.std.com (Jeffrey B Kane)
 
- Date: Sun, 10 Jan 1993 12:32:00 -0500
 
I know I must be doing something obviously wrong here, but I
can't figure out what it is.  When I execute the following:
(rlet ((the-date :DateTimeRec
                     :year 1993
                     :month 1
                     :day 8)
       (the-other-date :DateTimeRec
                     :year 0
                     :month 0
                     :day 0)
         (the-time :long 0))
    (format t "~%the-time is a ~A~%" (type-of the-time))
    (format t  "the-date is a ~A~%" (type-of the-date))
    (format t "~%Getting Date: ~A/~A/~A~%" (rref the-date :DateTimeRec.month)
            (rref the-date :DateTimeRec.day)
            (rref the-date :DateTimeRec.year))
    (#_Date2Secs the-date the-time)     ; <- TRAP
    (format t "~%Got ~A from #_Date2Secs" (%get-long the-time))
    (#_Secs2Date (%get-long the-time) the-other-date) ;  <- TRAP
    (format t "~%Which is ~A/~A/~A~%" (rref the-other-date :DateTimeRec.month)
            (rref the-other-date :DateTimeRec.day)
            (rref the-other-date :DateTimeRec.year))
    (values))
I get the error:
> Error: value -1482696768 is not of the expected type MACPTR.
> While executing: #<Anonymous Function #xB4B766>
> Type Command-. to abort.
Now (as proven by the two print statements) both of these are being
passed as MACPTRs as I would expect.  I guess the trick is that
_Date2Secs wants my DateTimeRec in some other form.  Standard C
header files list it as a ptr, i.e.
      Date2Secs(&dtrp, &secs);
so I'm a bit confused as to what is going on.  Should the definition
in the interface file:
(deftrap _date2secs ((d :datetimerec) (secs (:pointer :signed-long)))
   nil
  (:no-trap
   (%put-ptr secs (ccl:register-trap #xa9C7 :a0 d :d0))))
be changed to:
(deftrap _date2secs ((d :datetimerec) (secs (:pointer :signed-long)))
   nil
  (:no-trap
    ; ??Change to %put-long??
   (%put-long secs (ccl:register-trap #xa9C7 :a0 d :d0))))
             Jeffrey
(PS I also noticed the seconds are defined as unsigned-longs and signed-longs.
These should probably be made consistant throughout the header files)
======================================
Jeffrey Kane, MD
Kane Biomedical Systems
Boston, MA
Internet    jbk@world.std.com
Compuserve  74206,640
AppleLink   D0738
[Don't take life too seriously... it's not like anyone gets out of it alive.]