diff options
author | Thomas Touhey <thomas@touhey.fr> | 2019-04-25 12:57:14 +0200 |
---|---|---|
committer | Thomas Touhey <thomas@touhey.fr> | 2019-04-25 12:57:14 +0200 |
commit | 4dd0d638a993aadca4a8920b5b9d198e00534f06 (patch) | |
tree | 3e2c99b0b629edbd83e0393d36a5fec6915aed16 /include | |
parent | 2974766ae3e6eb176529563f09d7e34d7835047b (diff) |
Modified cdefs macros for functions and data
Diffstat (limited to 'include')
-rw-r--r-- | include/libtio.h | 6 | ||||
-rw-r--r-- | include/libtio/cdefs.h | 26 | ||||
-rw-r--r-- | include/libtio/error.h | 4 | ||||
-rw-r--r-- | include/libtio/iter.h | 14 | ||||
-rw-r--r-- | include/libtio/log.h | 12 | ||||
-rw-r--r-- | include/libtio/native.h | 14 | ||||
-rw-r--r-- | include/libtio/stream.h | 118 |
7 files changed, 101 insertions, 93 deletions
diff --git a/include/libtio.h b/include/libtio.h index efd7a94..1d0708b 100644 --- a/include/libtio.h +++ b/include/libtio.h @@ -10,12 +10,12 @@ /* Define what is required to use the library facilities. */ -TIO_EXTERN int TIO_EXPORT tio_check_version +TIO_EXTERN(int) tio_check_version OF((unsigned long version)); -TIO_EXTERN int TIO_EXPORT tio_init +TIO_EXTERN(int) tio_init OF((void)); -TIO_EXTERN void TIO_EXPORT tio_exit +TIO_EXTERN(void) tio_exit OF((void)); # define TIO_INIT \ diff --git a/include/libtio/cdefs.h b/include/libtio/cdefs.h index a4a1854..bba459a 100644 --- a/include/libtio/cdefs.h +++ b/include/libtio/cdefs.h @@ -63,9 +63,19 @@ /* Some platforms require more than simply 'extern'. * Here are macros to control this. */ -# define TIO_EXTERN extern -# define TIO_EXPORT -# define TIO_LOCAL static +# define TIO_EXTERN(TYPE) \ + extern TYPE +# define TIO_NORETURN \ + __attribute__((noreturn)) extern void +# define TIO_LOCAL(TYPE) \ + static TYPE +# define TIO_HOOK(TYPE) \ + static TYPE +# define TIO_HOOK_TYPE(TYPE) \ + TYPE + +# define TIO_LOCAL_DATA(TYPE) \ + static TYPE /* Also, libtio is made in C, so we might as well define what we want * for C++. */ @@ -82,6 +92,12 @@ # define TIO_END_NAMESPACE # endif +/* Forward declare a structure. */ + +# define TIO_STRUCT(STRUCT_NAME, STRUCT_TYPEDEF) \ +struct STRUCT_NAME; \ +typedef struct STRUCT_NAME STRUCT_TYPEDEF; + /* --- * Native platform support. * --- */ @@ -110,9 +126,9 @@ TIO_BEGIN_DECLS /* Memory allocation utilities. */ -TIO_EXTERN void *TIO_EXPORT tio_alloc +TIO_EXTERN(void *) tio_alloc OF((size_t tio__count, size_t tio__size)); -TIO_EXTERN void TIO_EXPORT tio_free +TIO_EXTERN(void) tio_free OF((void *tio__mem)); TIO_END_DECLS diff --git a/include/libtio/error.h b/include/libtio/error.h index cca471b..6d6a63d 100644 --- a/include/libtio/error.h +++ b/include/libtio/error.h @@ -53,9 +53,9 @@ typedef int tio_error_t; /* Get the error name or description. */ -TIO_EXTERN char const *TIO_EXPORT tio_error_name +TIO_EXTERN(char const *) tio_error_name OF((int tio__code)); -TIO_EXTERN char const *TIO_EXPORT tio_error_desc +TIO_EXTERN(char const *) tio_error_desc OF((int tio__code)); TIO_END_NAMESPACE diff --git a/include/libtio/iter.h b/include/libtio/iter.h index 7a4bdd5..89d3f0c 100644 --- a/include/libtio/iter.h +++ b/include/libtio/iter.h @@ -28,11 +28,11 @@ typedef struct tio_iter_functions tio_iter_functions_t; * When `tio_end()` is called, the `tio_end_t` callback, if not NULL, * will be called. */ -typedef int TIO_EXPORT tio_next_t +typedef TIO_HOOK_TYPE(int) tio_next_t OF((void *tio__cookie, void **tio__ptr)); -typedef void TIO_EXPORT tio_nextfree_t +typedef TIO_HOOK_TYPE(void) tio_nextfree_t OF((void *tio__cookie, void *tio__ptr)); -typedef void TIO_EXPORT tio_end_t +typedef TIO_HOOK_TYPE(void) tio_end_t OF((void *tio__cookie)); struct tio_iter_functions { @@ -58,21 +58,21 @@ TIO_BEGIN_DECLS * element might be free'd or re-used, so if you are interested in what is * in it, copy the data before using one of the previous functions. */ -TIO_EXTERN int TIO_EXPORT tio_iter +TIO_EXTERN(int) tio_iter OF((tio_iter_t **tio__iterp, void *tio__cookie, tio_iter_functions_t const *tio__funcs)); -TIO_EXTERN int TIO_EXPORT tio_next +TIO_EXTERN(int) tio_next OF((tio_iter_t *tio__iter, void **tio__ptr)); -TIO_EXTERN void TIO_EXPORT tio_end +TIO_EXTERN(void) tio_end OF((tio_iter_t *tio__iter)); /* You can make a “super iterator” that makes an iterator out of two * iterators! It will empty the first one, then the second one. * It will also take care of closing them. */ -TIO_EXTERN int TIO_EXPORT tio_combine_iterators +TIO_EXTERN(int) tio_combine_iterators OF((tio_iter_t **tio__iterp, tio_iter_t *tio__first, tio_iter_t *tio__second)); diff --git a/include/libtio/log.h b/include/libtio/log.h index fb18e07..2882566 100644 --- a/include/libtio/log.h +++ b/include/libtio/log.h @@ -8,23 +8,23 @@ TIO_BEGIN_DECLS /* Get and set the log level at runtime. */ -TIO_EXTERN void TIO_EXPORT tio_setlog +TIO_EXTERN(void) tio_setlog OF((char const *tio__level)); -TIO_EXTERN char const *TIO_EXPORT tio_getlog +TIO_EXTERN(char const *) tio_getlog OF((void)); /* List log levels (deprecated interface) */ -typedef void tio_log_list_t OF((void *tio__cookie, - char const *tio__str)); +typedef TIO_HOOK_TYPE(void) tio_log_list_t + OF((void *tio__cookie, char const *tio__str)); -TIO_EXTERN TIO_DEPRECATED void TIO_EXPORT tio_listlog +TIO_DEPRECATED TIO_EXTERN(void) tio_listlog OF((tio_log_list_t *tio__callback, void *tio__cookie)); /* List log levels (new interface). * This iterator yields strings (`const char *`). */ -TIO_EXTERN int TIO_EXPORT tio_iter_log +TIO_EXTERN(int) tio_iter_log OF((tio_iter_t **tio__iter)); # define tio_next_log(ITER, PTRP) (tio_next((ITER), (void **)(PTRP))) diff --git a/include/libtio/native.h b/include/libtio/native.h index 84aae12..0b7e899 100644 --- a/include/libtio/native.h +++ b/include/libtio/native.h @@ -10,7 +10,7 @@ TIO_BEGIN_DECLS # if !defined(LIBTIO_DISABLED_UNIX) -TIO_EXTERN int TIO_EXPORT tio_open_unix_fd +TIO_EXTERN(int) tio_open_unix_fd OF((tio_stream_t **tio__streamp, int tio__fd, int tio__close)); # endif @@ -20,9 +20,9 @@ TIO_EXTERN int TIO_EXPORT tio_open_unix_fd # ifndef LIBTIO_DISABLED_LIBUSB # include <libusb.h> -TIO_EXTERN int TIO_EXPORT tio_open_libusb +TIO_EXTERN(int) tio_open_libusb OF((tio_stream_t **streamp, int bus, int addr)); -TIO_EXTERN int TIO_EXPORT tio_open_libusb_device +TIO_EXTERN(int) tio_open_libusb_device OF((tio_stream_t **streamp, libusb_device_handle *handle)); # endif @@ -32,15 +32,15 @@ TIO_EXTERN int TIO_EXPORT tio_open_libusb_device # ifndef LIBTIO_DISABLED_FILE # include <stdio.h> -TIO_EXTERN int TIO_EXPORT tio_open_std +TIO_EXTERN(int) tio_open_std OF((tio_stream_t **tio__stream, FILE *tio__fl, int tio__close)); -TIO_EXTERN int TIO_EXPORT tio_open_stdout +TIO_EXTERN(int) tio_open_stdout OF((tio_stream_t **tio__stream)); -TIO_EXTERN int TIO_EXPORT tio_open_stderr +TIO_EXTERN(int) tio_open_stderr OF((tio_stream_t **tio__stream)); -TIO_EXTERN int TIO_EXPORT tio_open_stdin +TIO_EXTERN(int) tio_open_stdin OF((tio_stream_t **tio__stream)); # endif diff --git a/include/libtio/stream.h b/include/libtio/stream.h index d58fd41..aec0e4f 100644 --- a/include/libtio/stream.h +++ b/include/libtio/stream.h @@ -13,24 +13,16 @@ TIO_BEGIN_NAMESPACE * written, but not all of it), you shall return an error, because there * is no partial success. */ -struct tio_stream; -typedef struct tio_stream tio_stream_t; -struct tio_timeouts; -typedef struct tio_timeouts tio_timeouts_t; - -struct tio_serial_attrs; -typedef struct tio_serial_attrs tio_serial_attrs_t; -struct tio_scsi_request; -typedef struct tio_scsi_request tio_scsi_request_t; - -struct tio_functions; -typedef struct tio_functions tio_functions_t; -struct tio_serial_functions; -typedef struct tio_serial_functions tio_serial_functions_t; -struct tio_usb_functions; -typedef struct tio_usb_functions tio_usb_functions_t; -struct tio_scsi_functions; -typedef struct tio_scsi_functions tio_scsi_functions_t; +TIO_STRUCT(tio_stream, tio_stream_t) +TIO_STRUCT(tio_timeouts, tio_timeouts_t) + +TIO_STRUCT(tio_serial_attrs, tio_serial_attrs_t) +TIO_STRUCT(tio_scsi_request, tio_scsi_request_t) + +TIO_STRUCT(tio_functions, tio_functions_t) +TIO_STRUCT(tio_serial_functions, tio_serial_functions_t) +TIO_STRUCT(tio_usb_functions, tio_usb_functions_t) +TIO_STRUCT(tio_scsi_functions, tio_scsi_functions_t) /* Timeouts. */ @@ -291,39 +283,39 @@ struct tio_scsi_request { * (some are common to several types of stream). All the structures have * the `close` callback first. */ -typedef void tio_close_t +typedef TIO_HOOK_TYPE(void) tio_close_t OF((void *)); -typedef int tio_read_t +typedef TIO_HOOK_TYPE(int) tio_read_t OF((void *, unsigned char *, size_t)); -typedef int tio_read_tm_t +typedef TIO_HOOK_TYPE(int) tio_read_tm_t OF((void *, unsigned char *, size_t, tio_timeouts_t const *)); -typedef int tio_write_t +typedef TIO_HOOK_TYPE(int) tio_write_t OF((void *, unsigned char const *, size_t)); -typedef int tio_write_tm_t +typedef TIO_HOOK_TYPE(int) tio_write_tm_t OF((void *, unsigned char const *, size_t, tio_timeouts_t const *)); -typedef int tio_set_tm_t +typedef TIO_HOOK_TYPE(int) tio_set_tm_t OF((void *, tio_timeouts_t const * /* read */, tio_timeouts_t const * /* write */)); -typedef int tio_seek_t +typedef TIO_HOOK_TYPE(int) tio_seek_t OF((void *, tio_off_t *, tio_whence_t)); -typedef int tio_set_serial_attrs_t +typedef TIO_HOOK_TYPE(int) tio_set_serial_attrs_t OF((void *, tio_serial_attrs_t const *)); -typedef int tio_scsi_t +typedef TIO_HOOK_TYPE(int) tio_scsi_t OF((void *, tio_scsi_request_t *)); -typedef int tio_usb_send_bulk_t +typedef TIO_HOOK_TYPE(int) tio_usb_send_bulk_t OF((void *, unsigned char const *, size_t, unsigned int /* total timeout in ms */)); -typedef int tio_usb_recv_bulk_t +typedef TIO_HOOK_TYPE(int) tio_usb_recv_bulk_t OF((void *, unsigned char *, size_t, unsigned int /* total timeout in ms */)); @@ -376,7 +368,7 @@ TIO_BEGIN_DECLS /* Default stream serial settings utilities. */ -TIO_EXTERN int TIO_EXPORT tio_make_serial_attrs +TIO_EXTERN(int) tio_make_serial_attrs OF((tio_serial_attrs_t *tio__attrs, char const *tio__raw)); /* Open and close a stream. @@ -387,37 +379,37 @@ TIO_EXTERN int TIO_EXPORT tio_make_serial_attrs * `tio__over` stream if present, so that you can still access USB * functions behind an SCSI stream for example. */ -TIO_EXTERN int TIO_EXPORT tio_open +TIO_EXTERN(int) tio_open OF((tio_stream_t **tio__streamp, tio_stream_t *tio__parent, void *tio__cookie, unsigned int tio__flags, tio_functions_t const *tio__functions, tio_off_t tio__offset)); -TIO_EXTERN int TIO_EXPORT tio_open_serial +TIO_EXTERN(int) tio_open_serial OF((tio_stream_t **tio__streamp, tio_stream_t *tio__parent, void *tio__cookie, unsigned int tio__flags, tio_serial_functions_t const *tio__functions, tio_serial_attrs_t const *tio__attrs)); -TIO_EXTERN int TIO_EXPORT tio_open_usb +TIO_EXTERN(int) tio_open_usb OF((tio_stream_t **tio__streamp, tio_stream_t *tio__parent, void *tio__cookie, unsigned int tio__flags, tio_usb_functions_t const *tio__functions)); -TIO_EXTERN int TIO_EXPORT tio_open_scsi +TIO_EXTERN(int) tio_open_scsi OF((tio_stream_t **tio__streamp, tio_stream_t *tio__parent, void *tio__cookie, unsigned int tio__flags, tio_scsi_functions_t const *tio__functions)); -TIO_EXTERN void TIO_EXPORT tio_close +TIO_EXTERN(void) tio_close OF((tio_stream_t *tio__stream)); /* Get various stream data. */ -TIO_EXTERN int TIO_EXPORT tio_isreadable +TIO_EXTERN(int) tio_isreadable OF((tio_stream_t *tio__stream)); -TIO_EXTERN int TIO_EXPORT tio_iswritable +TIO_EXTERN(int) tio_iswritable OF((tio_stream_t *tio__stream)); -TIO_EXTERN int TIO_EXPORT tio_isseekable +TIO_EXTERN(int) tio_isseekable OF((tio_stream_t *tio__stream)); # define tio_is_readable(TIO__STREAM) \ @@ -427,81 +419,81 @@ TIO_EXTERN int TIO_EXPORT tio_isseekable # define tio_is_seekable(TIO__STREAM) \ tio_isseekable(TIO__STREAM) -TIO_EXTERN int TIO_EXPORT tio_has_read_timeouts +TIO_EXTERN(int) tio_has_read_timeouts OF((tio_stream_t *tio__stream)); -TIO_EXTERN int TIO_EXPORT tio_has_write_timeouts +TIO_EXTERN(int) tio_has_write_timeouts OF((tio_stream_t *tio__stream)); -TIO_EXTERN int TIO_EXPORT tio_get_type +TIO_EXTERN(int) tio_get_type OF((tio_stream_t *tio__stream)); -TIO_EXTERN void *TIO_EXPORT tio_get_cookie +TIO_EXTERN(void *) tio_get_cookie OF((tio_stream_t *tio__stream)); -TIO_EXTERN int TIO_EXPORT tio_get_lasterr +TIO_EXTERN(int) tio_get_lasterr OF((tio_stream_t *tio__stream)); -TIO_EXTERN int TIO_EXPORT tio_get_parent +TIO_EXTERN(int) tio_get_parent OF((tio_stream_t *tio__stream, tio_stream_t **tio__parent)); /* Read and write data from and to a stream. * Timeouts are in milliseconds (ms). */ -TIO_EXTERN int TIO_EXPORT tio_read +TIO_EXTERN(int) tio_read OF((tio_stream_t *tio__stream, void *tio__dest, size_t tio__count)); -TIO_EXTERN int TIO_EXPORT tio_read_tm +TIO_EXTERN(int) tio_read_tm OF((tio_stream_t *tio__stream, void *tio__dest, size_t tio__count, tio_timeouts_t const *tio__tm)); -TIO_EXTERN int TIO_EXPORT tio_write +TIO_EXTERN(int) tio_write OF((tio_stream_t *tio__stream, void const *tio__data, size_t tio__count)); -TIO_EXTERN int TIO_EXPORT tio_write_tm +TIO_EXTERN(int) tio_write_tm OF((tio_stream_t *tio__stream, void const *tio__data, size_t tio__count, tio_timeouts_t const *tio__tm)); -TIO_EXTERN int TIO_EXPORT tio_write_char +TIO_EXTERN(int) tio_write_char OF((tio_stream_t *tio__stream, int tio__char)); /* Move within a stream. */ -TIO_EXTERN int TIO_EXPORT tio_seek +TIO_EXTERN(int) tio_seek OF((tio_stream_t *tio__stream, tio_off_t tio__offset, tio_whence_t tio__whence)); -TIO_EXTERN tio_off_t TIO_EXPORT tio_tell +TIO_EXTERN(tio_off_t) tio_tell OF((tio_stream_t *tio__stream)); -TIO_EXTERN int TIO_EXPORT tio_skip +TIO_EXTERN(int) tio_skip OF((tio_stream_t *tio__stream, tio_off_t tio__size)); -TIO_EXTERN int TIO_EXPORT tio_get_size +TIO_EXTERN(int) tio_get_size OF((tio_stream_t *tio__stream, tio_off_t *tio__size)); /* Set and get the serial attributes of a stream. */ -TIO_EXTERN int TIO_EXPORT tio_set_serial_attrs +TIO_EXTERN(int) tio_set_serial_attrs OF((tio_stream_t *tio__stream, unsigned int tio__flags, tio_serial_attrs_t const *tio__attrs)); -TIO_EXTERN int TIO_EXPORT tio_get_serial_attrs +TIO_EXTERN(int) tio_get_serial_attrs OF((tio_stream_t *tio__stream, unsigned int tio__flags, tio_serial_attrs_t *tio__attrs)); /* Set the timeouts of a stream. */ -TIO_EXTERN int TIO_EXPORT tio_set_timeouts +TIO_EXTERN(int) tio_set_timeouts OF((tio_stream_t *tio__stream, tio_timeouts_t const *tio__read, tio_timeouts_t const *tio__write)); /* Make USB-related operations. */ -TIO_EXTERN int TIO_EXPORT tio_usb_send_bulk +TIO_EXTERN(int) tio_usb_send_bulk OF((tio_stream_t *tio__stream, unsigned char const *tio__data, size_t tio__size, unsigned int tio__timeout)); -TIO_EXTERN int TIO_EXPORT tio_usb_recv_bulk +TIO_EXTERN(int) tio_usb_recv_bulk OF((tio_stream_t *tio__stream, unsigned char *tio__buf, size_t tio__size, unsigned int tio__timeout)); /* Make an SCSI request. */ -TIO_EXTERN int TIO_EXPORT tio_scsi_request +TIO_EXTERN(int) tio_scsi_request OF((tio_stream_t *tio__stream, tio_scsi_request_t *tio__request)); /* --- @@ -510,19 +502,19 @@ TIO_EXTERN int TIO_EXPORT tio_scsi_request /* Make a stream out of memory. */ -TIO_EXTERN int TIO_EXPORT tio_open_memory +TIO_EXTERN(int) tio_open_memory OF((tio_stream_t **tio__stream, void *tio__zone, size_t tio__size)); -TIO_EXTERN int TIO_EXPORT tio_open_readonly_memory +TIO_EXTERN(int) tio_open_readonly_memory OF((tio_stream_t **tio__stream, void const *tio__zone, size_t tio__size)); /* Make a stream out of another, with a limit (and empty it). */ -TIO_EXTERN int TIO_EXPORT tio_open_limited +TIO_EXTERN(int) tio_open_limited OF((tio_stream_t **tio__stream, tio_stream_t *tio__original, size_t tio__limit)); -TIO_EXTERN int TIO_EXPORT tio_empty_limited +TIO_EXTERN(int) tio_empty_limited OF((tio_stream_t *tio__stream)); TIO_END_DECLS |