source: libcfa/prelude.cf @ ad8e062

aaron-thesisarm-ehcleanup-dtorsctordeferred_resndemanglerenumforall-pointer-decaygc_noraiijacob/cs343-translationjenkins-sandboxmemorynew-astnew-ast-unique-exprnew-envno_listpersistent-indexerpthread-emulationresolv-newstringwith_gc
Last change on this file since ad8e062 was f7f6785, checked in by Peter A. Buhr <pabuhr@…>, 8 years ago

add _Bool, _Complex, and consistent type naming to prelude

  • Property mode set to 100644
File size: 40.3 KB
Line 
1//                               -*- Mode: C -*-
2//
3// Copyright (C) Glen Ditchfield 1994, 1999
4//
5// prelude.cf -- Standard Cforall Preample for C99
6//
7// Author           : Glen Ditchfield
8// Created On       : Sat Nov 29 07:23:41 2014
9// Last Modified By : Peter A. Buhr
10// Last Modified On : Mon Jan 19 22:20:57 2015
11// Update Count     : 51
12//
13
14// Following line added from stddef.h by build
15
16typedef long int ptrdiff_t;
17
18// Section numbers from: http://plg.uwaterloo.ca/~cforall/refrat.pdf
19
20// ------------------------------------------------------------
21//
22// Section 4.1 Primary Expressions
23//
24// ------------------------------------------------------------
25
26const int 0, 1;
27
28forall ( dtype DT ) const DT * const    0;
29forall ( ftype FT ) FT * const          0;
30
31// ------------------------------------------------------------
32//
33// Section 4.2 Postfix Operators
34//
35// ------------------------------------------------------------
36
37_Bool                   ?++( _Bool * ),                         ?--( _Bool * );
38signed int              ?++( signed int * ),                    ?--( signed int * );
39unsigned int            ?++( unsigned int * ),                  ?--( unsigned int * );
40signed long int         ?++( signed long int * ),               ?--( signed long int * );
41unsigned long int       ?++( unsigned long int * ),             ?--( unsigned long int * );
42signed long long int    ?++( signed long long int * ),          ?--( signed long long int * );
43unsigned long long int  ?++( unsigned long long int * ),        ?--( unsigned long long int * );
44float                   ?++( float * ),                         ?--( float * );
45double                  ?++( double * ),                        ?--( double * );
46long double             ?++( long double * ),                   ?--( long double * );
47float _Complex          ?++( float _Complex * ),                ?--( float _Complex * );
48double _Complex         ?++( double _Complex * ),               ?--( double _Complex * );
49long double _Complex    ?++( long double _Complex * ),          ?--( long double _Complex * );
50
51forall( type T ) T *                     ?++(                T ** );
52forall( type T ) const T *               ?++( const          T ** );
53forall( type T ) volatile T *            ?++(       volatile T ** );
54forall( type T ) const volatile T *      ?++( const volatile T ** );
55forall( type T ) T *                     ?--(                T ** );
56forall( type T ) const T *               ?--( const          T ** );
57forall( type T ) volatile T *            ?--(       volatile T ** );
58forall( type T ) const volatile T *      ?--( const volatile T ** );
59
60forall( type T ) lvalue T                ?[?](                T *,          ptrdiff_t );
61forall( type T ) const lvalue T          ?[?]( const          T *,          ptrdiff_t );
62forall( type T ) volatile lvalue T       ?[?](       volatile T *,          ptrdiff_t );
63forall( type T ) const volatile lvalue T ?[?]( const volatile T *,          ptrdiff_t );
64forall( type T ) lvalue T                ?[?](          ptrdiff_t,                T * );
65forall( type T ) const lvalue T          ?[?](          ptrdiff_t, const          T * );
66forall( type T ) volatile lvalue T       ?[?](          ptrdiff_t,       volatile T * );
67forall( type T ) const volatile lvalue T ?[?](          ptrdiff_t, const volatile T * );
68
69// ------------------------------------------------------------
70//
71// Section 4.3 Unary Operators
72//
73// ------------------------------------------------------------
74
75_Bool                   ++?( _Bool * ),                         --?( _Bool * );
76signed int              ++?( signed int * ),                    --?( signed int * );
77unsigned int            ++?( unsigned int * ),                  --?( unsigned int * );
78signed long int         ++?( signed long int * ),               --?( signed long int * );
79unsigned long int       ++?( unsigned long int * ),             --?( unsigned long int * );
80signed long long int    ++?( signed long long int * ),          --?( signed long long int * );
81unsigned long long int  ++?( unsigned long long int * ),        --?( unsigned long long int * );
82float                   ++?( float * ),                         --?( float * );
83double                  ++?( double * ),                        --?( double * );
84long double             ++?( long double * ),                   --?( long double * );
85float _Complex          ++?( float _Complex * ),                --?( float _Complex * );
86double _Complex         ++?( double _Complex * ),               --?( double _Complex * );
87long double _Complex    ++?( long double _Complex * ),          --?( long double _Complex * );
88
89forall( type T ) T *                     ++?(                T ** );
90forall( type T ) const T *               ++?( const          T ** );
91forall( type T ) volatile T *            ++?(       volatile T ** );
92forall( type T ) const volatile T *      ++?( const volatile T ** );
93forall( type T ) T *                     --?(                T ** );
94forall( type T ) const T *               --?( const          T ** );
95forall( type T ) volatile T *            --?(       volatile T ** );
96forall( type T ) const volatile T *      --?( const volatile T ** );
97
98forall( type T ) lvalue T                *?(                 T * );
99forall( type T ) const lvalue T          *?( const           T * );
100forall( type T ) volatile lvalue T       *?(       volatile  T * );
101forall( type T ) const volatile lvalue T *?( const volatile  T * );
102forall( ftype FT ) lvalue FT             *?( FT * );
103
104_Bool                   +?( _Bool ),                    -?( _Bool ),                    ~?( _Bool );         
105signed int              +?( signed int ),               -?( signed int ),               ~?( signed int );           
106unsigned int            +?( unsigned int ),             -?( unsigned int ),             ~?( unsigned int );         
107signed long int         +?( signed long int ),          -?( signed long int ),          ~?( signed long int );       
108unsigned long int       +?( unsigned long int ),        -?( unsigned long int ),        ~?( unsigned long int );             
109signed long long int    +?( signed long long int ),     -?( signed long long int ),     ~?( signed long long int );   
110unsigned long long int  +?( unsigned long long int ),   -?( unsigned long long int ),   ~?( unsigned long long int ); 
111float                   +?( float ),                    -?( float );
112double                  +?( double ),                   -?( double );
113long double             +?( long double ),              -?( long double );
114float _Complex          +?( float _Complex ),           -?( float _Complex );
115double _Complex         +?( double _Complex ),          -?( double _Complex );
116long double _Complex    +?( long double _Complex ),     -?( long double _Complex );
117
118signed int      !?( signed int ),               !?( unsigned int ),
119                !?( long int ),                 !?( unsigned long int ),
120                !?( long long int ),            !?( unsigned long long int ),
121                !?( float ),                    !?( double ),                   !?( long double ),
122                !?( float _Complex ),           !?( double _Complex ),          !?( long double _Complex );
123
124forall ( dtype DT ) int !?( const volatile DT * );
125forall ( ftype FT ) int !?( FT * );
126
127// ------------------------------------------------------------
128//
129// Section 4.5 Multiplicative Operators
130//
131// ------------------------------------------------------------
132
133_Bool                   ?*?( _Bool, _Bool ),                                    ?/?( _Bool, _Bool ),                            ?%?( _Bool, _Bool );
134signed int              ?*?( signed int, signed int ),                          ?/?( signed int, signed int ),                  ?%?( signed int, signed int );
135unsigned int            ?*?( unsigned int, unsigned int ),                      ?/?( unsigned int, unsigned int ),              ?%?( unsigned int, unsigned int );
136signed long int         ?*?( signed long int, signed long int ),                ?/?( signed long int, signed long int ),        ?%?( signed long int, signed long int );
137unsigned long int       ?*?( unsigned long int, unsigned long int ),            ?/?( unsigned long int, long unsigned ),        ?%?( long unsigned, long unsigned );
138signed long long int    ?*?( signed long long int, signed long long int ),      ?/?( signed long long int, signed long long int ), ?%?( signed long long int, signed long long int );
139unsigned long long int  ?*?( unsigned long long int, unsigned long long int ),  ?/?( unsigned long long int, long long unsigned ), ?%?( long long unsigned, long long unsigned );
140float                   ?*?( float, float ),                                    ?/?( float, float );
141double                  ?*?( double, double ),                                  ?/?( double, double );
142long double             ?*?( long double, long double ),                        ?/?( long double, long double );
143// gcc does not support _Imaginary
144//float _Imaginary      ?*?( float _Imaginary, float _Imaginary),               ?/?( float _Imaginary, float _Imaginary );
145//double _Imaginary     ?*?( double _Imaginary, double _Imaginary),             ?/?( double _Imaginary, double _Imaginary );
146//long double _Imaginary        ?*?( long double _Imaginary, long double _Imaginary),   ?/?( long double _Imaginary, long double _Imaginary );
147float _Complex          ?*?( float _Complex, float _Complex ),                  ?/?( float _Complex, float _Complex );
148double _Complex         ?*?( double _Complex, double _Complex ),                ?/?( double _Complex, double _Complex );
149long double _Complex    ?*?( long double _Complex, long double _Complex ),      ?/?( long double _Complex, long double _Complex );
150
151// ------------------------------------------------------------
152//
153// Section 4.6 Additive Operators
154//
155// ------------------------------------------------------------
156
157_Bool                   ?+?( _Bool, _Bool ),                                    ?-?( _Bool, _Bool );
158signed int              ?+?( signed int, signed int ),                          ?-?( signed int, signed int );
159unsigned int            ?+?( unsigned int, unsigned int ),                      ?-?( unsigned int, unsigned int );
160signed long int         ?+?( signed long int, signed long int ),                ?-?( signed long int, signed long int );
161unsigned long int       ?+?( unsigned long int, unsigned long int ),            ?-?( unsigned long int, long unsigned );
162signed long long int    ?+?( signed long long int, long long int  signed),      ?-?( signed long long int, signed long long int );
163unsigned long long int  ?+?( unsigned long long int, unsigned long long int ),  ?-?( unsigned long long int, long long unsigned );
164float                   ?+?( float, float ),                                    ?-?( float, float );
165double                  ?+?( double, double ),                                  ?-?( double, double );
166long double             ?+?( long double, long double ),                        ?-?( long double, long double );
167float _Complex          ?+?( float _Complex, float _Complex ),                  ?-?( float _Complex, float _Complex );
168double _Complex         ?+?( double _Complex, double _Complex ),                ?-?( double _Complex, double _Complex );
169long double _Complex    ?+?( long double _Complex, long double _Complex ),      ?-?( long double _Complex, long double _Complex );
170
171forall( type T ) T *                    ?+?(                T *,          ptrdiff_t );
172forall( type T ) T *                    ?+?(          ptrdiff_t,                T * );
173forall( type T ) const T *              ?+?( const          T *,          ptrdiff_t );
174forall( type T ) const T *              ?+?(          ptrdiff_t, const          T * );
175forall( type T ) volatile T *           ?+?(       volatile T *,          ptrdiff_t );
176forall( type T ) volatile T *           ?+?(          ptrdiff_t,       volatile T * );
177forall( type T ) const volatile T *     ?+?( const volatile T *,          ptrdiff_t );
178forall( type T ) const volatile T *     ?+?(          ptrdiff_t, const volatile T * );
179forall( type T ) T *                    ?-?(                T *,          ptrdiff_t );
180forall( type T ) const T *              ?-?( const          T *,          ptrdiff_t );
181forall( type T ) volatile T *           ?-?(       volatile T *,          ptrdiff_t );
182forall( type T ) const volatile T *     ?-?( const volatile T *,          ptrdiff_t );
183forall( type T ) ptrdiff_t              ?-?( const volatile T *, const volatile T * );
184
185// ------------------------------------------------------------
186//
187// Section 4.7 Bitwise Shift Operators
188//
189// ------------------------------------------------------------
190
191_Bool                   ?<<?( _Bool, _Bool ),                           ?>>?( _Bool, _Bool );
192signed int              ?<<?( signed int, signed int ),                 ?>>?( signed int, signed int );
193unsigned int            ?<<?( unsigned int, unsigned int ),             ?>>?( unsigned int, unsigned int );
194signed long int         ?<<?( signed long int, signed long int ),       ?>>?( signed long int, signed long int );
195unsigned long int       ?<<?( unsigned long int, long unsigned ),       ?>>?( unsigned long int, unsigned long int );
196
197// ------------------------------------------------------------
198//
199// Section 4.8 Relational Operators
200//
201// ------------------------------------------------------------
202
203signed int ?<?( _Bool, _Bool ),                         ?<=?( _Bool, _Bool ),
204           ?>?( _Bool, _Bool ),                         ?>=?( _Bool, _Bool );
205signed int ?<?( signed int, signed int ),               ?<=?( signed int, signed int ),
206           ?>?( signed int, signed int ),               ?>=?( signed int, signed int );
207signed int ?<?( unsigned int, unsigned int ),           ?<=?( unsigned int, unsigned int ),
208           ?>?( unsigned int, unsigned int ),           ?>=?( unsigned int, unsigned int );
209signed int ?<?( signed long int, signed long int ),     ?<=?( signed long int, signed long int ),
210           ?>?( signed long int, signed long int ),     ?>=?( signed long int, signed long int );
211signed int ?<?( unsigned long int, unsigned long int ), ?<=?( unsigned long int, unsigned long int ),
212           ?>?( unsigned long int, unsigned long int ), ?>=?( unsigned long int, unsigned long int );
213signed int ?<?( float, float ),                         ?<=?( float, float ),
214           ?>?( float, float ),                         ?>=?( float, float );
215signed int ?<?( double, double ),                       ?<=?( double, double ),
216           ?>?( double, double ),                       ?>=?( double, double );
217signed int ?<?( long double, long double ),             ?<=?( long double, long double ),
218           ?>?( long double, long double ),             ?>=?( long double, long double );
219
220forall( dtype DT ) signed int ?<?(  const volatile DT *, const volatile DT * );
221forall( dtype DT ) signed int ?>?(  const volatile DT *, const volatile DT * );
222forall( dtype DT ) signed int ?<=?( const volatile DT *, const volatile DT * );
223forall( dtype DT ) signed int ?>=?( const volatile DT *, const volatile DT * );
224
225// ------------------------------------------------------------
226//
227// Section 4.9 Equality Operators
228//
229// ------------------------------------------------------------
230
231signed int ?==?( _Bool, _Bool ),                                ?!=?( _Bool, _Bool );
232signed int ?==?( signed int, signed int ),                      ?!=?( signed int, signed int );
233signed int ?==?( unsigned int, unsigned int ),                  ?!=?( unsigned int, unsigned int );
234signed int ?==?( signed long int, signed long int ),            ?!=?( signed long int, signed long int );
235signed int ?==?( unsigned long int, unsigned long int ),        ?!=?( unsigned long int, long unsigned );
236signed int ?==?( signed long long int, long long int  signed),  ?!=?( signed long long int, signed long long int );
237signed int ?==?( unsigned long long int, unsigned long long int ), ?!=?( unsigned long long int, long long unsigned );
238signed int ?==?( float, float ),                                ?!=?( float, float );
239signed int ?==?( double, double ),                              ?!=?( double, double );
240signed int ?==?( long double, long double ),                    ?!=?( long double, long double );
241signed int ?==?( float _Complex, float _Complex ),              ?!=?( float _Complex, float _Complex );
242signed int ?==?( double _Complex, double _Complex ),            ?!=?( double _Complex, double _Complex );
243signed int ?==?( long double _Complex, long double _Complex ),  ?!=?( long double _Complex, long double _Complex );
244
245forall( dtype DT ) signed int ?==?(                DT *,                DT * );
246forall( dtype DT ) signed int ?==?( const          DT *, const          DT * );
247forall( dtype DT ) signed int ?==?(       volatile DT *,       volatile DT * );
248forall( dtype DT ) signed int ?==?( const volatile DT *, const volatile DT * );
249forall( ftype FT ) signed int ?==?( FT *, FT * );
250forall( dtype DT ) signed int ?!=?(                DT *,                DT * );
251forall( dtype DT ) signed int ?!=?( const          DT *, const          DT * );
252forall( dtype DT ) signed int ?!=?(       volatile DT *,       volatile DT * );
253forall( dtype DT ) signed int ?!=?( const volatile DT *, const volatile DT * );
254forall( ftype FT ) signed int ?!=?( FT *, FT * );
255
256forall( dtype DT ) signed int ?==?( const volatile DT   *, const volatile void * );
257forall( dtype DT ) signed int ?==?( const volatile void *, const volatile DT * );
258forall( dtype DT ) signed int ?!=?( const volatile DT   *, const volatile void * );
259forall( dtype DT ) signed int ?!=?( const volatile void *, const volatile DT * );
260
261forall( dtype DT ) signed int ?==?( const volatile DT *, forall( dtype DT2 )const DT2 * );
262forall( dtype DT ) signed int ?==?( forall( dtype DT2 )const DT2 *, const volatile DT * );
263forall( ftype FT ) signed int ?==?( FT *, forall( ftype FT2 )FT2 * );
264forall( ftype FT ) signed int ?==?( forall( ftype FT2 )FT2 *, FT * );
265forall( dtype DT ) signed int ?!=?( const volatile DT *, forall( dtype DT2 )const DT2 * );
266forall( dtype DT ) signed int ?!=?( forall( dtype DT2 )const DT2 *, const volatile DT * );
267forall( ftype FT ) signed int ?!=?( FT *, forall( ftype FT2 )FT2 * );
268forall( ftype FT ) signed int ?!=?( forall( ftype FT2 )FT2 *, FT * );
269
270// ------------------------------------------------------------
271//
272// Section 4.10 Bitwise AND Operators
273//
274// ------------------------------------------------------------
275
276_Bool                   ?&?( _Bool, _Bool );
277signed int              ?&?( signed int, signed int );
278unsigned int            ?&?( unsigned int, unsigned int );
279signed long int         ?&?( signed long int, signed long int );
280unsigned long int       ?&?( unsigned long int, unsigned long int );
281
282// ------------------------------------------------------------
283//
284// Section 4.11 Bitwise XOR Operators
285//
286// ------------------------------------------------------------
287
288_Bool                   ?^?( _Bool, _Bool );
289signed int              ?^?( signed int, signed int );
290unsigned int            ?^?( unsigned int, unsigned int );
291signed long int         ?^?( signed long int, signed long int );
292unsigned long int       ?^?( unsigned long int, unsigned long int );
293
294// ------------------------------------------------------------
295//
296// Section 4.12 Bitwise OR Operators
297//
298// ------------------------------------------------------------
299
300_Bool                   ?|?( _Bool, _Bool );
301signed int              ?|?( signed int, signed int );
302unsigned int            ?|?( unsigned int, unsigned int );
303signed long int         ?|?( signed long int, signed long int );
304unsigned long int       ?|?( unsigned long int, unsigned long int );
305
306// ------------------------------------------------------------
307//
308// Section 4.16 Assignment Operator
309//
310// ------------------------------------------------------------
311
312forall( ftype FT ) FT *                 ?=?( FT **, FT * );
313forall( ftype FT ) FT *                 ?=?( FT * volatile *, FT * );
314
315forall( dtype DT ) DT *                 ?=?(                 DT *          *,                   DT * );
316forall( dtype DT ) DT *                 ?=?(                 DT * volatile *,                   DT * );
317forall( dtype DT ) const DT *           ?=?( const           DT *          *,                   DT * );
318forall( dtype DT ) const DT *           ?=?( const           DT * volatile *,                   DT * );
319forall( dtype DT ) const DT *           ?=?( const           DT *          *, const             DT * );
320forall( dtype DT ) const DT *           ?=?( const           DT * volatile *, const             DT * );
321forall( dtype DT ) volatile DT *        ?=?(       volatile  DT *          *,                   DT * );
322forall( dtype DT ) volatile DT *        ?=?(       volatile  DT * volatile *,                   DT * );
323forall( dtype DT ) volatile DT *        ?=?(       volatile  DT *          *,       volatile    DT * );
324forall( dtype DT ) volatile DT *        ?=?(       volatile  DT * volatile *,       volatile    DT * );
325
326forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *,                   DT * );
327forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *,                   DT * );
328forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *, const             DT * );
329forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *, const             DT * );
330forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *,       volatile    DT * );
331forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *,       volatile    DT * );
332forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *, const volatile    DT * );
333forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *, const volatile    DT * );
334
335forall( dtype DT ) DT *                 ?=?(                 DT *          *,                   void * );
336forall( dtype DT ) DT *                 ?=?(                 DT * volatile *,                   void * );
337forall( dtype DT ) const DT *           ?=?( const           DT *          *,                   void * );
338forall( dtype DT ) const DT *           ?=?( const           DT * volatile *,                   void * );
339forall( dtype DT ) const DT *           ?=?( const           DT *          *, const             void * );
340forall( dtype DT ) const DT *           ?=?( const           DT * volatile *, const             void * );
341forall( dtype DT ) volatile DT *        ?=?(       volatile  DT *          *,                   void * );
342forall( dtype DT ) volatile DT *        ?=?(       volatile  DT * volatile *,                   void * );
343forall( dtype DT ) volatile DT *        ?=?(       volatile  DT *          *,       volatile    void * );
344forall( dtype DT ) volatile DT *        ?=?(       volatile  DT * volatile *,       volatile    void * );
345
346forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *,                   void * );
347forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *,                   void * );
348forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *, const             void * );
349forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *, const             void * );
350forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *,       volatile    void * );
351forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *,       volatile    void * );
352forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *, const volatile    void * );
353forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *, const volatile    void * );
354
355forall( dtype DT ) void *                ?=?(                void *          *,                 DT * );
356forall( dtype DT ) void *                ?=?(                void * volatile *,                 DT * );
357forall( dtype DT ) const void *          ?=?( const          void *          *,                 DT * );
358forall( dtype DT ) const void *          ?=?( const          void * volatile *,                 DT * );
359forall( dtype DT ) const void *          ?=?( const          void *          *, const           DT * );
360forall( dtype DT ) const void *          ?=?( const          void * volatile *, const           DT * );
361forall( dtype DT ) volatile void *       ?=?(       volatile void *          *,                 DT * );
362forall( dtype DT ) volatile void *       ?=?(       volatile void * volatile *,                 DT * );
363forall( dtype DT ) volatile void *       ?=?(       volatile void *          *,       volatile  DT * );
364forall( dtype DT ) volatile void *       ?=?(       volatile void * volatile *,       volatile  DT * );
365forall( dtype DT ) const volatile void * ?=?( const volatile void *          *,                 DT * );
366forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *,                 DT * );
367forall( dtype DT ) const volatile void * ?=?( const volatile void *          *, const           DT * );
368forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *, const           DT * );
369forall( dtype DT ) const volatile void * ?=?( const volatile void *          *,       volatile  DT * );
370forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *,       volatile  DT * );
371forall( dtype DT ) const volatile void * ?=?( const volatile void *          *, const volatile  DT * );
372forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *, const volatile  DT * );
373
374void *                  ?=?(                void *          *,                void * );
375void *                  ?=?(                void * volatile *,                void * );
376const void *            ?=?( const          void *          *,                void * );
377const void *            ?=?( const          void * volatile *,                void * );
378const void *            ?=?( const          void *          *, const          void * );
379const void *            ?=?( const          void * volatile *, const          void * );
380volatile void *         ?=?(       volatile void *          *,                void * );
381volatile void *         ?=?(       volatile void * volatile *,                void * );
382volatile void *         ?=?(       volatile void *          *,       volatile void * );
383volatile void *         ?=?(       volatile void * volatile *,       volatile void * );
384const volatile void *   ?=?( const volatile void *          *,                void * );
385const volatile void *   ?=?( const volatile void * volatile *,                void * );
386const volatile void *   ?=?( const volatile void *          *, const          void * );
387const volatile void *   ?=?( const volatile void * volatile *, const          void * );
388const volatile void *   ?=?( const volatile void *          *,       volatile void * );
389const volatile void *   ?=?( const volatile void * volatile *,       volatile void * );
390const volatile void *   ?=?( const volatile void *          *, const volatile void * );
391const volatile void *   ?=?( const volatile void * volatile *, const volatile void * );
392
393forall( dtype DT ) DT *                 ?=?(                DT *          *, forall( dtype DT2 ) const DT2 * );
394forall( dtype DT ) DT *                 ?=?(                DT * volatile *, forall( dtype DT2 ) const DT2 * );
395forall( dtype DT ) const DT *           ?=?( const          DT *          *, forall( dtype DT2 ) const DT2 * );
396forall( dtype DT ) const DT *           ?=?( const          DT * volatile *, forall( dtype DT2 ) const DT2 * );
397forall( dtype DT ) volatile DT *        ?=?( volatile       DT *          *, forall( dtype DT2 ) const DT2 * );
398forall( dtype DT ) volatile DT *        ?=?( volatile       DT * volatile *, forall( dtype DT2 ) const DT2 * );
399forall( dtype DT ) const volatile DT *  ?=?( const volatile DT *          *, forall( dtype DT2 ) const DT2 * );
400forall( dtype DT ) const volatile DT *  ?=?( const volatile DT * volatile *, forall( dtype DT2 ) const DT2 * );
401
402forall( ftype FT ) FT *                 ?=?( FT *          *, forall( ftype FT2 ) FT2 * );
403forall( ftype FT ) FT *                 ?=?( FT * volatile *, forall( ftype FT2 ) FT2 * );
404
405forall( type T ) T *                    ?+=?(                T *          *, ptrdiff_t );
406forall( type T ) T *                    ?+=?(                T * volatile *, ptrdiff_t );
407forall( type T ) const T *              ?+=?( const          T *          *, ptrdiff_t );
408forall( type T ) const T *              ?+=?( const          T * volatile *, ptrdiff_t );
409forall( type T ) volatile T *           ?+=?(       volatile T *          *, ptrdiff_t );
410forall( type T ) volatile T *           ?+=?(       volatile T * volatile *, ptrdiff_t );
411forall( type T ) const volatile T *     ?+=?( const volatile T *          *, ptrdiff_t );
412forall( type T ) const volatile T *     ?+=?( const volatile T * volatile *, ptrdiff_t );
413forall( type T ) T *                    ?-=?(                T *          *, ptrdiff_t );
414forall( type T ) T *                    ?-=?(                T * volatile *, ptrdiff_t );
415forall( type T ) const T *              ?-=?( const          T *          *, ptrdiff_t );
416forall( type T ) const T *              ?-=?( const          T * volatile *, ptrdiff_t );
417forall( type T ) volatile T *           ?-=?(       volatile T *          *, ptrdiff_t );
418forall( type T ) volatile T *           ?-=?(       volatile T * volatile *, ptrdiff_t );
419forall( type T ) const volatile T *     ?-=?( const volatile T *          *, ptrdiff_t );
420forall( type T ) const volatile T *     ?-=?( const volatile T * volatile *, ptrdiff_t );
421
422_Bool                   ?=?( _Bool *, _Bool ),                                  ?=?( volatile _Bool *, _Bool );
423char                    ?=?( char *, char ),                                    ?=?( volatile char *, char );
424char signed             ?=?( char signed *, char signed ),                      ?=?( volatile char signed *, char signed );
425char unsigned           ?=?( char unsigned *, char unsigned ),                  ?=?( volatile char unsigned *, char unsigned );
426int short               ?=?( int short *, int short ),                          ?=?( volatile int short *, int short );
427int short unsigned      ?=?( int short unsigned *, int short unsigned ),        ?=?( volatile int short unsigned *, int short unsigned );
428signed int              ?=?( signed int *, signed int ),                        ?=?( volatile signed int *, signed int );
429unsigned int            ?=?( unsigned *, unsigned ),                            ?=?( volatile unsigned *, unsigned );
430signed long int         ?=?( signed long int *, signed long int ),              ?=?( volatile signed long int *, signed long int );
431unsigned long int       ?=?( unsigned long int *, unsigned long int ),          ?=?( volatile unsigned long int *, unsigned long int );
432signed long long int    ?=?( signed long long int *, signed long long int ),    ?=?( volatile signed long long int *, signed long long int );
433unsigned long long int  ?=?( unsigned long long int *, unsigned long long int ), ?=?( volatile unsigned long long int *, unsigned long long int );
434
435_Bool                   ?*=?( _Bool *, _Bool ),                                 ?*=?( volatile _Bool *, _Bool );
436char                    ?*=?( char *, char ),                                   ?*=?( volatile char *, char );
437char signed             ?*=?( char signed *, char signed ),                     ?*=?( volatile char signed *, char signed );
438char unsigned           ?*=?( char unsigned *, char unsigned ),                 ?*=?( volatile char unsigned *, char unsigned );
439int short               ?*=?( int short *, int short ),                         ?*=?( volatile int short *, int short );
440int short unsigned      ?*=?( int short unsigned *, int short unsigned ),       ?*=?( volatile int short unsigned *, int short unsigned );
441signed int              ?*=?( signed int *, signed int ),                       ?*=?( volatile signed int *, signed int );
442unsigned int            ?*=?( unsigned *, unsigned ),                           ?*=?( volatile unsigned *, unsigned );
443signed long int         ?*=?( signed long int *, signed long int ),             ?*=?( volatile signed long int *, signed long int );
444unsigned long int       ?*=?( unsigned long int *, unsigned long int ),         ?*=?( volatile unsigned long int *, unsigned long int );
445signed long long int    ?*=?( signed long long int *, signed long long int ),   ?*=?( volatile signed long long int *, signed long long int );
446unsigned long long int  ?*=?( unsigned long long int *, unsigned long long int ), ?*=?( volatile unsigned long long int *, unsigned long long int );
447
448_Bool                   ?/=?( _Bool *, _Bool ),                                 ?/=?( volatile _Bool *, _Bool );
449char                    ?/=?( char *, char ),                                   ?/=?( volatile char *, char );
450char signed             ?/=?( char signed *, char signed ),                     ?/=?( volatile char signed *, char signed );
451char unsigned           ?/=?( char unsigned *, char unsigned ),                 ?/=?( volatile char unsigned *, char unsigned );
452int short               ?/=?( int short *, int short ),                         ?/=?( volatile int short *, int short );
453int short unsigned      ?/=?( int short unsigned *, int short unsigned ),       ?/=?( volatile int short unsigned *, int short unsigned );
454signed int              ?/=?( signed int *, signed int ),                       ?/=?( volatile signed int *, signed int );
455unsigned int            ?/=?( unsigned *, unsigned ),                           ?/=?( volatile unsigned *, unsigned );
456signed long int         ?/=?( signed long int *, signed long int ),             ?/=?( volatile signed long int *, signed long int );
457unsigned long int       ?/=?( unsigned long int *, unsigned long int ),         ?/=?( volatile unsigned long int *, unsigned long int );
458signed long long int    ?/=?( signed long long int *, signed long long int ),   ?/=?( volatile signed long long int *, signed long long int );
459unsigned long long int  ?/=?( unsigned long long int *, unsigned long long int ), ?/=?( volatile unsigned long long int *, unsigned long long int );
460
461_Bool                   ?%=?( _Bool *, _Bool ),                                 ?%=?( volatile _Bool *, _Bool );
462char                    ?%=?( char *, char ),                                   ?%=?( volatile char *, char );
463char signed             ?%=?( char signed *, char signed ),                     ?%=?( volatile char signed *, char signed );
464char unsigned           ?%=?( char unsigned *, char unsigned ),                 ?%=?( volatile char unsigned *, char unsigned );
465int short               ?%=?( int short *, int short ),                         ?%=?( volatile int short *, int short );
466int short unsigned      ?%=?( int short unsigned *, int short unsigned ),       ?%=?( volatile int short unsigned *, int short unsigned );
467signed int              ?%=?( signed int *, signed int ),                       ?%=?( volatile signed int *, signed int );
468unsigned int            ?%=?( unsigned *, unsigned ),                           ?%=?( volatile unsigned *, unsigned );
469signed long int         ?%=?( signed long int *, signed long int ),             ?%=?( volatile signed long int *, signed long int );
470unsigned long int       ?%=?( unsigned long int *, unsigned long int ),         ?%=?( volatile unsigned long int *, unsigned long int );
471signed long long int    ?%=?( signed long long int *, signed long long int ),   ?%=?( volatile signed long long int *, signed long long int );
472unsigned long long int  ?%=?( unsigned long long int *, unsigned long long int ), ?%=?( volatile unsigned long long int *, unsigned long long int );
473
474_Bool                   ?+=?( _Bool *, _Bool ),                                 ?+=?( volatile _Bool *, _Bool );
475char                    ?+=?( char *, char ),                                   ?+=?( volatile char *, char );
476char signed             ?+=?( char signed *, char signed ),                     ?+=?( volatile char signed *, char signed );
477char unsigned           ?+=?( char unsigned *, char unsigned ),                 ?+=?( volatile char unsigned *, char unsigned );
478int short               ?+=?( int short *, int short ),                         ?+=?( volatile int short *, int short );
479int short unsigned      ?+=?( int short unsigned *, int short unsigned ),       ?+=?( volatile int short unsigned *, int short unsigned );
480signed int              ?+=?( signed int *, signed int ),                       ?+=?( volatile signed int *, signed int );
481unsigned int            ?+=?( unsigned *, unsigned ),                           ?+=?( volatile unsigned *, unsigned );
482signed long int         ?+=?( signed long int *, signed long int ),             ?+=?( volatile signed long int *, signed long int );
483unsigned long int       ?+=?( unsigned long int *, unsigned long int ),         ?+=?( volatile unsigned long int *, unsigned long int );
484signed long long int    ?+=?( signed long long int *, signed long long int ),   ?+=?( volatile signed long long int *, signed long long int );
485unsigned long long int  ?+=?( unsigned long long int *, unsigned long long int ), ?+=?( volatile unsigned long long int *, unsigned long long int );
486
487_Bool                   ?-=?( _Bool *, _Bool ),                                 ?-=?( volatile _Bool *, _Bool );
488char                    ?-=?( char *, char ),                                   ?-=?( volatile char *, char );
489char signed             ?-=?( char signed *, char signed ),                     ?-=?( volatile char signed *, char signed );
490char unsigned           ?-=?( char unsigned *, char unsigned ),                 ?-=?( volatile char unsigned *, char unsigned );
491int short               ?-=?( int short *, int short ),                         ?-=?( volatile int short *, int short );
492int short unsigned      ?-=?( int short unsigned *, int short unsigned ),       ?-=?( volatile int short unsigned *, int short unsigned );
493signed int              ?-=?( signed int *, signed int ),                       ?-=?( volatile signed int *, signed int );
494unsigned int            ?-=?( unsigned *, unsigned ),                           ?-=?( volatile unsigned *, unsigned );
495signed long int         ?-=?( signed long int *, signed long int ),             ?-=?( volatile signed long int *, signed long int );
496unsigned long int       ?-=?( unsigned long int *, unsigned long int ),         ?-=?( volatile unsigned long int *, unsigned long int );
497signed long long int    ?-=?( signed long long int *, signed long long int ),   ?-=?( volatile signed long long int *, signed long long int );
498unsigned long long int  ?-=?( unsigned long long int *, unsigned long long int ), ?-=?( volatile unsigned long long int *, unsigned long long int );
499
500_Bool                   ?<<=?( _Bool *, _Bool ),                                ?<<=?( volatile _Bool *, _Bool );
501char                    ?<<=?( char *, char ),                                  ?<<=?( volatile char *, char );
502char signed             ?<<=?( char signed *, char signed ),                    ?<<=?( volatile char signed *, char signed );
503char unsigned           ?<<=?( char unsigned *, char unsigned ),                ?<<=?( volatile char unsigned *, char unsigned );
504int short               ?<<=?( int short *, int short ),                        ?<<=?( volatile int short *, int short );
505int short unsigned      ?<<=?( int short unsigned *, int short unsigned ),      ?<<=?( volatile int short unsigned *, int short unsigned );
506signed int              ?<<=?( signed int *, signed int ),                      ?<<=?( volatile signed int *, signed int );
507unsigned int            ?<<=?( unsigned *, unsigned ),                          ?<<=?( volatile unsigned *, unsigned );
508signed long int         ?<<=?( signed long int *, signed long int ),            ?<<=?( volatile signed long int *, signed long int );
509unsigned long int       ?<<=?( unsigned long int *, unsigned long int ),        ?<<=?( volatile unsigned long int *, unsigned long int );
510signed long long int    ?<<=?( signed long long int *, signed long long int ),  ?<<=?( volatile signed long long int *, signed long long int );
511unsigned long long int  ?<<=?( unsigned long long int *, unsigned long long int ), ?<<=?( volatile unsigned long long int *, unsigned long long int );
512
513_Bool                   ?>>=?( _Bool *, _Bool ),                                ?>>=?( volatile _Bool *, _Bool );
514char                    ?>>=?( char *, char ),                                  ?>>=?( volatile char *, char );
515char signed             ?>>=?( char signed *, char signed ),                    ?>>=?( volatile char signed *, char signed );
516char unsigned           ?>>=?( char unsigned *, char unsigned ),                ?>>=?( volatile char unsigned *, char unsigned );
517int short               ?>>=?( int short *, int short ),                        ?>>=?( volatile int short *, int short );
518int short unsigned      ?>>=?( int short unsigned *, int short unsigned ),      ?>>=?( volatile int short unsigned *, int short unsigned );
519signed int              ?>>=?( signed int *, signed int ),                      ?>>=?( volatile signed int *, signed int );
520unsigned int            ?>>=?( unsigned *, unsigned ),                          ?>>=?( volatile unsigned *, unsigned );
521signed long int         ?>>=?( signed long int *, signed long int ),            ?>>=?( volatile signed long int *, signed long int );
522unsigned long int       ?>>=?( unsigned long int *, unsigned long int ),        ?>>=?( volatile unsigned long int *, unsigned long int );
523signed long long int    ?>>=?( signed long long int *, signed long long int ),  ?>>=?( volatile signed long long int *, signed long long int );
524unsigned long long int  ?>>=?( unsigned long long int *, unsigned long long int ), ?>>=?( volatile unsigned long long int *, unsigned long long int );
525
526_Bool                   ?&=?( _Bool *, _Bool ),                                 ?&=?( volatile _Bool *, _Bool );
527char                    ?&=?( char *, char ),                                   ?&=?( volatile char *, char );
528char signed             ?&=?( char signed *, char signed ),                     ?&=?( volatile char signed *, char signed );
529char unsigned           ?&=?( char unsigned *, char unsigned ),                 ?&=?( volatile char unsigned *, char unsigned );
530int short               ?&=?( int short *, int short ),                         ?&=?( volatile int short *, int short );
531int short unsigned      ?&=?( int short unsigned *, int short unsigned ),       ?&=?( volatile int short unsigned *, int short unsigned );
532signed int              ?&=?( signed int *, signed int ),                       ?&=?( volatile signed int *, signed int );
533unsigned int            ?&=?( unsigned *, unsigned ),                           ?&=?( volatile unsigned *, unsigned );
534signed long int         ?&=?( signed long int *, signed long int ),             ?&=?( volatile signed long int *, signed long int );
535unsigned long int       ?&=?( unsigned long int *, unsigned long int ),         ?&=?( volatile unsigned long int *, unsigned long int );
536signed long long int    ?&=?( signed long long int *, signed long long int ),   ?&=?( volatile signed long long int *, signed long long int );
537unsigned long long int  ?&=?( unsigned long long int *, unsigned long long int ), ?&=?( volatile unsigned long long int *, unsigned long long int );
538
539_Bool                   ?|=?( _Bool *, _Bool ),                                 ?|=?( volatile _Bool *, _Bool );
540char                    ?|=?( char *, char ),                                   ?|=?( volatile char *, char );
541char signed             ?|=?( char signed *, char signed ),                     ?|=?( volatile char signed *, char signed );
542char unsigned           ?|=?( char unsigned *, char unsigned ),                 ?|=?( volatile char unsigned *, char unsigned );
543int short               ?|=?( int short *, int short ),                         ?|=?( volatile int short *, int short );
544int short unsigned      ?|=?( int short unsigned *, int short unsigned ),       ?|=?( volatile int short unsigned *, int short unsigned );
545signed int              ?|=?( signed int *, signed int ),                       ?|=?( volatile signed int *, signed int );
546unsigned int            ?|=?( unsigned *, unsigned ),                           ?|=?( volatile unsigned *, unsigned );
547signed long int         ?|=?( signed long int *, signed long int ),             ?|=?( volatile signed long int *, signed long int );
548unsigned long int       ?|=?( unsigned long int *, unsigned long int ),         ?|=?( volatile unsigned long int *, unsigned long int );
549signed long long int    ?|=?( signed long long int *, signed long long int ),   ?|=?( volatile signed long long int *, signed long long int );
550unsigned long long int  ?|=?( unsigned long long int *, unsigned long long int ), ?|=?( volatile unsigned long long int *, unsigned long long int );
551
552_Bool                   ?^=?( _Bool *, _Bool ),                                 ?^=?( volatile _Bool *, _Bool );
553char                    ?^=?( char *, char ),                                   ?^=?( volatile char *, char );
554char signed             ?^=?( char signed *, char signed ),                     ?^=?( volatile char signed *, char signed );
555char unsigned           ?^=?( char unsigned *, char unsigned ),                 ?^=?( volatile char unsigned *, char unsigned );
556int short               ?^=?( int short *, int short ),                         ?^=?( volatile int short *, int short );
557int short unsigned      ?^=?( int short unsigned *, int short unsigned ),       ?^=?( volatile int short unsigned *, int short unsigned );
558signed int              ?^=?( signed int *, signed int ),                       ?^=?( volatile signed int *, signed int );
559unsigned int            ?^=?( unsigned *, unsigned ),                           ?^=?( volatile unsigned *, unsigned );
560signed long int         ?^=?( signed long int *, signed long int ),             ?^=?( volatile signed long int *, signed long int );
561unsigned long int       ?^=?( unsigned long int *, unsigned long int ),         ?^=?( volatile unsigned long int *, unsigned long int );
562signed long long int    ?^=?( signed long long int *, signed long long int ),   ?^=?( volatile signed long long int *, signed long long int );
563unsigned long long int  ?^=?( unsigned long long int *, unsigned long long int ), ?^=?( volatile unsigned long long int *, unsigned long long int );
564
565float                   ?=?(  float *, float ), ?=?(  volatile float *, float ),
566                        ?*=?( float *, float ), ?*=?( volatile float *, float ),
567                        ?/=?( float *, float ), ?/=?( volatile float *, float ),
568                        ?+=?( float *, float ), ?+=?( volatile float *, float ),
569                        ?-=?( float *, float ), ?-=?( volatile float *, float );
570
571double                  ?=?(  double *, double ), ?=?(  volatile double *, double ),
572                        ?*=?( double *, double ), ?*=?( volatile double *, double ),
573                        ?/=?( double *, double ), ?/=?( volatile double *, double ),
574                        ?+=?( double *, double ), ?+=?( volatile double *, double ),
575                        ?-=?( double *, double ), ?-=?( volatile double *, double );
576
577long double             ?=?(  long double *, long double ), ?=?(  volatile long double *, long double ),
578                        ?*=?( long double *, long double ), ?*=?( volatile long double *, long double ),
579                        ?/=?( long double *, long double ), ?/=?( volatile long double *, long double ),
580                        ?+=?( long double *, long double ), ?+=?( volatile long double *, long double ),
581                        ?-=?( long double *, long double ), ?-=?( volatile long double *, long double );
582
583float _Complex          ?=?(  float _Complex *, float _Complex ), ?=?(  volatile float _Complex *, float _Complex ),
584                        ?*=?( float _Complex *, float _Complex ), ?*=?( volatile float _Complex *, float _Complex ),
585                        ?/=?( float _Complex *, float _Complex ), ?/=?( volatile float _Complex *, float _Complex ),
586                        ?+=?( float _Complex *, float _Complex ), ?+=?( volatile float _Complex *, float _Complex ),
587                        ?-=?( float _Complex *, float _Complex ), ?-=?( volatile float _Complex *, float _Complex );
588
589double _Complex         ?=?(  double _Complex *, double _Complex ), ?=?(  volatile double _Complex *, double _Complex ),
590                        ?*=?( double _Complex *, double _Complex ), ?*=?( volatile double _Complex *, double _Complex ),
591                        ?/=?( double _Complex *, double _Complex ), ?/=?( volatile double _Complex *, double _Complex ),
592                        ?+=?( double _Complex *, double _Complex ), ?+=?( volatile double _Complex *, double _Complex ),
593                        ?-=?( double _Complex *, double _Complex ), ?-=?( volatile double _Complex *, double _Complex );
594
595long double _Complex    ?=?(  long double _Complex *, long double _Complex ), ?=?(  volatile long double _Complex *, long double _Complex ),
596                        ?*=?( long double _Complex *, long double _Complex ), ?*=?( volatile long double _Complex *, long double _Complex ),
597                        ?/=?( long double _Complex *, long double _Complex ), ?/=?( volatile long double _Complex *, long double _Complex ),
598                        ?+=?( long double _Complex *, long double _Complex ), ?+=?( volatile long double _Complex *, long double _Complex ),
599                        ?-=?( long double _Complex *, long double _Complex ), ?-=?( volatile long double _Complex *, long double _Complex );
Note: See TracBrowser for help on using the repository browser.