source: src/libcfa/prelude.cf @ 4040425

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

change keyword type to otype and context to trait

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