+++ /dev/null
-;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*-
-;;;; *************************************************************************
-;;;; FILE IDENTIFICATION
-;;;;
-;;;; Name: gettime
-;;;; Purpose: UFFI Example file to get time, use C structures
-;;;; Programmer: Kevin M. Rosenberg
-;;;; Date Started: Feb 2002
-;;;;
-;;;; $Id: gettime.lisp,v 1.1 2002/09/30 10:02:36 kevin Exp $
-;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
-;;;;
-;;;; UFFI users are granted the rights to distribute and use this software
-;;;; as governed by the terms of the Lisp Lesser GNU Public License
-;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
-;;;; *************************************************************************
-
-(in-package :cl-user)
-
-(uffi:def-foreign-type time-t :unsigned-long)
-
-(uffi:def-struct tm
- (sec :int)
- (min :int)
- (hour :int)
- (mday :int)
- (mon :int)
- (year :int)
- (wday :int)
- (yday :int)
- (isdst :int))
-
-(uffi:def-function ("time" c-time)
- ((time (* time-t)))
- :returning time-t)
-
-(uffi:def-function ("localtime" c-localtime)
- ((time (* time-t)))
- :returning (* tm))
-
-(uffi:def-type time-t :unsigned-long)
-(uffi:def-type tm-pointer (* tm))
-
-(defun gettime ()
- "Returns the local time"
- (uffi:with-foreign-object (time 'time-t)
-;; (declare (type time-t time))
- (c-time time)
- (let ((tm-ptr (the tm-pointer (c-localtime time))))
- (declare (type tm-pointer tm-ptr))
- (let ((time-string (format nil "~2d/~2,'0d/~d ~2d:~2,'0d:~2,'0d"
- (1+ (uffi:get-slot-value tm-ptr 'tm 'mon))
- (uffi:get-slot-value tm-ptr 'tm 'mday)
- (+ 1900 (uffi:get-slot-value tm-ptr 'tm 'year))
- (uffi:get-slot-value tm-ptr 'tm 'hour)
- (uffi:get-slot-value tm-ptr 'tm 'min)
- (uffi:get-slot-value tm-ptr 'tm 'sec)
- )))
- time-string))))
-
-
-
-
-#+examples-uffi
-(format t "~&~A" (gettime))
-
-#+test-uffi
-(progn
- (let ((time (gettime)))
- (util.test:test (stringp time) t :fail-info "Time is not a string")
- (util.test:test (plusp (parse-integer time :junk-allowed t))
- t
- :fail-info "time string does not start with a number")))
-
-
--- /dev/null
+;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*-
+;;;; *************************************************************************
+;;;; FILE IDENTIFICATION
+;;;;
+;;;; Name: time.lisp
+;;;; Purpose: UFFI test file, time, use C structures
+;;;; Author: Kevin M. Rosenberg
+;;;; Date Started: Feb 2002
+;;;;
+;;;; $Id: time.lisp,v 1.1 2003/04/30 14:06:14 kevin Exp $
+;;;;
+;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
+;;;;
+;;;; UFFI users are granted the rights to distribute and use this software
+;;;; as governed by the terms of the Lisp Lesser GNU Public License
+;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
+;;;; *************************************************************************
+
+(in-package :uffi-tests)
+
+(uffi:def-foreign-type time-t :unsigned-long)
+
+(uffi:def-struct tm
+ (sec :int)
+ (min :int)
+ (hour :int)
+ (mday :int)
+ (mon :int)
+ (year :int)
+ (wday :int)
+ (yday :int)
+ (isdst :int))
+
+(uffi:def-function ("time" c-time)
+ ((time (* time-t)))
+ :returning time-t)
+
+(uffi:def-function ("gmtime" c-gmtime)
+ ((time (* time-t)))
+ :returning (* tm))
+
+(uffi:def-type time-t :unsigned-long)
+(uffi:def-type tm-pointer (* tm))
+
+(deftest time.1
+ (uffi:with-foreign-object (time 'time-t)
+ (setf (uffi:deref-pointer time :unsigned-long) 7381)
+ (uffi:deref-pointer time :unsigned-long))
+ 7381)
+
+(deftest time.2
+ (uffi:with-foreign-object (time 'time-t)
+ (setf (uffi:deref-pointer time :unsigned-long) 7381)
+ (let ((tm-ptr (the tm-pointer (c-gmtime time))))
+ (values (1+ (uffi:get-slot-value tm-ptr 'tm 'mon))
+ (uffi:get-slot-value tm-ptr 'tm 'mday)
+ (+ 1900 (uffi:get-slot-value tm-ptr 'tm 'year))
+ (uffi:get-slot-value tm-ptr 'tm 'hour)
+ (uffi:get-slot-value tm-ptr 'tm 'min)
+ (uffi:get-slot-value tm-ptr 'tm 'sec)
+ )))
+ 1 1 1970 2 3 1)
+
+
+
+
+
+
;;;; Author: Kevin M. Rosenberg
;;;; Date Started: Apr 2003
;;;;
-;;;; $Id: uffi-tests.asd,v 1.5 2003/04/30 13:48:34 kevin Exp $
+;;;; $Id: uffi-tests.asd,v 1.6 2003/04/30 14:06:14 kevin Exp $
;;;; *************************************************************************
(defpackage #:uffi-tests-system
(:file "gethostname" :depends-on ("package"))
(:file "union" :depends-on ("package"))
(:file "arrays" :depends-on ("package"))
+ (:file "time" :depends-on ("package"))
(:file "uffi-c-test-lib" :depends-on ("package"))
))))