source: src/prelude/prelude.cf @ 08fc48f

ADTaaron-thesisarm-ehast-experimentalcleanup-dtorsdeferred_resndemanglerenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprnew-envno_listpersistent-indexerpthread-emulationqualifiedEnumresolv-newwith_gc
Last change on this file since 08fc48f was 0b150ec, checked in by Rob Schluntz <rschlunt@…>, 7 years ago

minor zero_t/one_t prelude changes, simplify prelude generation, memory error fixes

  • Property mode set to 100644
File size: 51.9 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 : Tue Jul  5 18:04:40 2016
11// Update Count     : 92
12//
13
14# 2 "prelude.cf"  // needed for error messages from this file
15
16// Section numbers from: http://plg.uwaterloo.ca/~cforall/refrat.pdf
17
18// ------------------------------------------------------------
19//
20// Section 4.1 Primary Expressions
21//
22// ------------------------------------------------------------
23
24//We have none
25
26// ------------------------------------------------------------
27//
28// Section 4.2 Postfix Operators
29//
30// ------------------------------------------------------------
31
32_Bool                   ?++( _Bool * ),                         ?++( volatile _Bool * );
33_Bool                   ?--( _Bool * ),                         ?--( volatile _Bool * );
34unsigned char           ?++( unsigned char * ),                 ?++( volatile unsigned char * );
35signed int              ?++( signed int * ),                    ?++( volatile signed int * );
36signed int              ?--( signed int * ),                    ?--( volatile signed int * );
37unsigned int            ?++( unsigned int * ),                  ?++( volatile unsigned int * );
38unsigned int            ?--( unsigned int * ),                  ?--( volatile unsigned int * );
39signed long int         ?++( signed long int * ),               ?++( volatile signed long int * );
40signed long int         ?--( signed long int * ),               ?--( volatile signed long int * );
41unsigned long int       ?++( unsigned long int * ),             ?++( volatile unsigned long int * );
42unsigned long int       ?--( unsigned long int * ),             ?--( volatile unsigned long int * );
43signed long long int    ?++( signed long long int * ),          ?++( volatile signed long long int * );
44signed long long int    ?--( signed long long int * ),          ?--( volatile signed long long int * );
45unsigned long long int  ?++( unsigned long long int * ),        ?++( volatile unsigned long long int * );
46unsigned long long int  ?--( unsigned long long int * ),        ?--( volatile unsigned long long int * );
47float                   ?++( float * ),                         ?++( volatile float * );
48float                   ?--( float * ),                         ?--( volatile float * );
49double                  ?++( double * ),                        ?++( volatile double * );
50double                  ?--( double * ),                        ?--( volatile double * );
51long double             ?++( long double * ),                   ?++( volatile long double * );
52long double             ?--( long double * ),                   ?--( volatile long double * );
53float _Complex          ?++( float _Complex * ),                ?++( volatile float _Complex * );
54float _Complex          ?--( float _Complex * ),                ?--( volatile float _Complex * );
55double _Complex         ?++( double _Complex * ),               ?++( volatile double _Complex * );
56double _Complex         ?--( double _Complex * ),               ?--( volatile double _Complex * );
57long double _Complex    ?++( long double _Complex * ),          ?++( volatile long double _Complex * );
58long double _Complex    ?--( long double _Complex * ),          ?--( volatile long double _Complex * );
59
60forall( dtype T | sized(T) ) T *                         ?++(                T ** );
61forall( dtype T | sized(T) ) const T *           ?++( const          T ** );
62forall( dtype T | sized(T) ) volatile T *                ?++(       volatile T ** );
63forall( dtype T | sized(T) ) const volatile T *  ?++( const volatile T ** );
64forall( dtype T | sized(T) ) T *                         ?--(                T ** );
65forall( dtype T | sized(T) ) const T *           ?--( const          T ** );
66forall( dtype T | sized(T) ) volatile T *                ?--(       volatile T ** );
67forall( dtype T | sized(T) ) const volatile T *  ?--( const volatile T ** );
68
69forall( dtype T | sized(T) ) lvalue T            ?[?](                T *,          ptrdiff_t );
70forall( dtype T | sized(T) ) const lvalue T      ?[?]( const          T *,          ptrdiff_t );
71forall( dtype T | sized(T) ) volatile lvalue T   ?[?](       volatile T *,          ptrdiff_t );
72forall( dtype T | sized(T) ) const volatile lvalue T ?[?]( const volatile T *,      ptrdiff_t );
73forall( dtype T | sized(T) ) lvalue T            ?[?](          ptrdiff_t,                T * );
74forall( dtype T | sized(T) ) const lvalue T      ?[?](          ptrdiff_t, const          T * );
75forall( dtype T | sized(T) ) volatile lvalue T   ?[?](          ptrdiff_t,       volatile T * );
76forall( dtype T | sized(T) ) const volatile lvalue T ?[?](              ptrdiff_t, const volatile T * );
77
78// ------------------------------------------------------------
79//
80// Section 4.3 Unary Operators
81//
82// ------------------------------------------------------------
83
84_Bool                   ++?( _Bool * ),                         --?( _Bool * );
85signed int              ++?( signed int * ),                    --?( signed int * );
86unsigned int            ++?( unsigned int * ),                  --?( unsigned int * );
87signed long int         ++?( signed long int * ),               --?( signed long int * );
88unsigned long int       ++?( unsigned long int * ),             --?( unsigned long int * );
89signed long long int    ++?( signed long long int * ),          --?( signed long long int * );
90unsigned long long int  ++?( unsigned long long int * ),        --?( unsigned long long int * );
91float                   ++?( float * ),                         --?( float * );
92double                  ++?( double * ),                        --?( double * );
93long double             ++?( long double * ),                   --?( long double * );
94float _Complex          ++?( float _Complex * ),                --?( float _Complex * );
95double _Complex         ++?( double _Complex * ),               --?( double _Complex * );
96long double _Complex    ++?( long double _Complex * ),          --?( long double _Complex * );
97
98forall( dtype T | sized(T) ) T *                         ++?(                T ** );
99forall( dtype T | sized(T) ) const T *           ++?( const          T ** );
100forall( dtype T | sized(T) ) volatile T *                ++?(       volatile T ** );
101forall( dtype T | sized(T) ) const volatile T *  ++?( const volatile T ** );
102forall( dtype T | sized(T) ) T *                         --?(                T ** );
103forall( dtype T | sized(T) ) const T *           --?( const          T ** );
104forall( dtype T | sized(T) ) volatile T *                --?(       volatile T ** );
105forall( dtype T | sized(T) ) const volatile T *  --?( const volatile T ** );
106
107forall( dtype T | sized(T) ) lvalue T            *?(                 T * );
108forall( dtype T | sized(T) ) const lvalue T              *?( const           T * );
109forall( dtype T | sized(T) ) volatile lvalue T   *?(       volatile  T * );
110forall( dtype T | sized(T) ) const volatile lvalue T *?( const volatile  T * );
111forall( ftype FT ) lvalue FT             *?( FT * );
112
113_Bool                   +?( _Bool ),                    -?( _Bool ),                    ~?( _Bool );
114signed int              +?( signed int ),               -?( signed int ),               ~?( signed int );
115unsigned int            +?( unsigned int ),             -?( unsigned int ),             ~?( unsigned int );
116signed long int         +?( signed long int ),          -?( signed long int ),          ~?( signed long int );
117unsigned long int       +?( unsigned long int ),        -?( unsigned long int ),        ~?( unsigned long int );
118signed long long int    +?( signed long long int ),     -?( signed long long int ),     ~?( signed long long int );
119unsigned long long int  +?( unsigned long long int ),   -?( unsigned long long int ),   ~?( unsigned long long int );
120float                   +?( float ),                    -?( float );
121double                  +?( double ),                   -?( double );
122long double             +?( long double ),              -?( long double );
123float _Complex          +?( float _Complex ),           -?( float _Complex );
124double _Complex         +?( double _Complex ),          -?( double _Complex );
125long double _Complex    +?( long double _Complex ),     -?( long double _Complex );
126
127signed int      !?( signed int ),               !?( unsigned int ),
128                !?( long int ),                 !?( unsigned long int ),
129                !?( long long int ),            !?( unsigned long long int ),
130                !?( float ),                    !?( double ),                   !?( long double ),
131                !?( float _Complex ),           !?( double _Complex ),          !?( long double _Complex );
132
133forall ( dtype DT ) int !?(                DT * );
134forall ( dtype DT ) int !?( const          DT * );
135forall ( dtype DT ) int !?(       volatile DT * );
136forall ( dtype DT ) int !?( const volatile DT * );
137forall ( ftype FT ) int !?( FT * );
138
139// ------------------------------------------------------------
140//
141// Section 4.5 Multiplicative Operators
142//
143// ------------------------------------------------------------
144
145_Bool                   ?*?( _Bool, _Bool ),                                    ?/?( _Bool, _Bool ),                            ?%?( _Bool, _Bool );
146signed int              ?*?( signed int, signed int ),                          ?/?( signed int, signed int ),                  ?%?( signed int, signed int );
147unsigned int            ?*?( unsigned int, unsigned int ),                      ?/?( unsigned int, unsigned int ),              ?%?( unsigned int, unsigned int );
148signed long int         ?*?( signed long int, signed long int ),                ?/?( signed long int, signed long int ),        ?%?( signed long int, signed long int );
149unsigned long int       ?*?( unsigned long int, unsigned long int ),            ?/?( unsigned long int, unsigned long int ),    ?%?( unsigned long int, unsigned long int );
150signed 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 );
151unsigned long long int  ?*?( unsigned long long int, unsigned long long int ),  ?/?( unsigned long long int, unsigned long long int ), ?%?( unsigned long long int, unsigned long long int );
152float                   ?*?( float, float ),                                    ?/?( float, float );
153double                  ?*?( double, double ),                                  ?/?( double, double );
154long double             ?*?( long double, long double ),                        ?/?( long double, long double );
155// gcc does not support _Imaginary
156//float _Imaginary      ?*?( float _Imaginary, float _Imaginary),               ?/?( float _Imaginary, float _Imaginary );
157//double _Imaginary     ?*?( double _Imaginary, double _Imaginary),             ?/?( double _Imaginary, double _Imaginary );
158//long double _Imaginary        ?*?( long double _Imaginary, long double _Imaginary),   ?/?( long double _Imaginary, long double _Imaginary );
159float _Complex          ?*?( float _Complex, float _Complex ),                  ?/?( float _Complex, float _Complex );
160double _Complex         ?*?( double _Complex, double _Complex ),                ?/?( double _Complex, double _Complex );
161long double _Complex    ?*?( long double _Complex, long double _Complex ),      ?/?( long double _Complex, long double _Complex );
162
163// ------------------------------------------------------------
164//
165// Section 4.6 Additive Operators
166//
167// ------------------------------------------------------------
168
169_Bool                   ?+?( _Bool, _Bool ),                                    ?-?( _Bool, _Bool );
170signed int              ?+?( signed int, signed int ),                          ?-?( signed int, signed int );
171unsigned int            ?+?( unsigned int, unsigned int ),                      ?-?( unsigned int, unsigned int );
172signed long int         ?+?( signed long int, signed long int ),                ?-?( signed long int, signed long int );
173unsigned long int       ?+?( unsigned long int, unsigned long int ),            ?-?( unsigned long int, unsigned long int );
174signed long long int    ?+?( signed long long int, long long int  signed),      ?-?( signed long long int, signed long long int );
175unsigned long long int  ?+?( unsigned long long int, unsigned long long int ),  ?-?( unsigned long long int, unsigned long long int );
176float                   ?+?( float, float ),                                    ?-?( float, float );
177double                  ?+?( double, double ),                                  ?-?( double, double );
178long double             ?+?( long double, long double ),                        ?-?( long double, long double );
179float _Complex          ?+?( float _Complex, float _Complex ),                  ?-?( float _Complex, float _Complex );
180double _Complex         ?+?( double _Complex, double _Complex ),                ?-?( double _Complex, double _Complex );
181long double _Complex    ?+?( long double _Complex, long double _Complex ),      ?-?( long double _Complex, long double _Complex );
182
183forall( dtype T | sized(T) ) T *                        ?+?(                T *,          ptrdiff_t );
184forall( dtype T | sized(T) ) T *                        ?+?(          ptrdiff_t,                T * );
185forall( dtype T | sized(T) ) const T *          ?+?( const          T *,          ptrdiff_t );
186forall( dtype T | sized(T) ) const T *          ?+?(          ptrdiff_t, const          T * );
187forall( dtype T | sized(T) ) volatile T *               ?+?(       volatile T *,          ptrdiff_t );
188forall( dtype T | sized(T) ) volatile T *               ?+?(          ptrdiff_t,       volatile T * );
189forall( dtype T | sized(T) ) const volatile T * ?+?( const volatile T *,          ptrdiff_t );
190forall( dtype T | sized(T) ) const volatile T * ?+?(          ptrdiff_t, const volatile T * );
191forall( dtype T | sized(T) ) T *                        ?-?(                T *,          ptrdiff_t );
192forall( dtype T | sized(T) ) const T *          ?-?( const          T *,          ptrdiff_t );
193forall( dtype T | sized(T) ) volatile T *               ?-?(       volatile T *,          ptrdiff_t );
194forall( dtype T | sized(T) ) const volatile T * ?-?( const volatile T *,          ptrdiff_t );
195forall( dtype T | sized(T) ) ptrdiff_t          ?-?( const volatile T *, const volatile T * );
196
197// ------------------------------------------------------------
198//
199// Section 4.7 Bitwise Shift Operators
200//
201// ------------------------------------------------------------
202
203_Bool                   ?<<?( _Bool, _Bool ),                                   ?>>?( _Bool, _Bool );
204signed int              ?<<?( signed int, signed int ),                         ?>>?( signed int, signed int );
205unsigned int            ?<<?( unsigned int, unsigned int ),                     ?>>?( unsigned int, unsigned int );
206signed long int         ?<<?( signed long int, signed long int ),               ?>>?( signed long int, signed long int );
207unsigned long int       ?<<?( unsigned long int, unsigned long int ),           ?>>?( unsigned long int, unsigned long int );
208signed long long int    ?<<?( signed long long int, signed long long int ),     ?>>?( signed long long int, signed long long int );
209unsigned long long int  ?<<?( unsigned long long int, unsigned long long int ), ?>>?( unsigned long long int, unsigned long 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 ?<?( char, char ),                           ?<=?( char, char ),
220           ?>?( char, char ),                           ?>=?( char, char );
221signed int ?<?( signed char, signed char ),                             ?<=?( signed char, signed char ),
222           ?>?( signed char, signed char ),                             ?>=?( signed char, signed char );
223signed int ?<?( unsigned char, unsigned char ),                         ?<=?( unsigned char, unsigned char ),
224           ?>?( unsigned char, unsigned char ),                         ?>=?( unsigned char, unsigned char );
225signed int ?<?( signed short, signed short ),                           ?<=?( signed short, signed short ),
226           ?>?( signed short, signed short ),                           ?>=?( signed short, signed short );
227signed int ?<?( unsigned short, unsigned short ),                       ?<=?( unsigned short, unsigned short ),
228           ?>?( unsigned short, unsigned short ),                               ?>=?( unsigned short, unsigned short );
229signed int ?<?( signed int, signed int ),                               ?<=?( signed int, signed int ),
230           ?>?( signed int, signed int ),                               ?>=?( signed int, signed int );
231signed int ?<?( unsigned int, unsigned int ),                           ?<=?( unsigned int, unsigned int ),
232           ?>?( unsigned int, unsigned int ),                           ?>=?( unsigned int, unsigned int );
233signed int ?<?( signed long int, signed long int ),                     ?<=?( signed long int, signed long int ),
234           ?>?( signed long int, signed long int ),                     ?>=?( signed long int, signed long int );
235signed int ?<?( unsigned long int, unsigned long int ),                 ?<=?( unsigned long int, unsigned long int ),
236           ?>?( unsigned long int, unsigned long int ),                 ?>=?( unsigned long int, unsigned long int );
237signed int ?<?( signed long long int, signed long long int ),           ?<=?( signed long long int, signed long long int ),
238           ?>?( signed long long int, signed long long int ),           ?>=?( signed long long int, signed long long int );
239signed int ?<?( unsigned long long int, unsigned long long int ),       ?<=?( unsigned long long int, unsigned long long int ),
240           ?>?( unsigned long long int, unsigned long long int ),       ?>=?( unsigned long long int, unsigned long long int );
241signed int ?<?( float, float ),                                         ?<=?( float, float ),
242           ?>?( float, float ),                                         ?>=?( float, float );
243signed int ?<?( double, double ),                                       ?<=?( double, double ),
244           ?>?( double, double ),                                       ?>=?( double, double );
245signed int ?<?( long double, long double ),                             ?<=?( long double, long double ),
246           ?>?( long double, long double ),                             ?>=?( long double, long double );
247
248forall( dtype DT ) signed int ?<?(                 DT *,                DT * );
249forall( dtype DT ) signed int ?<?(  const          DT *, const          DT * );
250forall( dtype DT ) signed int ?<?(        volatile DT *,       volatile DT * );
251forall( dtype DT ) signed int ?<?(  const volatile DT *, const volatile DT * );
252
253forall( dtype DT ) signed int ?>?(                 DT *,                DT * );
254forall( dtype DT ) signed int ?>?(  const          DT *, const          DT * );
255forall( dtype DT ) signed int ?>?(        volatile DT *,       volatile DT * );
256forall( dtype DT ) signed int ?>?(  const volatile DT *, const volatile DT * );
257
258forall( dtype DT ) signed int ?<=?(                 DT *,                DT * );
259forall( dtype DT ) signed int ?<=?(  const          DT *, const          DT * );
260forall( dtype DT ) signed int ?<=?(        volatile DT *,       volatile DT * );
261forall( dtype DT ) signed int ?<=?( const volatile DT *, const volatile DT * );
262
263forall( dtype DT ) signed int ?>=?(                 DT *,                DT * );
264forall( dtype DT ) signed int ?>=?(  const          DT *, const          DT * );
265forall( dtype DT ) signed int ?>=?(        volatile DT *,       volatile DT * );
266forall( dtype DT ) signed int ?>=?( const volatile DT *, const volatile DT * );
267
268// ------------------------------------------------------------
269//
270// Section 4.9 Equality Operators
271//
272// ------------------------------------------------------------
273
274signed int ?==?( _Bool, _Bool ),                                                        ?!=?( _Bool, _Bool );
275signed int ?==?( char, char ),                                                          ?!=?( char, char );
276signed int ?==?( signed char, signed char ),                            ?!=?( signed char, signed char );
277signed int ?==?( unsigned char, unsigned char ),                        ?!=?( unsigned char, unsigned char );
278signed int ?==?( signed short, signed short ),                          ?!=?( signed short, signed short );
279signed int ?==?( unsigned short, unsigned short ),                      ?!=?( unsigned short, unsigned short );
280signed int ?==?( signed int, signed int ),                                      ?!=?( signed int, signed int );
281signed int ?==?( unsigned int, unsigned int ),                                  ?!=?( unsigned int, unsigned int );
282signed int ?==?( signed long int, signed long int ),                            ?!=?( signed long int, signed long int );
283signed int ?==?( unsigned long int, unsigned long int ),                        ?!=?( unsigned long int, unsigned long int );
284signed int ?==?( signed long long int, long long int  signed),          ?!=?( signed long long int, signed long long int );
285signed int ?==?( unsigned long long int, unsigned long long int ),      ?!=?( unsigned long long int, unsigned long long int );
286signed int ?==?( float, float ),                                                        ?!=?( float, float );
287signed int ?==?( double, double ),                                                      ?!=?( double, double );
288signed int ?==?( long double, long double ),                                    ?!=?( long double, long double );
289signed int ?==?( float _Complex, float _Complex ),                              ?!=?( float _Complex, float _Complex );
290signed int ?==?( double _Complex, double _Complex ),                            ?!=?( double _Complex, double _Complex );
291signed int ?==?( long double _Complex, long double _Complex ),          ?!=?( long double _Complex, long double _Complex );
292signed int ?==?( zero_t, zero_t ),                                                      ?!=?( zero_t, zero_t );
293signed int ?==?( one_t, one_t ),                                                        ?!=?( one_t, one_t );
294
295forall( dtype DT ) signed int ?==?(                DT *,                DT * );
296forall( dtype DT ) signed int ?==?( const          DT *, const          DT * );
297forall( dtype DT ) signed int ?==?(       volatile DT *,       volatile DT * );
298forall( dtype DT ) signed int ?==?( const volatile DT *, const volatile DT * );
299forall( ftype FT ) signed int ?==?( FT *, FT * );
300forall( dtype DT ) signed int ?!=?(                DT *,                DT * );
301forall( dtype DT ) signed int ?!=?( const          DT *, const          DT * );
302forall( dtype DT ) signed int ?!=?(       volatile DT *,       volatile DT * );
303forall( dtype DT ) signed int ?!=?( const volatile DT *, const volatile DT * );
304forall( ftype FT ) signed int ?!=?( FT *, FT * );
305
306// forall( dtype DT ) signed int ?==?( const volatile DT   *, const volatile void * );
307// forall( dtype DT ) signed int ?==?( const volatile void *, const volatile DT * );
308// forall( dtype DT ) signed int ?!=?( const volatile DT   *, const volatile void * );
309// forall( dtype DT ) signed int ?!=?( const volatile void *, const volatile DT * );
310
311// forall( dtype DT ) signed int ?==?( const volatile DT *, zero_t );
312// forall( dtype DT ) signed int ?==?( zero_t, const volatile DT * );
313// forall( ftype FT ) signed int ?==?( FT *, zero_t );
314// forall( ftype FT ) signed int ?==?( zero_t, FT * );
315// forall( dtype DT ) signed int ?!=?( const volatile DT *, zero_t );
316// forall( dtype DT ) signed int ?!=?( zero_t, const volatile DT * );
317// forall( ftype FT ) signed int ?!=?( FT *, zero_t );
318// forall( ftype FT ) signed int ?!=?( zero_t, FT * );
319
320// ------------------------------------------------------------
321//
322// Section 4.10 Bitwise AND Operators
323//
324// ------------------------------------------------------------
325
326_Bool                   ?&?( _Bool, _Bool );
327signed int              ?&?( signed int, signed int );
328unsigned int            ?&?( unsigned int, unsigned int );
329signed long int         ?&?( signed long int, signed long int );
330unsigned long int       ?&?( unsigned long int, unsigned long int );
331signed long long int    ?&?( signed long long int, signed long long int );
332unsigned long long int  ?&?( unsigned long long int, unsigned long long int );
333
334// ------------------------------------------------------------
335//
336// Section 4.11 Bitwise XOR Operators
337//
338// ------------------------------------------------------------
339
340_Bool                   ?^?( _Bool, _Bool );
341signed int              ?^?( signed int, signed int );
342unsigned int            ?^?( unsigned int, unsigned int );
343signed long int         ?^?( signed long int, signed long int );
344unsigned long int       ?^?( unsigned long int, unsigned long int );
345signed long long int    ?^?( signed long long int, signed long long int );
346unsigned long long int  ?^?( unsigned long long int, unsigned long long int );
347
348// ------------------------------------------------------------
349//
350// Section 4.12 Bitwise OR Operators
351//
352// ------------------------------------------------------------
353
354_Bool                   ?|?( _Bool, _Bool );
355signed int              ?|?( signed int, signed int );
356unsigned int            ?|?( unsigned int, unsigned int );
357signed long int         ?|?( signed long int, signed long int );
358unsigned long int       ?|?( unsigned long int, unsigned long int );
359signed long long int    ?|?( signed long long int, signed long long int );
360unsigned long long int  ?|?( unsigned long long int, unsigned long long int );
361
362// ------------------------------------------------------------
363//
364// Section 4.16 Assignment Operator
365//
366// ------------------------------------------------------------
367
368forall( ftype FT ) FT *                 ?=?( FT **, FT * );
369forall( ftype FT ) FT *                 ?=?( FT * volatile *, FT * );
370
371forall( dtype DT ) DT *                 ?=?(                 DT *          *,                   DT * );
372forall( dtype DT ) DT *                 ?=?(                 DT * volatile *,                   DT * );
373forall( dtype DT ) const DT *           ?=?( const           DT *          *,                   DT * );
374forall( dtype DT ) const DT *           ?=?( const           DT * volatile *,                   DT * );
375forall( dtype DT ) const DT *           ?=?( const           DT *          *, const             DT * );
376forall( dtype DT ) const DT *           ?=?( const           DT * volatile *, const             DT * );
377forall( dtype DT ) volatile DT *        ?=?(       volatile  DT *          *,                   DT * );
378forall( dtype DT ) volatile DT *        ?=?(       volatile  DT * volatile *,                   DT * );
379forall( dtype DT ) volatile DT *        ?=?(       volatile  DT *          *,       volatile    DT * );
380forall( dtype DT ) volatile DT *        ?=?(       volatile  DT * volatile *,       volatile    DT * );
381
382forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *,                   DT * );
383forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *,                   DT * );
384forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *, const             DT * );
385forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *, const             DT * );
386forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *,       volatile    DT * );
387forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *,       volatile    DT * );
388forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *, const volatile    DT * );
389forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *, const volatile    DT * );
390
391forall( dtype DT ) DT *                 ?=?(                 DT *          *,                   void * );
392forall( dtype DT ) DT *                 ?=?(                 DT * volatile *,                   void * );
393forall( dtype DT ) const DT *           ?=?( const           DT *          *,                   void * );
394forall( dtype DT ) const DT *           ?=?( const           DT * volatile *,                   void * );
395forall( dtype DT ) const DT *           ?=?( const           DT *          *, const             void * );
396forall( dtype DT ) const DT *           ?=?( const           DT * volatile *, const             void * );
397forall( dtype DT ) volatile DT *        ?=?(       volatile  DT *          *,                   void * );
398forall( dtype DT ) volatile DT *        ?=?(       volatile  DT * volatile *,                   void * );
399forall( dtype DT ) volatile DT *        ?=?(       volatile  DT *          *,       volatile    void * );
400forall( dtype DT ) volatile DT *        ?=?(       volatile  DT * volatile *,       volatile    void * );
401
402forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *,                   void * );
403forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *,                   void * );
404forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *, const             void * );
405forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *, const             void * );
406forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *,       volatile    void * );
407forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *,       volatile    void * );
408forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *, const volatile    void * );
409forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *, const volatile    void * );
410
411forall( dtype DT ) void *                ?=?(                void *          *,                 DT * );
412forall( dtype DT ) void *                ?=?(                void * volatile *,                 DT * );
413forall( dtype DT ) const void *          ?=?( const          void *          *,                 DT * );
414forall( dtype DT ) const void *          ?=?( const          void * volatile *,                 DT * );
415forall( dtype DT ) const void *          ?=?( const          void *          *, const           DT * );
416forall( dtype DT ) const void *          ?=?( const          void * volatile *, const           DT * );
417forall( dtype DT ) volatile void *       ?=?(       volatile void *          *,                 DT * );
418forall( dtype DT ) volatile void *       ?=?(       volatile void * volatile *,                 DT * );
419forall( dtype DT ) volatile void *       ?=?(       volatile void *          *,       volatile  DT * );
420forall( dtype DT ) volatile void *       ?=?(       volatile void * volatile *,       volatile  DT * );
421forall( dtype DT ) const volatile void * ?=?( const volatile void *          *,                 DT * );
422forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *,                 DT * );
423forall( dtype DT ) const volatile void * ?=?( const volatile void *          *, const           DT * );
424forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *, const           DT * );
425forall( dtype DT ) const volatile void * ?=?( const volatile void *          *,       volatile  DT * );
426forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *,       volatile  DT * );
427forall( dtype DT ) const volatile void * ?=?( const volatile void *          *, const volatile  DT * );
428forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *, const volatile  DT * );
429
430void *                  ?=?(                void *          *,                void * );
431void *                  ?=?(                void * volatile *,                void * );
432const void *            ?=?( const          void *          *,                void * );
433const void *            ?=?( const          void * volatile *,                void * );
434const void *            ?=?( const          void *          *, const          void * );
435const void *            ?=?( const          void * volatile *, const          void * );
436volatile void *         ?=?(       volatile void *          *,                void * );
437volatile void *         ?=?(       volatile void * volatile *,                void * );
438volatile void *         ?=?(       volatile void *          *,       volatile void * );
439volatile void *         ?=?(       volatile void * volatile *,       volatile void * );
440const volatile void *   ?=?( const volatile void *          *,                void * );
441const volatile void *   ?=?( const volatile void * volatile *,                void * );
442const volatile void *   ?=?( const volatile void *          *, const          void * );
443const volatile void *   ?=?( const volatile void * volatile *, const          void * );
444const volatile void *   ?=?( const volatile void *          *,       volatile void * );
445const volatile void *   ?=?( const volatile void * volatile *,       volatile void * );
446const volatile void *   ?=?( const volatile void *          *, const volatile void * );
447const volatile void *   ?=?( const volatile void * volatile *, const volatile void * );
448
449// //forall( dtype DT ) DT *                    ?=?(                DT *          *, zero_t );
450// //forall( dtype DT ) DT *                    ?=?(                DT * volatile *, zero_t );
451// forall( dtype DT ) const DT *                ?=?( const          DT *          *, zero_t );
452// forall( dtype DT ) const DT *                ?=?( const          DT * volatile *, zero_t );
453// //forall( dtype DT ) volatile DT *   ?=?( volatile       DT *          *, zero_t );
454// //forall( dtype DT ) volatile DT *   ?=?( volatile       DT * volatile *,  );
455// forall( dtype DT ) const volatile DT *       ?=?( const volatile DT *          *, zero_t );
456// forall( dtype DT ) const volatile DT *       ?=?( const volatile DT * volatile *, zero_t );
457
458// forall( ftype FT ) FT *                      ?=?( FT *          *, zero_t );
459// forall( ftype FT ) FT *                      ?=?( FT * volatile *, zero_t );
460
461forall( dtype T | sized(T) ) T *                        ?+=?(                T *          *, ptrdiff_t );
462forall( dtype T | sized(T) ) T *                        ?+=?(                T * volatile *, ptrdiff_t );
463forall( dtype T | sized(T) ) const T *          ?+=?( const          T *          *, ptrdiff_t );
464forall( dtype T | sized(T) ) const T *          ?+=?( const          T * volatile *, ptrdiff_t );
465forall( dtype T | sized(T) ) volatile T *               ?+=?(       volatile T *          *, ptrdiff_t );
466forall( dtype T | sized(T) ) volatile T *               ?+=?(       volatile T * volatile *, ptrdiff_t );
467forall( dtype T | sized(T) ) const volatile T * ?+=?( const volatile T *          *, ptrdiff_t );
468forall( dtype T | sized(T) ) const volatile T * ?+=?( const volatile T * volatile *, ptrdiff_t );
469forall( dtype T | sized(T) ) T *                        ?-=?(                T *          *, ptrdiff_t );
470forall( dtype T | sized(T) ) T *                        ?-=?(                T * volatile *, ptrdiff_t );
471forall( dtype T | sized(T) ) const T *          ?-=?( const          T *          *, ptrdiff_t );
472forall( dtype T | sized(T) ) const T *          ?-=?( const          T * volatile *, ptrdiff_t );
473forall( dtype T | sized(T) ) volatile T *               ?-=?(       volatile T *          *, ptrdiff_t );
474forall( dtype T | sized(T) ) volatile T *               ?-=?(       volatile T * volatile *, ptrdiff_t );
475forall( dtype T | sized(T) ) const volatile T * ?-=?( const volatile T *          *, ptrdiff_t );
476forall( dtype T | sized(T) ) const volatile T * ?-=?( const volatile T * volatile *, ptrdiff_t );
477
478_Bool                   ?=?( _Bool *, _Bool ),                                  ?=?( volatile _Bool *, _Bool );
479char                    ?=?( char *, char ),                                    ?=?( volatile char *, char );
480char signed             ?=?( char signed *, char signed ),                      ?=?( volatile char signed *, char signed );
481char unsigned           ?=?( char unsigned *, char unsigned ),                  ?=?( volatile char unsigned *, char unsigned );
482int short               ?=?( int short *, int short ),                          ?=?( volatile int short *, int short );
483int short unsigned      ?=?( int short unsigned *, int short unsigned ),        ?=?( volatile int short unsigned *, int short unsigned );
484signed int              ?=?( signed int *, signed int ),                        ?=?( volatile signed int *, signed int );
485unsigned int            ?=?( unsigned *, unsigned ),                            ?=?( volatile unsigned *, unsigned );
486signed long int         ?=?( signed long int *, signed long int ),              ?=?( volatile signed long int *, signed long int );
487unsigned long int       ?=?( unsigned long int *, unsigned long int ),          ?=?( volatile unsigned long int *, unsigned long int );
488signed long long int    ?=?( signed long long int *, signed long long int ),    ?=?( volatile signed long long int *, signed long long int );
489unsigned long long int  ?=?( unsigned long long int *, unsigned long long int ), ?=?( volatile unsigned long long int *, unsigned long long int );
490zero_t          ?=?( zero_t *, zero_t );
491one_t                   ?=?( one_t *, one_t );
492
493
494_Bool                   ?*=?( _Bool *, _Bool ),                                 ?*=?( volatile _Bool *, _Bool );
495char                    ?*=?( char *, char ),                                   ?*=?( volatile char *, char );
496char signed             ?*=?( char signed *, char signed ),                     ?*=?( volatile char signed *, char signed );
497char unsigned           ?*=?( char unsigned *, char unsigned ),                 ?*=?( volatile char unsigned *, char unsigned );
498int short               ?*=?( int short *, int short ),                         ?*=?( volatile int short *, int short );
499int short unsigned      ?*=?( int short unsigned *, int short unsigned ),       ?*=?( volatile int short unsigned *, int short unsigned );
500signed int              ?*=?( signed int *, signed int ),                       ?*=?( volatile signed int *, signed int );
501unsigned int            ?*=?( unsigned *, unsigned ),                           ?*=?( volatile unsigned *, unsigned );
502signed long int         ?*=?( signed long int *, signed long int ),             ?*=?( volatile signed long int *, signed long int );
503unsigned long int       ?*=?( unsigned long int *, unsigned long int ),         ?*=?( volatile unsigned long int *, unsigned long int );
504signed long long int    ?*=?( signed long long int *, signed long long int ),   ?*=?( volatile signed long long int *, signed long long int );
505unsigned long long int  ?*=?( unsigned long long int *, unsigned long long int ), ?*=?( volatile unsigned long long int *, unsigned long long int );
506
507_Bool                   ?/=?( _Bool *, _Bool ),                                 ?/=?( volatile _Bool *, _Bool );
508char                    ?/=?( char *, char ),                                   ?/=?( volatile char *, char );
509char signed             ?/=?( char signed *, char signed ),                     ?/=?( volatile char signed *, char signed );
510char unsigned           ?/=?( char unsigned *, char unsigned ),                 ?/=?( volatile char unsigned *, char unsigned );
511int short               ?/=?( int short *, int short ),                         ?/=?( volatile int short *, int short );
512int short unsigned      ?/=?( int short unsigned *, int short unsigned ),       ?/=?( volatile int short unsigned *, int short unsigned );
513signed int              ?/=?( signed int *, signed int ),                       ?/=?( volatile signed int *, signed int );
514unsigned int            ?/=?( unsigned *, unsigned ),                           ?/=?( volatile unsigned *, unsigned );
515signed long int         ?/=?( signed long int *, signed long int ),             ?/=?( volatile signed long int *, signed long int );
516unsigned long int       ?/=?( unsigned long int *, unsigned long int ),         ?/=?( volatile unsigned long int *, unsigned long int );
517signed long long int    ?/=?( signed long long int *, signed long long int ),   ?/=?( volatile signed long long int *, signed long long int );
518unsigned long long int  ?/=?( unsigned long long int *, unsigned long long int ), ?/=?( volatile unsigned long long int *, unsigned long long int );
519
520_Bool                   ?%=?( _Bool *, _Bool ),                                 ?%=?( volatile _Bool *, _Bool );
521char                    ?%=?( char *, char ),                                   ?%=?( volatile char *, char );
522char signed             ?%=?( char signed *, char signed ),                     ?%=?( volatile char signed *, char signed );
523char unsigned           ?%=?( char unsigned *, char unsigned ),                 ?%=?( volatile char unsigned *, char unsigned );
524int short               ?%=?( int short *, int short ),                         ?%=?( volatile int short *, int short );
525int short unsigned      ?%=?( int short unsigned *, int short unsigned ),       ?%=?( volatile int short unsigned *, int short unsigned );
526signed int              ?%=?( signed int *, signed int ),                       ?%=?( volatile signed int *, signed int );
527unsigned int            ?%=?( unsigned *, unsigned ),                           ?%=?( volatile unsigned *, unsigned );
528signed long int         ?%=?( signed long int *, signed long int ),             ?%=?( volatile signed long int *, signed long int );
529unsigned long int       ?%=?( unsigned long int *, unsigned long int ),         ?%=?( volatile unsigned long int *, unsigned long int );
530signed long long int    ?%=?( signed long long int *, signed long long int ),   ?%=?( volatile signed long long int *, signed long long int );
531unsigned long long int  ?%=?( unsigned long long int *, unsigned long long int ), ?%=?( volatile unsigned long long int *, unsigned long long int );
532
533_Bool                   ?+=?( _Bool *, _Bool ),                                 ?+=?( volatile _Bool *, _Bool );
534char                    ?+=?( char *, char ),                                   ?+=?( volatile char *, char );
535char signed             ?+=?( char signed *, char signed ),                     ?+=?( volatile char signed *, char signed );
536char unsigned           ?+=?( char unsigned *, char unsigned ),                 ?+=?( volatile char unsigned *, char unsigned );
537int short               ?+=?( int short *, int short ),                         ?+=?( volatile int short *, int short );
538int short unsigned      ?+=?( int short unsigned *, int short unsigned ),       ?+=?( volatile int short unsigned *, int short unsigned );
539signed int              ?+=?( signed int *, signed int ),                       ?+=?( volatile signed int *, signed int );
540unsigned int            ?+=?( unsigned *, unsigned ),                           ?+=?( volatile unsigned *, unsigned );
541signed long int         ?+=?( signed long int *, signed long int ),             ?+=?( volatile signed long int *, signed long int );
542unsigned long int       ?+=?( unsigned long int *, unsigned long int ),         ?+=?( volatile unsigned long int *, unsigned long int );
543signed long long int    ?+=?( signed long long int *, signed long long int ),   ?+=?( volatile signed long long int *, signed long long int );
544unsigned long long int  ?+=?( unsigned long long int *, unsigned long long int ), ?+=?( volatile unsigned long long int *, unsigned long long int );
545
546_Bool                   ?-=?( _Bool *, _Bool ),                                 ?-=?( volatile _Bool *, _Bool );
547char                    ?-=?( char *, char ),                                   ?-=?( volatile char *, char );
548char signed             ?-=?( char signed *, char signed ),                     ?-=?( volatile char signed *, char signed );
549char unsigned           ?-=?( char unsigned *, char unsigned ),                 ?-=?( volatile char unsigned *, char unsigned );
550int short               ?-=?( int short *, int short ),                         ?-=?( volatile int short *, int short );
551int short unsigned      ?-=?( int short unsigned *, int short unsigned ),       ?-=?( volatile int short unsigned *, int short unsigned );
552signed int              ?-=?( signed int *, signed int ),                       ?-=?( volatile signed int *, signed int );
553unsigned int            ?-=?( unsigned *, unsigned ),                           ?-=?( volatile unsigned *, unsigned );
554signed long int         ?-=?( signed long int *, signed long int ),             ?-=?( volatile signed long int *, signed long int );
555unsigned long int       ?-=?( unsigned long int *, unsigned long int ),         ?-=?( volatile unsigned long int *, unsigned long int );
556signed long long int    ?-=?( signed long long int *, signed long long int ),   ?-=?( volatile signed long long int *, signed long long int );
557unsigned long long int  ?-=?( unsigned long long int *, unsigned long long int ), ?-=?( volatile unsigned long long int *, unsigned long long int );
558
559_Bool                   ?<<=?( _Bool *, _Bool ),                                ?<<=?( volatile _Bool *, _Bool );
560char                    ?<<=?( char *, char ),                                  ?<<=?( volatile char *, char );
561char signed             ?<<=?( char signed *, char signed ),                    ?<<=?( volatile char signed *, char signed );
562char unsigned           ?<<=?( char unsigned *, char unsigned ),                ?<<=?( volatile char unsigned *, char unsigned );
563int short               ?<<=?( int short *, int short ),                        ?<<=?( volatile int short *, int short );
564int short unsigned      ?<<=?( int short unsigned *, int short unsigned ),      ?<<=?( volatile int short unsigned *, int short unsigned );
565signed int              ?<<=?( signed int *, signed int ),                      ?<<=?( volatile signed int *, signed int );
566unsigned int            ?<<=?( unsigned *, unsigned ),                          ?<<=?( volatile unsigned *, unsigned );
567signed long int         ?<<=?( signed long int *, signed long int ),            ?<<=?( volatile signed long int *, signed long int );
568unsigned long int       ?<<=?( unsigned long int *, unsigned long int ),        ?<<=?( volatile unsigned long int *, unsigned long int );
569signed long long int    ?<<=?( signed long long int *, signed long long int ),  ?<<=?( volatile signed long long int *, signed long long int );
570unsigned long long int  ?<<=?( unsigned long long int *, unsigned long long int ), ?<<=?( volatile unsigned long long int *, unsigned long long int );
571
572_Bool                   ?>>=?( _Bool *, _Bool ),                                ?>>=?( volatile _Bool *, _Bool );
573char                    ?>>=?( char *, char ),                                  ?>>=?( volatile char *, char );
574char signed             ?>>=?( char signed *, char signed ),                    ?>>=?( volatile char signed *, char signed );
575char unsigned           ?>>=?( char unsigned *, char unsigned ),                ?>>=?( volatile char unsigned *, char unsigned );
576int short               ?>>=?( int short *, int short ),                        ?>>=?( volatile int short *, int short );
577int short unsigned      ?>>=?( int short unsigned *, int short unsigned ),      ?>>=?( volatile int short unsigned *, int short unsigned );
578signed int              ?>>=?( signed int *, signed int ),                      ?>>=?( volatile signed int *, signed int );
579unsigned int            ?>>=?( unsigned *, unsigned ),                          ?>>=?( volatile unsigned *, unsigned );
580signed long int         ?>>=?( signed long int *, signed long int ),            ?>>=?( volatile signed long int *, signed long int );
581unsigned long int       ?>>=?( unsigned long int *, unsigned long int ),        ?>>=?( volatile unsigned long int *, unsigned long int );
582signed long long int    ?>>=?( signed long long int *, signed long long int ),  ?>>=?( volatile signed long long int *, signed long long int );
583unsigned long long int  ?>>=?( unsigned long long int *, unsigned long long int ), ?>>=?( volatile unsigned long long int *, unsigned long long int );
584
585_Bool                   ?&=?( _Bool *, _Bool ),                                 ?&=?( volatile _Bool *, _Bool );
586char                    ?&=?( char *, char ),                                   ?&=?( volatile char *, char );
587char signed             ?&=?( char signed *, char signed ),                     ?&=?( volatile char signed *, char signed );
588char unsigned           ?&=?( char unsigned *, char unsigned ),                 ?&=?( volatile char unsigned *, char unsigned );
589int short               ?&=?( int short *, int short ),                         ?&=?( volatile int short *, int short );
590int short unsigned      ?&=?( int short unsigned *, int short unsigned ),       ?&=?( volatile int short unsigned *, int short unsigned );
591signed int              ?&=?( signed int *, signed int ),                       ?&=?( volatile signed int *, signed int );
592unsigned int            ?&=?( unsigned *, unsigned ),                           ?&=?( volatile unsigned *, unsigned );
593signed long int         ?&=?( signed long int *, signed long int ),             ?&=?( volatile signed long int *, signed long int );
594unsigned long int       ?&=?( unsigned long int *, unsigned long int ),         ?&=?( volatile unsigned long int *, unsigned long int );
595signed long long int    ?&=?( signed long long int *, signed long long int ),   ?&=?( volatile signed long long int *, signed long long int );
596unsigned long long int  ?&=?( unsigned long long int *, unsigned long long int ), ?&=?( volatile unsigned long long int *, unsigned long long int );
597
598_Bool                   ?|=?( _Bool *, _Bool ),                                 ?|=?( volatile _Bool *, _Bool );
599char                    ?|=?( char *, char ),                                   ?|=?( volatile char *, char );
600char signed             ?|=?( char signed *, char signed ),                     ?|=?( volatile char signed *, char signed );
601char unsigned           ?|=?( char unsigned *, char unsigned ),                 ?|=?( volatile char unsigned *, char unsigned );
602int short               ?|=?( int short *, int short ),                         ?|=?( volatile int short *, int short );
603int short unsigned      ?|=?( int short unsigned *, int short unsigned ),       ?|=?( volatile int short unsigned *, int short unsigned );
604signed int              ?|=?( signed int *, signed int ),                       ?|=?( volatile signed int *, signed int );
605unsigned int            ?|=?( unsigned *, unsigned ),                           ?|=?( volatile unsigned *, unsigned );
606signed long int         ?|=?( signed long int *, signed long int ),             ?|=?( volatile signed long int *, signed long int );
607unsigned long int       ?|=?( unsigned long int *, unsigned long int ),         ?|=?( volatile unsigned long int *, unsigned long int );
608signed long long int    ?|=?( signed long long int *, signed long long int ),   ?|=?( volatile signed long long int *, signed long long int );
609unsigned long long int  ?|=?( unsigned long long int *, unsigned long long int ), ?|=?( volatile unsigned long long int *, unsigned long long int );
610
611_Bool                   ?^=?( _Bool *, _Bool ),                                 ?^=?( volatile _Bool *, _Bool );
612char                    ?^=?( char *, char ),                                   ?^=?( volatile char *, char );
613char signed             ?^=?( char signed *, char signed ),                     ?^=?( volatile char signed *, char signed );
614char unsigned           ?^=?( char unsigned *, char unsigned ),                 ?^=?( volatile char unsigned *, char unsigned );
615int short               ?^=?( int short *, int short ),                         ?^=?( volatile int short *, int short );
616int short unsigned      ?^=?( int short unsigned *, int short unsigned ),       ?^=?( volatile int short unsigned *, int short unsigned );
617signed int              ?^=?( signed int *, signed int ),                       ?^=?( volatile signed int *, signed int );
618unsigned int            ?^=?( unsigned *, unsigned ),                           ?^=?( volatile unsigned *, unsigned );
619signed long int         ?^=?( signed long int *, signed long int ),             ?^=?( volatile signed long int *, signed long int );
620unsigned long int       ?^=?( unsigned long int *, unsigned long int ),         ?^=?( volatile unsigned long int *, unsigned long int );
621signed long long int    ?^=?( signed long long int *, signed long long int ),   ?^=?( volatile signed long long int *, signed long long int );
622unsigned long long int  ?^=?( unsigned long long int *, unsigned long long int ), ?^=?( volatile unsigned long long int *, unsigned long long int );
623
624float                   ?=?(  float *, float ), ?=?(  volatile float *, float ),
625                        ?*=?( float *, float ), ?*=?( volatile float *, float ),
626                        ?/=?( float *, float ), ?/=?( volatile float *, float ),
627                        ?+=?( float *, float ), ?+=?( volatile float *, float ),
628                        ?-=?( float *, float ), ?-=?( volatile float *, float );
629
630double                  ?=?(  double *, double ), ?=?(  volatile double *, double ),
631                        ?*=?( double *, double ), ?*=?( volatile double *, double ),
632                        ?/=?( double *, double ), ?/=?( volatile double *, double ),
633                        ?+=?( double *, double ), ?+=?( volatile double *, double ),
634                        ?-=?( double *, double ), ?-=?( volatile double *, double );
635
636long double             ?=?(  long double *, long double ), ?=?(  volatile long double *, long double ),
637                        ?*=?( long double *, long double ), ?*=?( volatile long double *, long double ),
638                        ?/=?( long double *, long double ), ?/=?( volatile long double *, long double ),
639                        ?+=?( long double *, long double ), ?+=?( volatile long double *, long double ),
640                        ?-=?( long double *, long double ), ?-=?( volatile long double *, long double );
641
642float _Complex          ?=?(  float _Complex *, float _Complex ), ?=?(  volatile float _Complex *, float _Complex ),
643                        ?*=?( float _Complex *, float _Complex ), ?*=?( volatile float _Complex *, float _Complex ),
644                        ?/=?( float _Complex *, float _Complex ), ?/=?( volatile float _Complex *, float _Complex ),
645                        ?+=?( float _Complex *, float _Complex ), ?+=?( volatile float _Complex *, float _Complex ),
646                        ?-=?( float _Complex *, float _Complex ), ?-=?( volatile float _Complex *, float _Complex );
647
648double _Complex         ?=?(  double _Complex *, double _Complex ), ?=?(  volatile double _Complex *, double _Complex ),
649                        ?*=?( double _Complex *, double _Complex ), ?*=?( volatile double _Complex *, double _Complex ),
650                        ?/=?( double _Complex *, double _Complex ), ?/=?( volatile double _Complex *, double _Complex ),
651                        ?+=?( double _Complex *, double _Complex ), ?+=?( volatile double _Complex *, double _Complex ),
652                        ?-=?( double _Complex *, double _Complex ), ?-=?( volatile double _Complex *, double _Complex );
653
654long double _Complex    ?=?(  long double _Complex *, long double _Complex ), ?=?(  volatile long double _Complex *, long double _Complex ),
655                        ?*=?( long double _Complex *, long double _Complex ), ?*=?( volatile long double _Complex *, long double _Complex ),
656                        ?/=?( long double _Complex *, long double _Complex ), ?/=?( volatile long double _Complex *, long double _Complex ),
657                        ?+=?( long double _Complex *, long double _Complex ), ?+=?( volatile long double _Complex *, long double _Complex ),
658                        ?-=?( long double _Complex *, long double _Complex ), ?-=?( volatile long double _Complex *, long double _Complex );
659
660
661
662
663
664// ------------------------------------------------------------
665//
666// Section ??? Constructors and Destructors
667//
668// ------------------------------------------------------------
669
670// default ctor
671void    ?{}( _Bool * );
672void    ?{}( char * );
673void    ?{}( unsigned char * );
674void    ?{}( char signed * );
675void    ?{}( int short * );
676void    ?{}( int short unsigned * );
677void    ?{}( signed int * );
678void    ?{}( unsigned int * );
679void    ?{}( signed long int * );
680void    ?{}( unsigned long int * );
681void    ?{}( signed long long int * );
682void    ?{}( unsigned long long int * );
683void    ?{}( float * );
684void    ?{}( double * );
685void    ?{}( long double * );
686void    ?{}( float _Complex * );
687void    ?{}( double _Complex * );
688void    ?{}( long double _Complex * );
689void    ?{}( zero_t * );
690void    ?{}( one_t * );
691
692// copy ctor
693void    ?{}( _Bool *, _Bool );
694void    ?{}( char *, char );
695void    ?{}( unsigned char *, unsigned char );
696void    ?{}( char signed *, char signed );
697void    ?{}( int short *, int short );
698void    ?{}( int short unsigned *, int short unsigned );
699void    ?{}( signed int *, signed int);
700void    ?{}( unsigned int *, unsigned int);
701void    ?{}( signed long int *, signed long int);
702void    ?{}( unsigned long int *, unsigned long int);
703void    ?{}( signed long long int *, signed long long int);
704void    ?{}( unsigned long long int *, unsigned long long int);
705void    ?{}( float *, float);
706void    ?{}( double *, double);
707void    ?{}( long double *, long double);
708void    ?{}( float _Complex *, float _Complex);
709void    ?{}( double _Complex *, double _Complex);
710void    ?{}( long double _Complex *, long double _Complex);
711void    ?{}( zero_t *, zero_t );
712void    ?{}( one_t *, one_t );
713
714// dtor
715void    ^?{}( _Bool * );
716void    ^?{}( char * );
717void    ^?{}( char unsigned * );
718void    ^?{}( char signed * );
719void    ^?{}( int short * );
720void    ^?{}( int short unsigned * );
721void    ^?{}( signed int * );
722void    ^?{}( unsigned int * );
723void    ^?{}( signed long int * );
724void    ^?{}( unsigned long int * );
725void    ^?{}( signed long long int * );
726void    ^?{}( unsigned long long int * );
727void    ^?{}( float * );
728void    ^?{}( double * );
729void    ^?{}( long double * );
730void    ^?{}( float _Complex * );
731void    ^?{}( double _Complex * );
732void    ^?{}( long double _Complex * );
733void    ^?{}( zero_t * );
734void    ^?{}( one_t * );
735
736// // default ctor
737// forall( dtype DT ) void       ?{}(                DT ** );
738// forall( dtype DT ) void       ?{}( const          DT ** );
739// forall( dtype DT ) void       ?{}(       volatile DT ** );
740// forall( dtype DT ) void       ?{}( const volatile DT ** );
741
742// // copy ctor
743// forall( dtype DT ) void       ?{}(                DT **, DT* );
744// forall( dtype DT ) void       ?{}( const          DT **, DT* );
745// forall( dtype DT ) void       ?{}(       volatile DT **, DT* );
746// forall( dtype DT ) void       ?{}( const volatile DT **, DT* );
747
748// // dtor
749// forall( dtype DT ) void      ^?{}(                DT ** );
750// forall( dtype DT ) void      ^?{}( const          DT ** );
751// forall( dtype DT ) void      ^?{}(       volatile DT ** );
752// forall( dtype DT ) void      ^?{}( const volatile DT ** );
753
754// copied from assignment section
755// copy constructors
756forall( ftype FT ) void ?{}( FT **, FT * );
757forall( ftype FT ) void ?{}( FT * volatile *, FT * );
758
759forall( dtype DT ) void ?{}(                 DT *          *,                   DT * );
760forall( dtype DT ) void ?{}( const           DT *          *,                   DT * );
761forall( dtype DT ) void ?{}( const           DT *          *, const             DT * );
762forall( dtype DT ) void ?{}(       volatile  DT *          *,                   DT * );
763forall( dtype DT ) void ?{}(       volatile  DT *          *,       volatile    DT * );
764
765forall( dtype DT ) void ?{}( const volatile  DT *          *,                   DT * );
766forall( dtype DT ) void ?{}( const volatile  DT *          *, const             DT * );
767forall( dtype DT ) void ?{}( const volatile  DT *          *,       volatile    DT * );
768forall( dtype DT ) void ?{}( const volatile  DT *          *, const volatile    DT * );
769
770forall( dtype DT ) void ?{}(                 DT *          *,                   void * );
771forall( dtype DT ) void ?{}( const           DT *          *,                   void * );
772forall( dtype DT ) void ?{}( const           DT *          *, const             void * );
773forall( dtype DT ) void ?{}(       volatile  DT *          *,                   void * );
774forall( dtype DT ) void ?{}(       volatile  DT *          *,       volatile    void * );
775
776forall( dtype DT ) void ?{}( const volatile  DT *          *,                   void * );
777forall( dtype DT ) void ?{}( const volatile  DT *          *, const             void * );
778forall( dtype DT ) void ?{}( const volatile  DT *          *,       volatile    void * );
779forall( dtype DT ) void ?{}( const volatile  DT *          *, const volatile    void * );
780
781forall( dtype DT ) void ?{}(                 void *          *,                 DT * );
782forall( dtype DT ) void ?{}( const           void *          *,                 DT * );
783forall( dtype DT ) void ?{}( const           void *          *, const           DT * );
784forall( dtype DT ) void ?{}(        volatile void *          *,                 DT * );
785forall( dtype DT ) void ?{}(        volatile void *          *,       volatile  DT * );
786forall( dtype DT ) void ?{}( const volatile void *           *,                 DT * );
787forall( dtype DT ) void ?{}( const volatile void *           *, const           DT * );
788forall( dtype DT ) void ?{}( const volatile void *           *,       volatile  DT * );
789forall( dtype DT ) void ?{}( const volatile void *           *, const volatile  DT * );
790
791void    ?{}(                void *          *,                void * );
792void    ?{}( const          void *          *,                void * );
793void    ?{}( const          void *          *, const          void * );
794void    ?{}(       volatile void *          *,                void * );
795void    ?{}(       volatile void *          *,       volatile void * );
796void    ?{}( const volatile void *          *,                void * );
797void    ?{}( const volatile void *          *, const          void * );
798void    ?{}( const volatile void *          *,       volatile void * );
799void    ?{}( const volatile void *          *, const volatile void * );
800
801// //forall( dtype DT ) void ?{}(                   DT *          *, zero_t );
802// //forall( dtype DT ) void ?{}(                   DT * volatile *, zero_t );
803// forall( dtype DT ) void ?{}( const       DT *          *, zero_t );
804// //forall( dtype DT ) void ?{}( volatile          DT *          *, zero_t );
805// //forall( dtype DT ) void ?{}( volatile          DT * volatile *, zero_t );
806// forall( dtype DT ) void ?{}( const volatile DT *       *, zero_t );
807
808// forall( ftype FT ) void      ?{}( FT *          *, zero_t );
809
810// default ctors
811forall( ftype FT ) void ?{}( FT *          * );
812
813forall( dtype DT ) void ?{}(                 DT *          *);
814forall( dtype DT ) void ?{}( const           DT *          *);
815forall( dtype DT ) void ?{}(       volatile  DT *          *);
816forall( dtype DT ) void ?{}( const volatile  DT *          *);
817
818void    ?{}(                void *          *);
819void    ?{}( const          void *          *);
820void    ?{}(       volatile void *          *);
821void    ?{}( const volatile void *          *);
822
823// dtors
824forall( ftype FT ) void ^?{}( FT *         * );
825
826forall( dtype DT ) void ^?{}(                DT *          *);
827forall( dtype DT ) void ^?{}( const          DT *          *);
828forall( dtype DT ) void ^?{}(      volatile  DT *          *);
829forall( dtype DT ) void ^?{}( const volatile  DT *         *);
830
831void    ^?{}(               void *          *);
832void    ^?{}( const         void *          *);
833void    ^?{}(      volatile void *          *);
834void    ^?{}( const volatile void *         *);
835
836// Local Variables: //
837// mode: c //
838// tab-width: 8 //
839// End: //
Note: See TracBrowser for help on using the repository browser.