source: libcfa/prelude.cf @ c11e31c

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

add inline and attribute qualifiers, cfa.y comment formatting, fix error message in isIntegralType

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