1 /* 2 * The internal type definitions 3 * 4 * Copyright (C) 2012-2020, Joachim Metz <joachim.metz@gmail.com> 5 * 6 * Refer to AUTHORS for acknowledgements. 7 * 8 * This program is free software: you can redistribute it and/or modify 9 * it under the terms of the GNU Lesser General Public License as published by 10 * the Free Software Foundation, either version 3 of the License, or 11 * (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU Lesser General Public License 19 * along with this program. If not, see <https://www.gnu.org/licenses/>. 20 */ 21 22 #if !defined( _LIBCTHREADS_INTERNAL_TYPES_H ) 23 #define _LIBCTHREADS_INTERNAL_TYPES_H 24 25 #include <common.h> 26 #include <types.h> 27 28 /* Define HAVE_LOCAL_LIBCTHREADS for local use of libcthreads 29 * The definitions in <libcthreads/types.h> are copied here 30 * for local use of libcthreads 31 */ 32 #if defined( HAVE_LOCAL_LIBCTHREADS ) && defined( HAVE_MULTI_THREAD_SUPPORT ) 33 34 /* The following type definitions hide internal data structures 35 */ 36 #if defined( HAVE_DEBUG_OUTPUT ) && !defined( WINAPI ) 37 typedef struct libcthreads_condition {} libcthreads_condition_t; 38 typedef struct libcthreads_lock {} libcthreads_lock_t; 39 typedef struct libcthreads_mutex {} libcthreads_mutex_t; 40 typedef struct libcthreads_queue {} libcthreads_queue_t; 41 typedef struct libcthreads_read_write_lock {} libcthreads_read_write_lock_t; 42 typedef struct libcthreads_repeating_thread {} libcthreads_repeating_thread_t; 43 typedef struct libcthreads_thread {} libcthreads_thread_t; 44 typedef struct libcthreads_thread_attributes {} libcthreads_thread_attributes_t; 45 typedef struct libcthreads_thread_pool {} libcthreads_thread_pool_t; 46 47 #else 48 typedef intptr_t libcthreads_condition_t; 49 typedef intptr_t libcthreads_lock_t; 50 typedef intptr_t libcthreads_mutex_t; 51 typedef intptr_t libcthreads_queue_t; 52 typedef intptr_t libcthreads_read_write_lock_t; 53 typedef intptr_t libcthreads_repeating_thread_t; 54 typedef intptr_t libcthreads_thread_t; 55 typedef intptr_t libcthreads_thread_attributes_t; 56 typedef intptr_t libcthreads_thread_pool_t; 57 58 #endif /* defined( HAVE_DEBUG_OUTPUT ) && !defined( WINAPI ) */ 59 60 #endif /* defined( HAVE_LOCAL_LIBCTHREADS ) && defined( HAVE_MULTI_THREAD_SUPPORT ) */ 61 62 #endif /* !defined( _LIBCTHREADS_INTERNAL_TYPES_H ) */ 63 64