;; /*
;;     SDL - Simple DirectMedia Layer
;;     Copyright (C) 1997, 1998, 1999, 2000, 2001  Sam Lantinga
;; 
;;     This library is free software; you can redistribute it and/or
;;     modify it under the terms of the GNU Library General Public
;;     License as published by the Free Software Foundation; either
;;     version 2 of the License, or (at your option) any later version.
;; 
;;     This library is distributed in the hope that it will be useful,
;;     but WITHOUT ANY WARRANTY; without even the implied warranty of
;;     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
;;     Library General Public License for more details.
;; 
;;     You should have received a copy of the GNU Library General Public
;;     License along with this library; if not, write to the Free
;;     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
;; 
;;     Sam Lantinga
;;     slouken@devolution.com
;; */
;; 
;; #ifdef SAVE_RCSID
;; static char rcsid =
;;  "@(#) $Id: SDL_thread.lsh,v 1.1 2002/08/19 07:04:08 profshadoko Exp $";
;; #endif
;; 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(de SDL_thread_dummy () (cpheader "#include <SDL/SDL_thread.h>") ())

;; #ifndef _SDL_thread_h
;; #define _SDL_thread_h
;; 
;; /* Header for the SDL thread management routines 
;; 
;; 	These are independent of the other SDL routines.
;; */
;; 
;; #include "SDL_main.h"
;; #include "SDL_types.h"
;; 
;; /* Thread synchronization primitives */
;; #include "SDL_mutex.h"
;; 
;; #include "begin_code.h"
;; /* Set up for C function definitions, even when using C++ */
;; #ifdef __cplusplus
;; extern "C" {
;; #endif
;; 
;; /* The SDL thread structure, defined in SDL_thread.c */
;; struct SDL_Thread;
;; typedef struct SDL_Thread SDL_Thread;
;; 
#? (SDL_CreateThread <fn> <data>)
;;.PRE
;; /* Create a thread */
;; extern DECLSPEC SDL_Thread * SDL_CreateThread(int (*fn)(void *), void *data);
(de SDL_CreateThread(fn data)
    ((-gptr-) fn)
    ((-gptr-) data)
    (gptr #{ SDL_CreateThread($fn, $data) #}))

;; 
#? (SDL_ThreadID)
;;.PRE
;; /* Get the 32-bit thread identifier for the current thread */
;; extern DECLSPEC Uint32 SDL_ThreadID(void);
(de SDL_ThreadID()
    (int #{ SDL_ThreadID() #}))

;; 
#? (SDL_GetThreadID <thread>)
;;.PRE
;; /* Get the 32-bit thread identifier for the specified thread,
;;    equivalent to SDL_ThreadID() if the specified thread is NULL.
;;  */
;; extern DECLSPEC Uint32 SDL_GetThreadID(SDL_Thread *thread);
(de SDL_GetThreadID(thread)
    ((-gptr- "SDL_Thread *") thread)
    (int #{  SDL_GetThreadID($thread) #}))

;; 
#? (SDL_WaitThread <thread> <status>)
;;.PRE
;; /* Wait for a thread to finish.
;;    The return code for the thread function is placed in the area
;;    pointed to by 'status', if 'status' is not NULL.
;;  */
;; extern DECLSPEC void SDL_WaitThread(SDL_Thread *thread, int *status);
(de SDL_WaitThread(thread status)
    ((-gptr- "SDL_Thread *") thread)
    ((-gptr- "int *") status)
    #{  SDL_WaitThread($thread, $status) #} ())

;; 
#? (SDL_KillThread <thread>)
;;.PRE
;; /* Forcefully kill a thread without worrying about its state */
;; extern DECLSPEC void SDL_KillThread(SDL_Thread *thread);
(de SDL_KillThread(thread)
    ((-gptr- "SDL_Thread *") thread)
    #{  SDL_KillThread($thread) #} ())

;; 
;; 
;; /* Ends C function definitions when using C++ */
;; #ifdef __cplusplus
;; }
;; #endif
;; #include "close_code.h"
;; 
;; #endif /* _SDL_thread_h */
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(sdladdfuncs   SDL_thread_dummy SDL_CreateThread SDL_ThreadID
               SDL_GetThreadID SDL_WaitThread SDL_KillThread)

