P99
p99_posix_default.h
Go to the documentation of this file.
1 /* This may look like nonsense, but it really is -*- mode: C; coding: utf-8 -*- */
2 /* */
3 /* Except for parts copied from previous work and as explicitly stated below, */
4 /* the authors and copyright holders for this work are as follows: */
5 /* (C) copyright 2010-2013 Jens Gustedt, INRIA, France */
6 /* (C) copyright 2012 William Morris */
7 /* */
8 /* This file is free software; it is part of the P99 project. */
9 /* */
10 /* Licensed under the Apache License, Version 2.0 (the "License"); */
11 /* you may not use this file except in compliance with the License. */
12 /* You may obtain a copy of the License at */
13 /* */
14 /* http://www.apache.org/licenses/LICENSE-2.0 */
15 /* */
16 /* Unless required by applicable law or agreed to in writing, software */
17 /* distributed under the License is distributed on an "AS IS" BASIS, */
18 /* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */
19 /* See the License for the specific language governing permissions and */
20 /* limitations under the License. */
21 /* */
22 #ifndef P99_POSIX_DEFAULT_H_
23 # define P99_POSIX_DEFAULT_H_
24 
25 #include "p99_defarg.h"
26 #include P99_ADVANCE_ID
27 
34 #define P00_POSIX_DEFARG_DOCU(NAME, RET, ...) \
35  \
36  \
37 
38 P99_MACRO_END(POSIX_DEFARG_DOCU);
39 
40 
41 P00_POSIX_DEFARG_DOCU(pthread_barrier_init, int, pthread_barrier_t *restrict objp, const pthread_barrierattr_t *restrict attr, unsigned count)
45 #define pthread_barrier_init(...) P99_CALL_DEFARG(pthread_barrier_init, 3, __VA_ARGS__)
46 #define pthread_barrier_init_defarg_1() 0
47 #define pthread_barrier_init_defarg_2() (pthread_barrier_init must have a count argument)
48 
49 P00_POSIX_DEFARG_DOCU(pthread_cond_init, int, pthread_cond_t* objp, pthread_condattr_t const* attr)
52 #define pthread_cond_init(...) P99_CALL_DEFARG(pthread_cond_init, 2, __VA_ARGS__)
53 #define pthread_cond_init_defarg_1() 0
54 
55 P00_POSIX_DEFARG_DOCU(pthread_mutex_init, int, pthread_mutex_t* objp, pthread_mutexattr_t const* attr)
58 #define pthread_mutex_init(...) P99_CALL_DEFARG(pthread_mutex_init, 2, __VA_ARGS__)
59 #define pthread_mutex_init_defarg_1() 0
60 
61 P00_POSIX_DEFARG_DOCU(pthread_rwlock_init, int, pthread_rwlock_t* objp, pthread_rwlockattr_t const* attr)
64 #define pthread_rwlock_init(...) P99_CALL_DEFARG(pthread_rwlock_init, 2, __VA_ARGS__)
65 #define pthread_rwlock_init_defarg_1() 0
66 
67 P00_POSIX_DEFARG_DOCU(pthread_spin_init, int, pthread_spinlock_t* objp, int pshared)
70 #define pthread_spin_init(...) P99_CALL_DEFARG(pthread_spin_init, 2, __VA_ARGS__)
71 #define pthread_spin_init_defarg_1() PTHREAD_PROCESS_PRIVATE
72 
73 P00_POSIX_DEFARG_DOCU(pthread_key_create, int, pthread_key_t *key, void (*destr_function) (void *))
76 #define pthread_key_create(...) P99_CALL_DEFARG(pthread_key_create, 2, __VA_ARGS__)
77 #define pthread_key_create_defarg_1() 0
78 
79 #define SOCKADDR_IN_INIIALIZER { .sin_family = AF_INET }
80 
81 #define IN_ADDR_INITIALIZER P99_INIT
82 
83 P00_POSIX_DEFARG_DOCU(accept, int, int sockfd, struct sockaddr *addr, socklen_t *addrlen)
89 #define accept(...) P99_CALL_DEFARG(accept, 3, __VA_ARGS__)
90 #define accept_defarg_1() 0
91 #define accept_defarg_2() &P99_LVAL(socklen_t)
92 
93 P00_POSIX_DEFARG_DOCU(socket, int, int domain, int type, int protocol)
99 #define socket(...) P99_CALL_DEFARG(socket, 3, __VA_ARGS__)
100 #define socket_defarg_1() SOCK_STREAM
101 #define socket_defarg_2() 0
102 
103 P00_POSIX_DEFARG_DOCU(inet_ntop, char const*, int af, const void *src, char *dst, socklen_t size)
110 #define inet_ntop(...) P99_CALL_DEFARG(inet_ntop, 4, __VA_ARGS__)
111 #define inet_ntop_defarg_2() P99_LVAL(char[INET6_ADDRSTRLEN])
112 #define inet_ntop_defarg_3() INET6_ADDRSTRLEN
113 
114 
115 P00_POSIX_DEFARG_DOCU(realpath, char*, char const *path, char *resolved_path)
121 #define realpath(...) P99_CALL_DEFARG(realpath, 2, __VA_ARGS__)
122 #define realpath_defarg_1() P99_LVAL(char[PATH_MAX])
123 
124 
125 P00_POSIX_DEFARG_DOCU(getsockopt, int, int sockfd, int level, int optname, void* optval, socklen_t*optlen)
129 #define getsockopt(...) P99_IF_GE(P99_NARG(__VA_ARGS__),5)(getsockopt(__VA_ARGS__))(p00_getsockopt(__VA_ARGS__))
130 
131 #define p00_getsockopt(FD, LEV, OPTNAME, OPTVAL) \
132 getsockopt(FD, LEV, OPTNAME, OPTVAL, (socklen_t[1]){ sizeof *(OPTVAL) })
133 
134 P00_POSIX_DEFARG_DOCU(setsockopt, int, int sockfd, int level, int optname, void* optval, socklen_t optlen)
138 #define setsockopt(...) P99_IF_GE(P99_NARG(__VA_ARGS__),5)(setsockopt(__VA_ARGS__))(p00_setsockopt(__VA_ARGS__))
139 
140 #define p00_setsockopt(FD, LEV, OPTNAME, OPTVAL) (setsockopt)(FD, LEV, OPTNAME, OPTVAL, sizeof *(OPTVAL))
141 
146 #endif /* !P99_POSIX_DEFAULT_H_ */
accept
#define accept(...)
Default arguments for POSIX function accept.
Definition: p99_posix_default.h:89
p99_defarg.h
Macros for default arguments to functions.
getsockopt
#define getsockopt(...)
Default arguments for POSIX function getsockopt.
Definition: p99_posix_default.h:129
pthread_cond_init
#define pthread_cond_init(...)
Default arguments for POSIX function pthread_cond_init.
Definition: p99_posix_default.h:52
pthread_spin_init
#define pthread_spin_init(...)
Default arguments for POSIX function pthread_spin_init.
Definition: p99_posix_default.h:70
pthread_rwlock_init
#define pthread_rwlock_init(...)
Default arguments for POSIX function pthread_rwlock_init.
Definition: p99_posix_default.h:64
pthread_mutex_init
#define pthread_mutex_init(...)
Default arguments for POSIX function pthread_mutex_init.
Definition: p99_posix_default.h:58
realpath
#define realpath(...)
Default arguments for POSIX function realpath.
Definition: p99_posix_default.h:121
inet_ntop
#define inet_ntop(...)
Default arguments for POSIX function inet_ntop.
Definition: p99_posix_default.h:110
setsockopt
#define setsockopt(...)
Default arguments for POSIX function setsockopt.
Definition: p99_posix_default.h:138
pthread_key_create
#define pthread_key_create(...)
Default arguments for POSIX function pthread_key_create.
Definition: p99_posix_default.h:76
socket
#define socket(...)
Default arguments for POSIX function socket.
Definition: p99_posix_default.h:99
pthread_barrier_init
#define pthread_barrier_init(...)
Default arguments for POSIX function pthread_barrier_init.
Definition: p99_posix_default.h:45