source: src/libcfa/prelude.cf @ dae881f

ADTaaron-thesisarm-ehast-experimentalcleanup-dtorsctordeferred_resndemanglerenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxmemorynew-astnew-ast-unique-exprnew-envno_listpersistent-indexerpthread-emulationqualifiedEnumresolv-newwith_gc
Last change on this file since dae881f was a6151ba, checked in by Peter A. Buhr <pabuhr@…>, 8 years ago

update comments in code and tests, and add test searchsort

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