source: src/libcfa/prelude.cf @ f1e012b

ADTaaron-thesisarm-ehast-experimentalcleanup-dtorsctordeferred_resndemanglerenumforall-pointer-decaygc_noraiijacob/cs343-translationjenkins-sandboxmemorynew-astnew-ast-unique-exprnew-envno_listpersistent-indexerpthread-emulationqualifiedEnumresolv-newwith_gc
Last change on this file since f1e012b was f1e012b, checked in by Rob Schluntz <rschlunt@…>, 8 years ago

added intrinsic ctor/dtors to prelude, modified MakeLibCfa? to build prelude ctor/dtors, added ctor/dtor to polymorphic object type constraints, rudimentary fallback on initializer nodes if chosen ctor is intrinsic, remove intrinsic destructor statements to reduce output pollution

  • Property mode set to 100644
File size: 54.3 KB
Line 
1//                               -*- Mode: C -*-
2//
3// Copyright (C) Glen Ditchfield 1994, 1999
4//
5// prelude.cf -- Standard Cforall Preample for C99
6//
7// Author           : Glen Ditchfield
8// Created On       : Sat Nov 29 07:23:41 2014
9// Last Modified By : Peter A. Buhr
10// Last Modified On : Mon Jan  4 11:13:26 2016
11// Update Count     : 81
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, unsigned long int ),    ?%?( unsigned long int, unsigned long int );
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, unsigned long long int ), ?%?( unsigned long long int, unsigned long long int );
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, unsigned long int );
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, unsigned long long int );
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, unsigned long int ),           ?>>?( unsigned long int, unsigned long int );
210signed long long int    ?<<?( signed long long int, signed long long int ),     ?>>?( signed long long int, signed long long int );
211unsigned long long int  ?<<?( unsigned long long int, unsigned long long int ), ?>>?( unsigned long long int, unsigned long long int );
212
213// ------------------------------------------------------------
214//
215// Section 4.8 Relational Operators
216//
217// ------------------------------------------------------------
218
219signed int ?<?( _Bool, _Bool ),                                         ?<=?( _Bool, _Bool ),
220           ?>?( _Bool, _Bool ),                                         ?>=?( _Bool, _Bool );
221signed int ?<?( unsigned char, unsigned char ),                         ?<=?( unsigned char, unsigned char ),
222           ?>?( unsigned char, unsigned char ),                         ?>=?( unsigned char, unsigned char );
223signed int ?<?( signed int, signed int ),                               ?<=?( signed int, signed int ),
224           ?>?( signed int, signed int ),                               ?>=?( signed int, signed int );
225signed int ?<?( unsigned int, unsigned int ),                           ?<=?( unsigned int, unsigned int ),
226           ?>?( unsigned int, unsigned int ),                           ?>=?( unsigned int, unsigned int );
227signed int ?<?( signed long int, signed long int ),                     ?<=?( signed long int, signed long int ),
228           ?>?( signed long int, signed long int ),                     ?>=?( signed long int, signed long int );
229signed int ?<?( unsigned long int, unsigned long int ),                 ?<=?( unsigned long int, unsigned long int ),
230           ?>?( unsigned long int, unsigned long int ),                 ?>=?( unsigned long int, unsigned long int );
231signed int ?<?( signed long long int, signed long long int ),           ?<=?( signed long long int, signed long long int ),
232           ?>?( signed long long int, signed long long int ),           ?>=?( signed long long int, signed long long int );
233signed int ?<?( unsigned long long int, unsigned long long int ),       ?<=?( unsigned long long int, unsigned long long int ),
234           ?>?( unsigned long long int, unsigned long long int ),       ?>=?( unsigned long long int, unsigned long long int );
235signed int ?<?( float, float ),                                         ?<=?( float, float ),
236           ?>?( float, float ),                                         ?>=?( float, float );
237signed int ?<?( double, double ),                                       ?<=?( double, double ),
238           ?>?( double, double ),                                       ?>=?( double, double );
239signed int ?<?( long double, long double ),                             ?<=?( long double, long double ),
240           ?>?( long double, long double ),                             ?>=?( long double, long double );
241
242forall( dtype DT ) signed int ?<?(  const volatile DT *, const volatile DT * );
243forall( dtype DT ) signed int ?>?(  const volatile DT *, const volatile DT * );
244forall( dtype DT ) signed int ?<=?( const volatile DT *, const volatile DT * );
245forall( dtype DT ) signed int ?>=?( const volatile DT *, const volatile DT * );
246
247// ------------------------------------------------------------
248//
249// Section 4.9 Equality Operators
250//
251// ------------------------------------------------------------
252
253signed int ?==?( _Bool, _Bool ),                                        ?!=?( _Bool, _Bool );
254signed int ?==?( signed int, signed int ),                              ?!=?( signed int, signed int );
255signed int ?==?( unsigned int, unsigned int ),                          ?!=?( unsigned int, unsigned int );
256signed int ?==?( signed long int, signed long int ),                    ?!=?( signed long int, signed long int );
257signed int ?==?( unsigned long int, unsigned long int ),                ?!=?( unsigned long int, unsigned long int );
258signed int ?==?( signed long long int, long long int  signed),          ?!=?( signed long long int, signed long long int );
259signed int ?==?( unsigned long long int, unsigned long long int ),      ?!=?( unsigned long long int, unsigned long long int );
260signed int ?==?( float, float ),                                        ?!=?( float, float );
261signed int ?==?( double, double ),                                      ?!=?( double, double );
262signed int ?==?( long double, long double ),                            ?!=?( long double, long double );
263signed int ?==?( float _Complex, float _Complex ),                      ?!=?( float _Complex, float _Complex );
264signed int ?==?( double _Complex, double _Complex ),                    ?!=?( double _Complex, double _Complex );
265signed int ?==?( long double _Complex, long double _Complex ),          ?!=?( long double _Complex, long double _Complex );
266
267forall( dtype DT ) signed int ?==?(                DT *,                DT * );
268forall( dtype DT ) signed int ?==?( const          DT *, const          DT * );
269forall( dtype DT ) signed int ?==?(       volatile DT *,       volatile DT * );
270forall( dtype DT ) signed int ?==?( const volatile DT *, const volatile DT * );
271forall( ftype FT ) signed int ?==?( FT *, FT * );
272forall( dtype DT ) signed int ?!=?(                DT *,                DT * );
273forall( dtype DT ) signed int ?!=?( const          DT *, const          DT * );
274forall( dtype DT ) signed int ?!=?(       volatile DT *,       volatile DT * );
275forall( dtype DT ) signed int ?!=?( const volatile DT *, const volatile DT * );
276forall( ftype FT ) signed int ?!=?( FT *, FT * );
277
278forall( dtype DT ) signed int ?==?( const volatile DT   *, const volatile void * );
279forall( dtype DT ) signed int ?==?( const volatile void *, const volatile DT * );
280forall( dtype DT ) signed int ?!=?( const volatile DT   *, const volatile void * );
281forall( dtype DT ) signed int ?!=?( const volatile void *, const volatile DT * );
282
283forall( dtype DT ) signed int ?==?( const volatile DT *, forall( dtype DT2 )const DT2 * );
284forall( dtype DT ) signed int ?==?( forall( dtype DT2 )const DT2 *, const volatile DT * );
285forall( ftype FT ) signed int ?==?( FT *, forall( ftype FT2 )FT2 * );
286forall( ftype FT ) signed int ?==?( forall( ftype FT2 )FT2 *, FT * );
287forall( dtype DT ) signed int ?!=?( const volatile DT *, forall( dtype DT2 )const DT2 * );
288forall( dtype DT ) signed int ?!=?( forall( dtype DT2 )const DT2 *, const volatile DT * );
289forall( ftype FT ) signed int ?!=?( FT *, forall( ftype FT2 )FT2 * );
290forall( ftype FT ) signed int ?!=?( forall( ftype FT2 )FT2 *, FT * );
291
292// ------------------------------------------------------------
293//
294// Section 4.10 Bitwise AND Operators
295//
296// ------------------------------------------------------------
297
298_Bool                   ?&?( _Bool, _Bool );
299signed int              ?&?( signed int, signed int );
300unsigned int            ?&?( unsigned int, unsigned int );
301signed long int         ?&?( signed long int, signed long int );
302unsigned long int       ?&?( unsigned long int, unsigned long int );
303signed long long int    ?&?( signed long long int, signed long long int );
304unsigned long long int  ?&?( unsigned long long int, unsigned long long int );
305
306// ------------------------------------------------------------
307//
308// Section 4.11 Bitwise XOR Operators
309//
310// ------------------------------------------------------------
311
312_Bool                   ?^?( _Bool, _Bool );
313signed int              ?^?( signed int, signed int );
314unsigned int            ?^?( unsigned int, unsigned int );
315signed long int         ?^?( signed long int, signed long int );
316unsigned long int       ?^?( unsigned long int, unsigned long int );
317signed long long int    ?^?( signed long long int, signed long long int );
318unsigned long long int  ?^?( unsigned long long int, unsigned long long int );
319
320// ------------------------------------------------------------
321//
322// Section 4.12 Bitwise OR 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.16 Assignment Operator
337//
338// ------------------------------------------------------------
339
340forall( ftype FT ) FT *                 ?=?( FT **, FT * );
341forall( ftype FT ) FT *                 ?=?( FT * volatile *, FT * );
342
343forall( dtype DT ) DT *                 ?=?(                 DT *          *,                   DT * );
344forall( dtype DT ) DT *                 ?=?(                 DT * volatile *,                   DT * );
345forall( dtype DT ) const DT *           ?=?( const           DT *          *,                   DT * );
346forall( dtype DT ) const DT *           ?=?( const           DT * volatile *,                   DT * );
347forall( dtype DT ) const DT *           ?=?( const           DT *          *, const             DT * );
348forall( dtype DT ) const DT *           ?=?( const           DT * volatile *, const             DT * );
349forall( dtype DT ) volatile DT *        ?=?(       volatile  DT *          *,                   DT * );
350forall( dtype DT ) volatile DT *        ?=?(       volatile  DT * volatile *,                   DT * );
351forall( dtype DT ) volatile DT *        ?=?(       volatile  DT *          *,       volatile    DT * );
352forall( dtype DT ) volatile DT *        ?=?(       volatile  DT * volatile *,       volatile    DT * );
353
354forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *,                   DT * );
355forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *,                   DT * );
356forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *, const             DT * );
357forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *, const             DT * );
358forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *,       volatile    DT * );
359forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *,       volatile    DT * );
360forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *, const volatile    DT * );
361forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *, const volatile    DT * );
362
363forall( dtype DT ) DT *                 ?=?(                 DT *          *,                   void * );
364forall( dtype DT ) DT *                 ?=?(                 DT * volatile *,                   void * );
365forall( dtype DT ) const DT *           ?=?( const           DT *          *,                   void * );
366forall( dtype DT ) const DT *           ?=?( const           DT * volatile *,                   void * );
367forall( dtype DT ) const DT *           ?=?( const           DT *          *, const             void * );
368forall( dtype DT ) const DT *           ?=?( const           DT * volatile *, const             void * );
369forall( dtype DT ) volatile DT *        ?=?(       volatile  DT *          *,                   void * );
370forall( dtype DT ) volatile DT *        ?=?(       volatile  DT * volatile *,                   void * );
371forall( dtype DT ) volatile DT *        ?=?(       volatile  DT *          *,       volatile    void * );
372forall( dtype DT ) volatile DT *        ?=?(       volatile  DT * volatile *,       volatile    void * );
373
374forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *,                   void * );
375forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *,                   void * );
376forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *, const             void * );
377forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *, const             void * );
378forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *,       volatile    void * );
379forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *,       volatile    void * );
380forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *, const volatile    void * );
381forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *, const volatile    void * );
382
383forall( dtype DT ) void *                ?=?(                void *          *,                 DT * );
384forall( dtype DT ) void *                ?=?(                void * volatile *,                 DT * );
385forall( dtype DT ) const void *          ?=?( const          void *          *,                 DT * );
386forall( dtype DT ) const void *          ?=?( const          void * volatile *,                 DT * );
387forall( dtype DT ) const void *          ?=?( const          void *          *, const           DT * );
388forall( dtype DT ) const void *          ?=?( const          void * volatile *, const           DT * );
389forall( dtype DT ) volatile void *       ?=?(       volatile void *          *,                 DT * );
390forall( dtype DT ) volatile void *       ?=?(       volatile void * volatile *,                 DT * );
391forall( dtype DT ) volatile void *       ?=?(       volatile void *          *,       volatile  DT * );
392forall( dtype DT ) volatile void *       ?=?(       volatile void * volatile *,       volatile  DT * );
393forall( dtype DT ) const volatile void * ?=?( const volatile void *          *,                 DT * );
394forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *,                 DT * );
395forall( dtype DT ) const volatile void * ?=?( const volatile void *          *, const           DT * );
396forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *, const           DT * );
397forall( dtype DT ) const volatile void * ?=?( const volatile void *          *,       volatile  DT * );
398forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *,       volatile  DT * );
399forall( dtype DT ) const volatile void * ?=?( const volatile void *          *, const volatile  DT * );
400forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *, const volatile  DT * );
401
402void *                  ?=?(                void *          *,                void * );
403void *                  ?=?(                void * volatile *,                void * );
404const void *            ?=?( const          void *          *,                void * );
405const void *            ?=?( const          void * volatile *,                void * );
406const void *            ?=?( const          void *          *, const          void * );
407const void *            ?=?( const          void * volatile *, const          void * );
408volatile void *         ?=?(       volatile void *          *,                void * );
409volatile void *         ?=?(       volatile void * volatile *,                void * );
410volatile void *         ?=?(       volatile void *          *,       volatile void * );
411volatile void *         ?=?(       volatile void * volatile *,       volatile void * );
412const volatile void *   ?=?( const volatile void *          *,                void * );
413const volatile void *   ?=?( const volatile void * volatile *,                void * );
414const volatile void *   ?=?( const volatile void *          *, const          void * );
415const volatile void *   ?=?( const volatile void * volatile *, const          void * );
416const volatile void *   ?=?( const volatile void *          *,       volatile void * );
417const volatile void *   ?=?( const volatile void * volatile *,       volatile void * );
418const volatile void *   ?=?( const volatile void *          *, const volatile void * );
419const volatile void *   ?=?( const volatile void * volatile *, const volatile void * );
420
421//forall( dtype DT ) DT *                       ?=?(                DT *          *, forall( dtype DT2 ) const DT2 * );
422//forall( dtype DT ) DT *                       ?=?(                DT * volatile *, forall( dtype DT2 ) const DT2 * );
423forall( dtype DT ) const DT *           ?=?( const          DT *          *, forall( dtype DT2 ) const DT2 * );
424forall( dtype DT ) const DT *           ?=?( const          DT * volatile *, forall( dtype DT2 ) const DT2 * );
425//forall( dtype DT ) volatile DT *      ?=?( volatile       DT *          *, forall( dtype DT2 ) const DT2 * );
426//forall( dtype DT ) volatile DT *      ?=?( volatile       DT * volatile *, forall( dtype DT2 ) const DT2 * );
427forall( dtype DT ) const volatile DT *  ?=?( const volatile DT *          *, forall( dtype DT2 ) const DT2 * );
428forall( dtype DT ) const volatile DT *  ?=?( const volatile DT * volatile *, forall( dtype DT2 ) const DT2 * );
429
430forall( ftype FT ) FT *                 ?=?( FT *          *, forall( ftype FT2 ) FT2 * );
431forall( ftype FT ) FT *                 ?=?( FT * volatile *, forall( ftype FT2 ) FT2 * );
432
433forall( type T ) T *                    ?+=?(                T *          *, ptrdiff_t );
434forall( type T ) T *                    ?+=?(                T * volatile *, ptrdiff_t );
435forall( type T ) const T *              ?+=?( const          T *          *, ptrdiff_t );
436forall( type T ) const T *              ?+=?( const          T * volatile *, ptrdiff_t );
437forall( type T ) volatile T *           ?+=?(       volatile T *          *, ptrdiff_t );
438forall( type T ) volatile T *           ?+=?(       volatile T * volatile *, ptrdiff_t );
439forall( type T ) const volatile T *     ?+=?( const volatile T *          *, ptrdiff_t );
440forall( type T ) const volatile T *     ?+=?( const volatile T * volatile *, ptrdiff_t );
441forall( type T ) T *                    ?-=?(                T *          *, ptrdiff_t );
442forall( type T ) T *                    ?-=?(                T * volatile *, ptrdiff_t );
443forall( type T ) const T *              ?-=?( const          T *          *, ptrdiff_t );
444forall( type T ) const T *              ?-=?( const          T * volatile *, ptrdiff_t );
445forall( type T ) volatile T *           ?-=?(       volatile T *          *, ptrdiff_t );
446forall( type T ) volatile T *           ?-=?(       volatile T * volatile *, ptrdiff_t );
447forall( type T ) const volatile T *     ?-=?( const volatile T *          *, ptrdiff_t );
448forall( type T ) const volatile T *     ?-=?( const volatile T * volatile *, ptrdiff_t );
449
450_Bool                   ?=?( _Bool *, _Bool ),                                  ?=?( volatile _Bool *, _Bool );
451char                    ?=?( char *, char ),                                    ?=?( volatile char *, char );
452char signed             ?=?( char signed *, char signed ),                      ?=?( volatile char signed *, char signed );
453char unsigned           ?=?( char unsigned *, char unsigned ),                  ?=?( volatile char unsigned *, char unsigned );
454int short               ?=?( int short *, int short ),                          ?=?( volatile int short *, int short );
455int short unsigned      ?=?( int short unsigned *, int short unsigned ),        ?=?( volatile int short unsigned *, int short unsigned );
456signed int              ?=?( signed int *, signed int ),                        ?=?( volatile signed int *, signed int );
457unsigned int            ?=?( unsigned *, unsigned ),                            ?=?( volatile unsigned *, unsigned );
458signed long int         ?=?( signed long int *, signed long int ),              ?=?( volatile signed long int *, signed long int );
459unsigned long int       ?=?( unsigned long int *, unsigned long int ),          ?=?( volatile unsigned long int *, unsigned long int );
460signed long long int    ?=?( signed long long int *, signed long long int ),    ?=?( volatile signed long long int *, signed long long int );
461unsigned long long int  ?=?( unsigned long long int *, unsigned long long int ), ?=?( volatile unsigned long long int *, unsigned long long int );
462
463_Bool                   ?*=?( _Bool *, _Bool ),                                 ?*=?( volatile _Bool *, _Bool );
464char                    ?*=?( char *, char ),                                   ?*=?( volatile char *, char );
465char signed             ?*=?( char signed *, char signed ),                     ?*=?( volatile char signed *, char signed );
466char unsigned           ?*=?( char unsigned *, char unsigned ),                 ?*=?( volatile char unsigned *, char unsigned );
467int short               ?*=?( int short *, int short ),                         ?*=?( volatile int short *, int short );
468int short unsigned      ?*=?( int short unsigned *, int short unsigned ),       ?*=?( volatile int short unsigned *, int short unsigned );
469signed int              ?*=?( signed int *, signed int ),                       ?*=?( volatile signed int *, signed int );
470unsigned int            ?*=?( unsigned *, unsigned ),                           ?*=?( volatile unsigned *, unsigned );
471signed long int         ?*=?( signed long int *, signed long int ),             ?*=?( volatile signed long int *, signed long int );
472unsigned long int       ?*=?( unsigned long int *, unsigned long int ),         ?*=?( volatile unsigned long int *, unsigned long int );
473signed long long int    ?*=?( signed long long int *, signed long long int ),   ?*=?( volatile signed long long int *, signed long long int );
474unsigned long long int  ?*=?( unsigned long long int *, unsigned long long int ), ?*=?( volatile unsigned long long int *, unsigned long long int );
475
476_Bool                   ?/=?( _Bool *, _Bool ),                                 ?/=?( volatile _Bool *, _Bool );
477char                    ?/=?( char *, char ),                                   ?/=?( volatile char *, char );
478char signed             ?/=?( char signed *, char signed ),                     ?/=?( volatile char signed *, char signed );
479char unsigned           ?/=?( char unsigned *, char unsigned ),                 ?/=?( volatile char unsigned *, char unsigned );
480int short               ?/=?( int short *, int short ),                         ?/=?( volatile int short *, int short );
481int short unsigned      ?/=?( int short unsigned *, int short unsigned ),       ?/=?( volatile int short unsigned *, int short unsigned );
482signed int              ?/=?( signed int *, signed int ),                       ?/=?( volatile signed int *, signed int );
483unsigned int            ?/=?( unsigned *, unsigned ),                           ?/=?( volatile unsigned *, unsigned );
484signed long int         ?/=?( signed long int *, signed long int ),             ?/=?( volatile signed long int *, signed long int );
485unsigned long int       ?/=?( unsigned long int *, unsigned long int ),         ?/=?( volatile unsigned long int *, unsigned long int );
486signed long long int    ?/=?( signed long long int *, signed long long int ),   ?/=?( volatile signed long long int *, signed long long int );
487unsigned long long int  ?/=?( unsigned long long int *, unsigned long long int ), ?/=?( volatile unsigned long long int *, unsigned long long int );
488
489_Bool                   ?%=?( _Bool *, _Bool ),                                 ?%=?( volatile _Bool *, _Bool );
490char                    ?%=?( char *, char ),                                   ?%=?( volatile char *, char );
491char signed             ?%=?( char signed *, char signed ),                     ?%=?( volatile char signed *, char signed );
492char unsigned           ?%=?( char unsigned *, char unsigned ),                 ?%=?( volatile char unsigned *, char unsigned );
493int short               ?%=?( int short *, int short ),                         ?%=?( volatile int short *, int short );
494int short unsigned      ?%=?( int short unsigned *, int short unsigned ),       ?%=?( volatile int short unsigned *, int short unsigned );
495signed int              ?%=?( signed int *, signed int ),                       ?%=?( volatile signed int *, signed int );
496unsigned int            ?%=?( unsigned *, unsigned ),                           ?%=?( volatile unsigned *, unsigned );
497signed long int         ?%=?( signed long int *, signed long int ),             ?%=?( volatile signed long int *, signed long int );
498unsigned long int       ?%=?( unsigned long int *, unsigned long int ),         ?%=?( volatile unsigned long int *, unsigned long int );
499signed long long int    ?%=?( signed long long int *, signed long long int ),   ?%=?( volatile signed long long int *, signed long long int );
500unsigned long long int  ?%=?( unsigned long long int *, unsigned long long int ), ?%=?( volatile unsigned long long int *, unsigned long long int );
501
502_Bool                   ?+=?( _Bool *, _Bool ),                                 ?+=?( volatile _Bool *, _Bool );
503char                    ?+=?( char *, char ),                                   ?+=?( volatile char *, char );
504char signed             ?+=?( char signed *, char signed ),                     ?+=?( volatile char signed *, char signed );
505char unsigned           ?+=?( char unsigned *, char unsigned ),                 ?+=?( volatile char unsigned *, char unsigned );
506int short               ?+=?( int short *, int short ),                         ?+=?( volatile int short *, int short );
507int short unsigned      ?+=?( int short unsigned *, int short unsigned ),       ?+=?( volatile int short unsigned *, int short unsigned );
508signed int              ?+=?( signed int *, signed int ),                       ?+=?( volatile signed int *, signed int );
509unsigned int            ?+=?( unsigned *, unsigned ),                           ?+=?( volatile unsigned *, unsigned );
510signed long int         ?+=?( signed long int *, signed long int ),             ?+=?( volatile signed long int *, signed long int );
511unsigned long int       ?+=?( unsigned long int *, unsigned long int ),         ?+=?( volatile unsigned long int *, unsigned long int );
512signed long long int    ?+=?( signed long long int *, signed long long int ),   ?+=?( volatile signed long long int *, signed long long int );
513unsigned long long int  ?+=?( unsigned long long int *, unsigned long long int ), ?+=?( volatile unsigned long long int *, unsigned long long int );
514
515_Bool                   ?-=?( _Bool *, _Bool ),                                 ?-=?( volatile _Bool *, _Bool );
516char                    ?-=?( char *, char ),                                   ?-=?( volatile char *, char );
517char signed             ?-=?( char signed *, char signed ),                     ?-=?( volatile char signed *, char signed );
518char unsigned           ?-=?( char unsigned *, char unsigned ),                 ?-=?( volatile char unsigned *, char unsigned );
519int short               ?-=?( int short *, int short ),                         ?-=?( volatile int short *, int short );
520int short unsigned      ?-=?( int short unsigned *, int short unsigned ),       ?-=?( volatile int short unsigned *, int short unsigned );
521signed int              ?-=?( signed int *, signed int ),                       ?-=?( volatile signed int *, signed int );
522unsigned int            ?-=?( unsigned *, unsigned ),                           ?-=?( volatile unsigned *, unsigned );
523signed long int         ?-=?( signed long int *, signed long int ),             ?-=?( volatile signed long int *, signed long int );
524unsigned long int       ?-=?( unsigned long int *, unsigned long int ),         ?-=?( volatile unsigned long int *, unsigned long int );
525signed long long int    ?-=?( signed long long int *, signed long long int ),   ?-=?( volatile signed long long int *, signed long long int );
526unsigned long long int  ?-=?( unsigned long long int *, unsigned long long int ), ?-=?( volatile unsigned long long int *, unsigned long long int );
527
528_Bool                   ?<<=?( _Bool *, _Bool ),                                ?<<=?( volatile _Bool *, _Bool );
529char                    ?<<=?( char *, char ),                                  ?<<=?( volatile char *, char );
530char signed             ?<<=?( char signed *, char signed ),                    ?<<=?( volatile char signed *, char signed );
531char unsigned           ?<<=?( char unsigned *, char unsigned ),                ?<<=?( volatile char unsigned *, char unsigned );
532int short               ?<<=?( int short *, int short ),                        ?<<=?( volatile int short *, int short );
533int short unsigned      ?<<=?( int short unsigned *, int short unsigned ),      ?<<=?( volatile int short unsigned *, int short unsigned );
534signed int              ?<<=?( signed int *, signed int ),                      ?<<=?( volatile signed int *, signed int );
535unsigned int            ?<<=?( unsigned *, unsigned ),                          ?<<=?( volatile unsigned *, unsigned );
536signed long int         ?<<=?( signed long int *, signed long int ),            ?<<=?( volatile signed long int *, signed long int );
537unsigned long int       ?<<=?( unsigned long int *, unsigned long int ),        ?<<=?( volatile unsigned long int *, unsigned long int );
538signed long long int    ?<<=?( signed long long int *, signed long long int ),  ?<<=?( volatile signed long long int *, signed long long int );
539unsigned long long int  ?<<=?( unsigned long long int *, unsigned long long int ), ?<<=?( volatile unsigned long long int *, unsigned long long int );
540
541_Bool                   ?>>=?( _Bool *, _Bool ),                                ?>>=?( volatile _Bool *, _Bool );
542char                    ?>>=?( char *, char ),                                  ?>>=?( volatile char *, char );
543char signed             ?>>=?( char signed *, char signed ),                    ?>>=?( volatile char signed *, char signed );
544char unsigned           ?>>=?( char unsigned *, char unsigned ),                ?>>=?( volatile char unsigned *, char unsigned );
545int short               ?>>=?( int short *, int short ),                        ?>>=?( volatile int short *, int short );
546int short unsigned      ?>>=?( int short unsigned *, int short unsigned ),      ?>>=?( volatile int short unsigned *, int short unsigned );
547signed int              ?>>=?( signed int *, signed int ),                      ?>>=?( volatile signed int *, signed int );
548unsigned int            ?>>=?( unsigned *, unsigned ),                          ?>>=?( volatile unsigned *, unsigned );
549signed long int         ?>>=?( signed long int *, signed long int ),            ?>>=?( volatile signed long int *, signed long int );
550unsigned long int       ?>>=?( unsigned long int *, unsigned long int ),        ?>>=?( volatile unsigned long int *, unsigned long int );
551signed long long int    ?>>=?( signed long long int *, signed long long int ),  ?>>=?( volatile signed long long int *, signed long long int );
552unsigned long long int  ?>>=?( unsigned long long int *, unsigned long long int ), ?>>=?( volatile unsigned long long int *, unsigned long long int );
553
554_Bool                   ?&=?( _Bool *, _Bool ),                                 ?&=?( volatile _Bool *, _Bool );
555char                    ?&=?( char *, char ),                                   ?&=?( volatile char *, char );
556char signed             ?&=?( char signed *, char signed ),                     ?&=?( volatile char signed *, char signed );
557char unsigned           ?&=?( char unsigned *, char unsigned ),                 ?&=?( volatile char unsigned *, char unsigned );
558int short               ?&=?( int short *, int short ),                         ?&=?( volatile int short *, int short );
559int short unsigned      ?&=?( int short unsigned *, int short unsigned ),       ?&=?( volatile int short unsigned *, int short unsigned );
560signed int              ?&=?( signed int *, signed int ),                       ?&=?( volatile signed int *, signed int );
561unsigned int            ?&=?( unsigned *, unsigned ),                           ?&=?( volatile unsigned *, unsigned );
562signed long int         ?&=?( signed long int *, signed long int ),             ?&=?( volatile signed long int *, signed long int );
563unsigned long int       ?&=?( unsigned long int *, unsigned long int ),         ?&=?( volatile unsigned long int *, unsigned long int );
564signed long long int    ?&=?( signed long long int *, signed long long int ),   ?&=?( volatile signed long long int *, signed long long int );
565unsigned long long int  ?&=?( unsigned long long int *, unsigned long long int ), ?&=?( volatile unsigned long long int *, unsigned long long int );
566
567_Bool                   ?|=?( _Bool *, _Bool ),                                 ?|=?( volatile _Bool *, _Bool );
568char                    ?|=?( char *, char ),                                   ?|=?( volatile char *, char );
569char signed             ?|=?( char signed *, char signed ),                     ?|=?( volatile char signed *, char signed );
570char unsigned           ?|=?( char unsigned *, char unsigned ),                 ?|=?( volatile char unsigned *, char unsigned );
571int short               ?|=?( int short *, int short ),                         ?|=?( volatile int short *, int short );
572int short unsigned      ?|=?( int short unsigned *, int short unsigned ),       ?|=?( volatile int short unsigned *, int short unsigned );
573signed int              ?|=?( signed int *, signed int ),                       ?|=?( volatile signed int *, signed int );
574unsigned int            ?|=?( unsigned *, unsigned ),                           ?|=?( volatile unsigned *, unsigned );
575signed long int         ?|=?( signed long int *, signed long int ),             ?|=?( volatile signed long int *, signed long int );
576unsigned long int       ?|=?( unsigned long int *, unsigned long int ),         ?|=?( volatile unsigned long int *, unsigned long int );
577signed long long int    ?|=?( signed long long int *, signed long long int ),   ?|=?( volatile signed long long int *, signed long long int );
578unsigned long long int  ?|=?( unsigned long long int *, unsigned long long int ), ?|=?( volatile unsigned long long int *, unsigned long long int );
579
580_Bool                   ?^=?( _Bool *, _Bool ),                                 ?^=?( volatile _Bool *, _Bool );
581char                    ?^=?( char *, char ),                                   ?^=?( volatile char *, char );
582char signed             ?^=?( char signed *, char signed ),                     ?^=?( volatile char signed *, char signed );
583char unsigned           ?^=?( char unsigned *, char unsigned ),                 ?^=?( volatile char unsigned *, char unsigned );
584int short               ?^=?( int short *, int short ),                         ?^=?( volatile int short *, int short );
585int short unsigned      ?^=?( int short unsigned *, int short unsigned ),       ?^=?( volatile int short unsigned *, int short unsigned );
586signed int              ?^=?( signed int *, signed int ),                       ?^=?( volatile signed int *, signed int );
587unsigned int            ?^=?( unsigned *, unsigned ),                           ?^=?( volatile unsigned *, unsigned );
588signed long int         ?^=?( signed long int *, signed long int ),             ?^=?( volatile signed long int *, signed long int );
589unsigned long int       ?^=?( unsigned long int *, unsigned long int ),         ?^=?( volatile unsigned long int *, unsigned long int );
590signed long long int    ?^=?( signed long long int *, signed long long int ),   ?^=?( volatile signed long long int *, signed long long int );
591unsigned long long int  ?^=?( unsigned long long int *, unsigned long long int ), ?^=?( volatile unsigned long long int *, unsigned long long int );
592
593float                   ?=?(  float *, float ), ?=?(  volatile float *, float ),
594                        ?*=?( float *, float ), ?*=?( volatile float *, float ),
595                        ?/=?( float *, float ), ?/=?( volatile float *, float ),
596                        ?+=?( float *, float ), ?+=?( volatile float *, float ),
597                        ?-=?( float *, float ), ?-=?( volatile float *, float );
598
599double                  ?=?(  double *, double ), ?=?(  volatile double *, double ),
600                        ?*=?( double *, double ), ?*=?( volatile double *, double ),
601                        ?/=?( double *, double ), ?/=?( volatile double *, double ),
602                        ?+=?( double *, double ), ?+=?( volatile double *, double ),
603                        ?-=?( double *, double ), ?-=?( volatile double *, double );
604
605long double             ?=?(  long double *, long double ), ?=?(  volatile long double *, long double ),
606                        ?*=?( long double *, long double ), ?*=?( volatile long double *, long double ),
607                        ?/=?( long double *, long double ), ?/=?( volatile long double *, long double ),
608                        ?+=?( long double *, long double ), ?+=?( volatile long double *, long double ),
609                        ?-=?( long double *, long double ), ?-=?( volatile long double *, long double );
610
611float _Complex          ?=?(  float _Complex *, float _Complex ), ?=?(  volatile float _Complex *, float _Complex ),
612                        ?*=?( float _Complex *, float _Complex ), ?*=?( volatile float _Complex *, float _Complex ),
613                        ?/=?( float _Complex *, float _Complex ), ?/=?( volatile float _Complex *, float _Complex ),
614                        ?+=?( float _Complex *, float _Complex ), ?+=?( volatile float _Complex *, float _Complex ),
615                        ?-=?( float _Complex *, float _Complex ), ?-=?( volatile float _Complex *, float _Complex );
616
617double _Complex         ?=?(  double _Complex *, double _Complex ), ?=?(  volatile double _Complex *, double _Complex ),
618                        ?*=?( double _Complex *, double _Complex ), ?*=?( volatile double _Complex *, double _Complex ),
619                        ?/=?( double _Complex *, double _Complex ), ?/=?( volatile double _Complex *, double _Complex ),
620                        ?+=?( double _Complex *, double _Complex ), ?+=?( volatile double _Complex *, double _Complex ),
621                        ?-=?( double _Complex *, double _Complex ), ?-=?( volatile double _Complex *, double _Complex );
622
623long double _Complex    ?=?(  long double _Complex *, long double _Complex ), ?=?(  volatile long double _Complex *, long double _Complex ),
624                        ?*=?( long double _Complex *, long double _Complex ), ?*=?( volatile long double _Complex *, long double _Complex ),
625                        ?/=?( long double _Complex *, long double _Complex ), ?/=?( volatile long double _Complex *, long double _Complex ),
626                        ?+=?( long double _Complex *, long double _Complex ), ?+=?( volatile long double _Complex *, long double _Complex ),
627                        ?-=?( long double _Complex *, long double _Complex ), ?-=?( volatile long double _Complex *, long double _Complex );
628
629
630
631
632
633// ------------------------------------------------------------
634//
635// Section ??? Constructors and Destructors
636//
637// ------------------------------------------------------------
638
639// default ctor
640void    ?{}( _Bool * ),                         ?{}( volatile _Bool * );
641void    ?{}( unsigned char * ),                 ?{}( volatile unsigned char * );
642void    ?{}( signed int * ),                    ?{}( volatile signed int * );
643void    ?{}( unsigned int * ),                  ?{}( volatile unsigned int * );
644void    ?{}( signed long int * ),               ?{}( volatile signed long int * );
645void    ?{}( unsigned long int * ),             ?{}( volatile unsigned long int * );
646void    ?{}( signed long long int * ),          ?{}( volatile signed long long int * );
647void    ?{}( unsigned long long int * ),        ?{}( volatile unsigned long long int * );
648void    ?{}( float * ),                         ?{}( volatile float * );
649void    ?{}( double * ),                        ?{}( volatile double * );
650void    ?{}( long double * ),                   ?{}( volatile long double * );
651void    ?{}( float _Complex * ),                ?{}( volatile float _Complex * );
652void    ?{}( double _Complex * ),               ?{}( volatile double _Complex * );
653void    ?{}( long double _Complex * ),          ?{}( volatile long double _Complex * );
654
655// copy ctor
656void    ?{}( _Bool *, _Bool ),                                  ?{}( volatile _Bool *, _Bool );
657void    ?{}( unsigned char *, unsigned char ),                  ?{}( volatile unsigned char *, unsigned char );
658void    ?{}( signed int *, signed int),                         ?{}( volatile signed int *, signed int );
659void    ?{}( unsigned int *, unsigned int),                     ?{}( volatile unsigned int *, unsigned int );
660void    ?{}( signed long int *, signed long int),               ?{}( volatile signed long int *, signed long int );
661void    ?{}( unsigned long int *, unsigned long int),           ?{}( volatile unsigned long int *, unsigned long int );
662void    ?{}( signed long long int *, signed long long int),     ?{}( volatile signed long long int *, signed long long int );
663void    ?{}( unsigned long long int *, unsigned long long int), ?{}( volatile unsigned long long int *, unsigned long long int );
664void    ?{}( float *, float),                                   ?{}( volatile float *, float );
665void    ?{}( double *, double),                                 ?{}( volatile double *, double );
666void    ?{}( long double *, long double),                       ?{}( volatile long double *, long double );
667void    ?{}( float _Complex *, float _Complex),                 ?{}( volatile float _Complex *, float _Complex );
668void    ?{}( double _Complex *, double _Complex),               ?{}( volatile double _Complex *, double _Complex );
669void    ?{}( long double _Complex *, long double _Complex),     ?{}( volatile long double _Complex *, long double _Complex );
670
671// dtor
672void    ^?{}( _Bool * ),                        ^?{}( volatile _Bool * );
673void    ^?{}( signed int * ),                   ^?{}( volatile signed int * );
674void    ^?{}( unsigned int * ),                 ^?{}( volatile unsigned int * );
675void    ^?{}( signed long int * ),              ^?{}( volatile signed long int * );
676void    ^?{}( unsigned long int * ),            ^?{}( volatile unsigned long int * );
677void    ^?{}( signed long long int * ),         ^?{}( volatile signed long long int * );
678void    ^?{}( unsigned long long int * ),       ^?{}( volatile unsigned long long int * );
679void    ^?{}( float * ),                        ^?{}( volatile float * );
680void    ^?{}( double * ),                       ^?{}( volatile double * );
681void    ^?{}( long double * ),                  ^?{}( volatile long double * );
682void    ^?{}( float _Complex * ),               ^?{}( volatile float _Complex * );
683void    ^?{}( double _Complex * ),              ^?{}( volatile double _Complex * );
684void    ^?{}( long double _Complex * ),         ^?{}( volatile long double _Complex * );
685
686// // default ctor
687// forall( dtype DT ) void       ?{}(                DT ** );
688// forall( dtype DT ) void       ?{}( const          DT ** );
689// forall( dtype DT ) void       ?{}(       volatile DT ** );
690// forall( dtype DT ) void       ?{}( const volatile DT ** );
691
692// // copy ctor
693// forall( dtype DT ) void       ?{}(                DT **, DT* );
694// forall( dtype DT ) void       ?{}( const          DT **, DT* );
695// forall( dtype DT ) void       ?{}(       volatile DT **, DT* );
696// forall( dtype DT ) void       ?{}( const volatile DT **, DT* );
697
698// // dtor
699// forall( dtype DT ) void      ^?{}(                DT ** );
700// forall( dtype DT ) void      ^?{}( const          DT ** );
701// forall( dtype DT ) void      ^?{}(       volatile DT ** );
702// forall( dtype DT ) void      ^?{}( const volatile DT ** );
703
704// copied from assignment section
705// copy constructors
706forall( ftype FT ) void ?{}( FT **, FT * );
707forall( ftype FT ) void ?{}( FT * volatile *, FT * );
708
709forall( dtype DT ) void ?{}(                 DT *          *,                   DT * );
710forall( dtype DT ) void ?{}(                 DT * volatile *,                   DT * );
711forall( dtype DT ) void ?{}( const           DT *          *,                   DT * );
712forall( dtype DT ) void ?{}( const           DT * volatile *,                   DT * );
713forall( dtype DT ) void ?{}( const           DT *          *, const             DT * );
714forall( dtype DT ) void ?{}( const           DT * volatile *, const             DT * );
715forall( dtype DT ) void ?{}(       volatile  DT *          *,                   DT * );
716forall( dtype DT ) void ?{}(       volatile  DT * volatile *,                   DT * );
717forall( dtype DT ) void ?{}(       volatile  DT *          *,       volatile    DT * );
718forall( dtype DT ) void ?{}(       volatile  DT * volatile *,       volatile    DT * );
719
720forall( dtype DT ) void ?{}( const volatile  DT *          *,                   DT * );
721forall( dtype DT ) void ?{}( const volatile  DT * volatile *,                   DT * );
722forall( dtype DT ) void ?{}( const volatile  DT *          *, const             DT * );
723forall( dtype DT ) void ?{}( const volatile  DT * volatile *, const             DT * );
724forall( dtype DT ) void ?{}( const volatile  DT *          *,       volatile    DT * );
725forall( dtype DT ) void ?{}( const volatile  DT * volatile *,       volatile    DT * );
726forall( dtype DT ) void ?{}( const volatile  DT *          *, const volatile    DT * );
727forall( dtype DT ) void ?{}( const volatile  DT * volatile *, const volatile    DT * );
728
729forall( dtype DT ) void ?{}(                 DT *          *,                   void * );
730forall( dtype DT ) void ?{}(                 DT * volatile *,                   void * );
731forall( dtype DT ) void ?{}( const           DT *          *,                   void * );
732forall( dtype DT ) void ?{}( const           DT * volatile *,                   void * );
733forall( dtype DT ) void ?{}( const           DT *          *, const             void * );
734forall( dtype DT ) void ?{}( const           DT * volatile *, const             void * );
735forall( dtype DT ) void ?{}(       volatile  DT *          *,                   void * );
736forall( dtype DT ) void ?{}(       volatile  DT * volatile *,                   void * );
737forall( dtype DT ) void ?{}(       volatile  DT *          *,       volatile    void * );
738forall( dtype DT ) void ?{}(       volatile  DT * volatile *,       volatile    void * );
739
740forall( dtype DT ) void ?{}( const volatile  DT *          *,                   void * );
741forall( dtype DT ) void ?{}( const volatile  DT * volatile *,                   void * );
742forall( dtype DT ) void ?{}( const volatile  DT *          *, const             void * );
743forall( dtype DT ) void ?{}( const volatile  DT * volatile *, const             void * );
744forall( dtype DT ) void ?{}( const volatile  DT *          *,       volatile    void * );
745forall( dtype DT ) void ?{}( const volatile  DT * volatile *,       volatile    void * );
746forall( dtype DT ) void ?{}( const volatile  DT *          *, const volatile    void * );
747forall( dtype DT ) void ?{}( const volatile  DT * volatile *, const volatile    void * );
748
749forall( dtype DT ) void ?{}(                 void *          *,                 DT * );
750forall( dtype DT ) void ?{}(                 void * volatile *,                 DT * );
751forall( dtype DT ) void ?{}( const           void *          *,                 DT * );
752forall( dtype DT ) void ?{}( const           void * volatile *,                 DT * );
753forall( dtype DT ) void ?{}( const           void *          *, const           DT * );
754forall( dtype DT ) void ?{}( const           void * volatile *, const           DT * );
755forall( dtype DT ) void ?{}(        volatile void *          *,                 DT * );
756forall( dtype DT ) void ?{}(        volatile void * volatile *,                 DT * );
757forall( dtype DT ) void ?{}(        volatile void *          *,       volatile  DT * );
758forall( dtype DT ) void ?{}(        volatile void * volatile *,       volatile  DT * );
759forall( dtype DT ) void ?{}( const volatile void *           *,                 DT * );
760forall( dtype DT ) void ?{}( const volatile void * volatile *,                  DT * );
761forall( dtype DT ) void ?{}( const volatile void *           *, const           DT * );
762forall( dtype DT ) void ?{}( const volatile void * volatile *, const            DT * );
763forall( dtype DT ) void ?{}( const volatile void *           *,       volatile  DT * );
764forall( dtype DT ) void ?{}( const volatile void * volatile *,        volatile  DT * );
765forall( dtype DT ) void ?{}( const volatile void *           *, const volatile  DT * );
766forall( dtype DT ) void ?{}( const volatile void * volatile *, const volatile   DT * );
767
768void    ?{}(                void *          *,                void * );
769void    ?{}(                void * volatile *,                void * );
770void    ?{}( const          void *          *,                void * );
771void    ?{}( const          void * volatile *,                void * );
772void    ?{}( const          void *          *, const          void * );
773void    ?{}( const          void * volatile *, const          void * );
774void    ?{}(       volatile void *          *,                void * );
775void    ?{}(       volatile void * volatile *,                void * );
776void    ?{}(       volatile void *          *,       volatile void * );
777void    ?{}(       volatile void * volatile *,       volatile void * );
778void    ?{}( const volatile void *          *,                void * );
779void    ?{}( const volatile void * volatile *,                void * );
780void    ?{}( const volatile void *          *, const          void * );
781void    ?{}( const volatile void * volatile *, const          void * );
782void    ?{}( const volatile void *          *,       volatile void * );
783void    ?{}( const volatile void * volatile *,       volatile void * );
784void    ?{}( const volatile void *          *, const volatile void * );
785void    ?{}( const volatile void * volatile *, const volatile void * );
786
787//forall( dtype DT ) void ?{}(              DT *          *, forall( dtype DT2 ) const DT2 * );
788//forall( dtype DT ) void ?{}(              DT * volatile *, forall( dtype DT2 ) const DT2 * );
789forall( dtype DT ) void ?{}( const          DT *          *, forall( dtype DT2 ) const DT2 * );
790forall( dtype DT ) void ?{}( const          DT * volatile *, forall( dtype DT2 ) const DT2 * );
791//forall( dtype DT ) void ?{}( volatile     DT *          *, forall( dtype DT2 ) const DT2 * );
792//forall( dtype DT ) void ?{}( volatile     DT * volatile *, forall( dtype DT2 ) const DT2 * );
793forall( dtype DT ) void ?{}( const volatile DT *          *, forall( dtype DT2 ) const DT2 * );
794forall( dtype DT ) void ?{}( const volatile DT * volatile *, forall( dtype DT2 ) const DT2 * );
795
796forall( ftype FT ) void ?{}( FT *          *, forall( ftype FT2 ) FT2 * );
797forall( ftype FT ) void ?{}( FT * volatile *, forall( ftype FT2 ) FT2 * );
798
799// default ctors
800forall( ftype FT ) void ?{}( FT *          * );
801forall( ftype FT ) void ?{}( FT * volatile * );
802
803forall( dtype DT ) void ?{}(                 DT *          *);
804forall( dtype DT ) void ?{}(                 DT * volatile *);
805forall( dtype DT ) void ?{}( const           DT *          *);
806forall( dtype DT ) void ?{}( const           DT * volatile *);
807forall( dtype DT ) void ?{}(       volatile  DT *          *);
808forall( dtype DT ) void ?{}(       volatile  DT * volatile *);
809forall( dtype DT ) void ?{}( const volatile  DT *          *);
810forall( dtype DT ) void ?{}( const volatile  DT * volatile *);
811
812void    ?{}(                void *          *);
813void    ?{}(                void * volatile *);
814void    ?{}( const          void *          *);
815void    ?{}( const          void * volatile *);
816void    ?{}(       volatile void *          *);
817void    ?{}(       volatile void * volatile *);
818void    ?{}( const volatile void *          *);
819void    ?{}( const volatile void * volatile *);
820
821// dtors
822forall( ftype FT ) void ^?{}( FT *         * );
823forall( ftype FT ) void ^?{}( FT * volatile * );
824
825forall( dtype DT ) void ^?{}(                DT *          *);
826forall( dtype DT ) void ^?{}(                DT * volatile *);
827forall( dtype DT ) void ^?{}( const          DT *          *);
828forall( dtype DT ) void ^?{}( const          DT * volatile *);
829forall( dtype DT ) void ^?{}(      volatile  DT *          *);
830forall( dtype DT ) void ^?{}(      volatile  DT * volatile *);
831forall( dtype DT ) void ^?{}( const volatile  DT *         *);
832forall( dtype DT ) void ^?{}( const volatile  DT * volatile *);
833
834void    ^?{}(               void *          *);
835void    ^?{}(               void * volatile *);
836void    ^?{}( const         void *          *);
837void    ^?{}( const         void * volatile *);
838void    ^?{}(      volatile void *          *);
839void    ^?{}(      volatile void * volatile *);
840void    ^?{}( const volatile void *         *);
841void    ^?{}( const volatile void * volatile *);
Note: See TracBrowser for help on using the repository browser.