Changeset 3848e0e for libcfa/prelude.cf


Ignore:
Timestamp:
Dec 3, 2014, 3:08:38 PM (9 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, string, with_gc
Children:
d9a0e76
Parents:
42dcae7
Message:

underscore changes, ptrdiff_t changes, formating, _Bool prelude

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/prelude.cf

    r42dcae7 r3848e0e  
    1 /*      Standard Cforall Preample
    2  *
    3  *      Copyright 1994, 1999    Glen Ditchfield
    4  *
    5  */
    6 
    7 // #include <stddef.h>
    8 typedef long _ptrdiff_t;
    9 
    10 /*
    11  * Section 4.1 Primary Expressions
    12  */
     1//                               -*- Mode: C -*-
     2//
     3// Copyright (C) Glen Ditchfield 1994, 1999
     4//
     5// prelude.cf -- Standard Cforall Preample
     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 Dec  2 09:25:31 2014
     11// Update Count     : 20
     12//
     13
     14// Following line added from stddef.h by build
     15typedef long int ptrdiff_t;
     16
     17// Section numbers from: http://plg.uwaterloo.ca/~cforall/refrat.pdf
     18
     19// ------------------------------------------------------------
     20//
     21// Section 4.1 Primary Expressions
     22//
     23// ------------------------------------------------------------
     24
    1325const int 0, 1;
    14 /*
    15 const int 0;
    16 */
    17 forall (dtype DT) const DT* const       0;
    18 forall (ftype FT) FT * const            0;
    19 
    20 /*
    21  * ------------------------------------------------------------
    22  *
    23  * Section 4.2 Postfix Operators
    24  */
    25 
    26 int             ?++( int *),            ?--( int *);
    27 unsigned        ?++( unsigned *),       ?--( unsigned *);
    28 long            ?++( long *),           ?--( long *);
    29 long unsigned   ?++( long unsigned *),  ?--( long unsigned *);
    30 float           ?++( float *),          ?--( float *);
    31 double          ?++( double *),         ?--( double *);
    32 long double     ?++( long double *),    ?--( long double *);
    33 
    34 forall(type T)  T*                      ?++(               T**);
    35 forall(type T)  T*                      ?--(               T**);
    36 forall(type T)  const T*                ?++(const          T**);
    37 forall(type T)  const T*                ?--(const          T**);
    38 forall(type T)  volatile T*             ?++(      volatile T**);
    39 forall(type T)  volatile T*             ?--(      volatile T**);
    40 forall(type T)  const volatile T*       ?++(const volatile T**);
    41 forall(type T)  const volatile T*       ?--(const volatile T**);
    42 
    43 forall(type T) lvalue T                 ?[?](               T*, _ptrdiff_t);
    44 forall(type T) const lvalue T           ?[?](const          T*, _ptrdiff_t);
    45 forall(type T) volatile lvalue T        ?[?](      volatile T*, _ptrdiff_t);
    46 forall(type T) const volatile lvalue T  ?[?](const volatile T*, _ptrdiff_t);
    47 forall(type T) lvalue T                 ?[?](_ptrdiff_t,                       T*);
    48 forall(type T) const lvalue T           ?[?](_ptrdiff_t,        const          T*);
    49 forall(type T) volatile lvalue T        ?[?](_ptrdiff_t,              volatile T*);
    50 forall(type T) const volatile lvalue T  ?[?](_ptrdiff_t,        const volatile T*);
    51 
    52 /*
    53  * ------------------------------------------------------------
    54  *
    55  * Section 4.3 Unary Operators
    56  */
    57 
    58 int             ++?(int *),             --?(int *);
    59 unsigned        ++?(unsigned *),        --?(unsigned *);
    60 long            ++?(long *),            --?(long *);
    61 long unsigned   ++?(long unsigned *),   --?(long unsigned *);
    62 float           ++?(float *),           --?(float *);
    63 double          ++?(double *),          --?(double *);
    64 long double     ++?(long double *),     --?(long double *);
    65 
    66 forall(type T) T*                       ++?(               T**);
    67 forall(type T) T*                       --?(               T**);
    68 forall(type T) const T*                 ++?(const          T**);
    69 forall(type T) const T*                 --?(const          T**);
    70 forall(type T) volatile T*              ++?(      volatile T**);
    71 forall(type T) volatile T*              --?(      volatile T**);
    72 forall(type T) const volatile T*        ++?(const volatile T**);
    73 forall(type T) const volatile T*        --?(const volatile T**);
    74 
    75 forall(type T) lvalue T                 *?(                T* );
    76 forall(type T) const lvalue T           *?( const          T* );
    77 forall(type T) volatile lvalue T        *?(       volatile T* );
    78 forall(type T) const volatile lvalue T  *?( const volatile T* );
    79 forall(ftype FT) lvalue FT                      *?( FT* );
    80 
    81 int             +?(int),                -?(int),                ~?(int);
    82 unsigned        +?(unsigned),           -?(unsigned),           ~?(unsigned);
    83 unsigned long   +?(unsigned long),      -?(unsigned long),      ~?(unsigned long);
    84 long            +?(long),               -?(long),               ~?(long);
    85 float           +?(float),              -?(float);
    86 double          +?(double),             -?(double);
    87 long double     +?(long double),        -?(long double);
     26
     27forall ( dtype DT ) const DT * const    0;
     28forall ( ftype FT ) FT * const          0;
     29
     30// ------------------------------------------------------------
     31//
     32// Section 4.2 Postfix Operators
     33//
     34// ------------------------------------------------------------
     35
     36int             ?++( int * ),            ?--( int * );
     37unsigned        ?++( unsigned * ),       ?--( unsigned * );
     38long            ?++( long * ),           ?--( long * );
     39long unsigned   ?++( long unsigned * ),  ?--( long unsigned * );
     40float           ?++( float * ),          ?--( float * );
     41double          ?++( double * ),         ?--( double * );
     42long double     ?++( long double * ),    ?--( long double * );
     43
     44forall( type T ) T *                     ?++(                T ** );
     45forall( type T ) T *                     ?--(                T ** );
     46forall( type T ) const T *               ?++( const          T ** );
     47forall( type T ) const T *               ?--( const          T ** );
     48forall( type T ) volatile T *            ?++(       volatile T ** );
     49forall( type T ) volatile T *            ?--(       volatile T ** );
     50forall( type T ) const volatile T *      ?++( const volatile T ** );
     51forall( type T ) const volatile T *      ?--( const volatile T ** );
     52
     53forall( type T ) lvalue T                ?[?](                T *,           ptrdiff_t );
     54forall( type T ) const lvalue T          ?[?]( const          T *,           ptrdiff_t );
     55forall( type T ) volatile lvalue T       ?[?](       volatile T *,           ptrdiff_t );
     56forall( type T ) const volatile lvalue T ?[?]( const volatile T *,           ptrdiff_t );
     57forall( type T ) lvalue T                ?[?]( ptrdiff_t,     T * );
     58forall( type T ) const lvalue T          ?[?]( ptrdiff_t,    const           T * );
     59forall( type T ) volatile lvalue T       ?[?]( ptrdiff_t,    volatile        T * );
     60forall( type T ) const volatile lvalue T ?[?]( ptrdiff_t,    const volatile  T * );
     61
     62// ------------------------------------------------------------
     63//
     64// Section 4.3 Unary Operators
     65//
     66// ------------------------------------------------------------
     67
     68int             ++?( int * ),            --?( int * );
     69unsigned        ++?( unsigned * ),       --?( unsigned * );
     70long            ++?( long * ),           --?( long * );
     71long unsigned   ++?( long unsigned * ),  --?( long unsigned * );
     72float           ++?( float * ),          --?( float * );
     73double          ++?( double * ),         --?( double * );
     74long double     ++?( long double * ),    --?( long double * );
     75
     76forall( type T ) T *                     ++?(                T ** );
     77forall( type T ) T *                     --?(                T ** );
     78forall( type T ) const T *               ++?( const          T ** );
     79forall( type T ) const T *               --?( const          T ** );
     80forall( type T ) volatile T *            ++?(       volatile T ** );
     81forall( type T ) volatile T *            --?(       volatile T ** );
     82forall( type T ) const volatile T *      ++?( const volatile T ** );
     83forall( type T ) const volatile T *      --?( const volatile T ** );
     84
     85forall( type T ) lvalue T                *?(                 T * );
     86forall( type T ) const lvalue T          *?( const           T * );
     87forall( type T ) volatile lvalue T       *?(       volatile  T * );
     88forall( type T ) const volatile lvalue T *?( const volatile  T * );
     89forall( ftype FT ) lvalue FT             *?( FT * );
     90
     91int             +?( int ),               -?( int ),             ~?( int );
     92unsigned        +?( unsigned ),          -?( unsigned ),        ~?( unsigned );
     93unsigned long   +?( unsigned long ),     -?( unsigned long ),   ~?( unsigned long );
     94long            +?( long ),              -?( long ),            ~?( long );
     95float           +?( float ),             -?( float );
     96double          +?( double ),            -?( double );
     97long double     +?( long double ),       -?( long double );
    8898
    8999int     !?( int ),      !?( unsigned ), !?( long ),     !?( unsigned long ),
    90100        !?( float ),    !?( double );
    91101
    92 forall (dtype DT) int !?( const volatile DT* );
    93 forall (ftype FT) int !?( FT* );
    94 
    95 /*
    96  * ------------------------------------------------------------
    97  *
    98  * Section 4.5 Multiplicative Operators
    99  */
     102forall ( dtype DT ) int !?( const volatile DT * );
     103forall ( ftype FT ) int !?( FT * );
     104
     105// ------------------------------------------------------------
     106//
     107// Section 4.5 Multiplicative Operators
     108//
     109// ------------------------------------------------------------
    100110
    101111int             ?*?( int, int ),
     
    117127long double     ?*?( long double, long double ),
    118128                ?/?( long double, long double );
    119 /*
    120  * ------------------------------------------------------------
    121  *
    122  * Section 4.6 Additive Operators
    123  */
    124 
    125 int             ?+?( int, int),                         ?-?( int, int);
    126 long            ?+?( long, long),                       ?-?( long, long);
    127 unsigned        ?+?( unsigned, unsigned),               ?-?( unsigned, unsigned);
    128 long unsigned   ?+?( long unsigned, long unsigned),     ?-?( long unsigned, long unsigned);
    129 float           ?+?( float, float),                     ?-?( float, float);
    130 double          ?+?( double, double),                   ?-?( double, double);
    131 long double     ?+?( long double, long double),         ?-?( long double, long double);
    132 
    133 forall(type T) T*                       ?+?(               T*,                       _ptrdiff_t);
    134 forall(type T) T*                       ?+?(               _ptrdiff_t,                T*);
    135 forall(type T) T*                       ?-?(               T*,                       _ptrdiff_t);
    136 forall(type T) const T*                 ?+?(const          T*,                       _ptrdiff_t);
    137 forall(type T) const T*                 ?+?(               _ptrdiff_t, const          T*);
    138 forall(type T) const T*                 ?-?(const          T*,                       _ptrdiff_t);
    139 forall(type T) volatile T*              ?+?(      volatile T*,                       _ptrdiff_t);
    140 forall(type T) volatile T*              ?+?(               _ptrdiff_t,       volatile T*);
    141 forall(type T) volatile T*              ?-?(      volatile T*,                       _ptrdiff_t);
    142 forall(type T) const volatile T*        ?+?(const volatile T*,                       _ptrdiff_t);
    143 forall(type T) const volatile T*        ?+?(               _ptrdiff_t, const volatile T*);
    144 forall(type T) const volatile T*        ?-?(const volatile T*,                     _ptrdiff_t);
    145 
    146 forall(type T) _ptrdiff_t         ?-?(const volatile T*, const volatile T*);
    147 
    148 /*
    149  * ------------------------------------------------------------
    150  *
    151  * Section 4.7 Bitwise Shift Operators
    152  */
    153 
    154 int             ?<<?(int, int),                         ?>>?(int, int);
    155 long            ?<<?(long, long),                       ?>>?(long, long);
    156 unsigned        ?<<?(unsigned, unsigned),               ?>>?(unsigned, unsigned);
    157 long unsigned   ?<<?(long unsigned, long unsigned),     ?>>?(long unsigned, long unsigned);
    158 
    159 /*
    160  * ------------------------------------------------------------
    161  *
    162  * Section 4.8 Relational Operators
    163  */
    164 
    165 int     ?<?(int, int),                          ?<=?(int, int),
    166         ?>?(int, int),                          ?>=?(int, int);
    167 int     ?<?(long, long),                        ?<=?(long, long),
    168         ?>?(long, long),                        ?>=?(long, long);
    169 int     ?<?(unsigned, unsigned),                ?<=?(unsigned, unsigned),
    170         ?>?(unsigned, unsigned),                ?>=?(unsigned, unsigned);
    171 int     ?<?(unsigned long, unsigned long),      ?<=?(unsigned long, unsigned long),
    172         ?>?(unsigned long, unsigned long),      ?>=?(unsigned long, unsigned long);
    173 int     ?<?(float, float),                      ?<=?(float, float),
    174         ?>?(float, float),                      ?>=?(float, float);
    175 int     ?<?(double, double),                    ?<=?(double, double),
    176         ?>?(double, double),                    ?>=?(double, double);
    177 int     ?<?(long double, long double),          ?<=?(long double, long double),
    178         ?>?(long double, long double),          ?>=?(long double, long double);
    179 
    180 forall(dtype DT) int ?<?( const volatile DT*, const volatile DT*);
    181 forall(dtype DT) int ?>?( const volatile DT*, const volatile DT*);
    182 forall(dtype DT) int ?<=?( const volatile DT*, const volatile DT*);
    183 forall(dtype DT) int ?>=?( const volatile DT*, const volatile DT*);
    184 
    185 /*
    186  * ------------------------------------------------------------
    187  *
    188  * Section 4.9 Equality Operators
    189  */
    190 
    191 int     ?==?(int, int),                         ?!=?(int, int);
    192 int     ?==?(long, long),                       ?!=?(long, long);
    193 int     ?==?(unsigned, unsigned),               ?!=?(unsigned, unsigned);
    194 int     ?==?(unsigned long, unsigned long),     ?!=?(unsigned long, unsigned long);
    195 int     ?==?(float, float),                     ?!=?(float, float);
    196 int     ?==?(double, double),                   ?!=?(double, double);
    197 int     ?==?(long double, long double),         ?!=?(long double, long double);
    198 
    199 forall(dtype DT) int ?==?(                DT*,                DT*);
    200 forall(dtype DT) int ?!=?(                DT*,                DT*);
    201 forall(dtype DT) int ?==?( const          DT*, const          DT*);
    202 forall(dtype DT) int ?!=?( const          DT*, const          DT*);
    203 forall(dtype DT) int ?==?(       volatile DT*,       volatile DT*);
    204 forall(dtype DT) int ?!=?(       volatile DT*,       volatile DT*);
    205 forall(dtype DT) int ?==?( const volatile DT*, const volatile DT*);
    206 forall(dtype DT) int ?!=?( const volatile DT*, const volatile DT*);
    207 forall(ftype FT) int ?==?( FT*, FT*);
    208 forall(ftype FT) int ?!=?( FT*, FT*);
    209 
    210 
    211 forall(dtype DT) int ?==?( const volatile DT*, const volatile void*);
    212 forall(dtype DT) int ?!=?( const volatile DT*, const volatile void*);
    213 forall(dtype DT) int ?==?( const volatile void*, const volatile DT*);
    214 forall(dtype DT) int ?!=?( const volatile void*, const volatile DT*);
    215 
    216 forall(dtype DT) int ?==?( const volatile DT*, forall(dtype DT2)const DT2*);
    217 forall(dtype DT) int ?!=?( const volatile DT*, forall(dtype DT2)const DT2*);
    218 forall(dtype DT) int ?==?( forall(dtype DT2)const DT2*, const volatile DT*);
    219 forall(dtype DT) int ?!=?( forall(dtype DT2)const DT2*, const volatile DT*);
    220 forall(ftype FT) int ?==?( FT*, forall(ftype FT2)FT2*);
    221 forall(ftype FT) int ?!=?( FT*, forall(ftype FT2)FT2*);
    222 forall(ftype FT) int ?==?( forall(ftype FT2)FT2*, FT*);
    223 forall(ftype FT) int ?!=?( forall(ftype FT2)FT2*, FT*);
    224 
    225 /*
    226  * ------------------------------------------------------------
    227  *
    228  * Section 4.10 Bitwise AND Operators
    229  */
     129
     130// ------------------------------------------------------------
     131//
     132// Section 4.6 Additive Operators
     133//
     134// ------------------------------------------------------------
     135
     136int             ?+?( int, int ),                        ?-?( int, int );
     137long            ?+?( long, long ),                      ?-?( long, long );
     138unsigned        ?+?( unsigned, unsigned ),              ?-?( unsigned, unsigned );
     139long unsigned   ?+?( long unsigned, long unsigned ),    ?-?( long unsigned, long unsigned );
     140float           ?+?( float, float ),                    ?-?( float, float );
     141double          ?+?( double, double ),                  ?-?( double, double );
     142long double     ?+?( long double, long double ),        ?-?( long double, long double );
     143
     144forall( type T ) T *                    ?+?(                T *,                       ptrdiff_t );
     145forall( type T ) T *                    ?+?(          ptrdiff_t,                       T * );
     146forall( type T ) T *                    ?-?(                T *,                       ptrdiff_t );
     147forall( type T ) const T *              ?+?( const          T *,                       ptrdiff_t );
     148forall( type T ) const T *              ?+?(          ptrdiff_t, const         T * );
     149forall( type T ) const T *              ?-?( const          T *,                       ptrdiff_t );
     150forall( type T ) volatile T *           ?+?(       volatile T *,                       ptrdiff_t );
     151forall( type T ) volatile T *           ?+?(          ptrdiff_t,              volatile T * );
     152forall( type T ) volatile T *           ?-?(       volatile T *,                       ptrdiff_t );
     153forall( type T ) const volatile T *     ?+?( const volatile T *,                       ptrdiff_t );
     154forall( type T ) const volatile T *     ?+?(          ptrdiff_t, const volatile T * );
     155forall( type T ) const volatile T *     ?-?( const volatile T *,                       ptrdiff_t );
     156
     157forall( type T ) ptrdiff_t              ?-?( const volatile T *, const volatile T * );
     158
     159// ------------------------------------------------------------
     160//
     161// Section 4.7 Bitwise Shift Operators
     162//
     163// ------------------------------------------------------------
     164
     165int             ?<<?( int, int ),                       ?>>?( int, int );
     166long            ?<<?( long, long ),                     ?>>?( long, long );
     167unsigned        ?<<?( unsigned, unsigned ),             ?>>?( unsigned, unsigned );
     168long unsigned   ?<<?( long unsigned, long unsigned ),   ?>>?( long unsigned, long unsigned );
     169
     170// ------------------------------------------------------------
     171//
     172// Section 4.8 Relational Operators
     173//
     174// ------------------------------------------------------------
     175
     176int     ?<?( int, int ),                        ?<=?( int, int ),
     177        ?>?( int, int ),                        ?>=?( int, int );
     178int     ?<?( long, long ),                      ?<=?( long, long ),
     179        ?>?( long, long ),                      ?>=?( long, long );
     180int     ?<?( unsigned, unsigned ),              ?<=?( unsigned, unsigned ),
     181        ?>?( unsigned, unsigned ),              ?>=?( unsigned, unsigned );
     182int     ?<?( unsigned long, unsigned long ),    ?<=?( unsigned long, unsigned long ),
     183        ?>?( unsigned long, unsigned long ),    ?>=?( unsigned long, unsigned long );
     184int     ?<?( float, float ),                    ?<=?( float, float ),
     185        ?>?( float, float ),                    ?>=?( float, float );
     186int     ?<?( double, double ),                  ?<=?( double, double ),
     187        ?>?( double, double ),                  ?>=?( double, double );
     188int     ?<?( long double, long double ),        ?<=?( long double, long double ),
     189        ?>?( long double, long double ),        ?>=?( long double, long double );
     190
     191forall( dtype DT ) int ?<?(  const volatile DT *, const volatile DT * );
     192forall( dtype DT ) int ?>?(  const volatile DT *, const volatile DT * );
     193forall( dtype DT ) int ?<=?( const volatile DT *, const volatile DT * );
     194forall( dtype DT ) int ?>=?( const volatile DT *, const volatile DT * );
     195
     196// ------------------------------------------------------------
     197//
     198// Section 4.9 Equality Operators
     199//
     200// ------------------------------------------------------------
     201
     202int     ?==?( int, int ),                       ?!=?( int, int );
     203int     ?==?( long, long ),                     ?!=?( long, long );
     204int     ?==?( unsigned, unsigned ),             ?!=?( unsigned, unsigned );
     205int     ?==?( unsigned long, unsigned long ),   ?!=?( unsigned long, unsigned long );
     206int     ?==?( float, float ),                   ?!=?( float, float );
     207int     ?==?( double, double ),                 ?!=?( double, double );
     208int     ?==?( long double, long double ),       ?!=?( long double, long double );
     209
     210forall( dtype DT ) int ?==?(                DT *,                DT * );
     211forall( dtype DT ) int ?!=?(                DT *,                DT * );
     212forall( dtype DT ) int ?==?( const          DT *, const          DT * );
     213forall( dtype DT ) int ?!=?( const          DT *, const          DT * );
     214forall( dtype DT ) int ?==?(       volatile DT *,       volatile DT * );
     215forall( dtype DT ) int ?!=?(       volatile DT *,       volatile DT * );
     216forall( dtype DT ) int ?==?( const volatile DT *, const volatile DT * );
     217forall( dtype DT ) int ?!=?( const volatile DT *, const volatile DT * );
     218forall( ftype FT ) int ?==?( FT *, FT * );
     219forall( ftype FT ) int ?!=?( FT *, FT * );
     220
     221
     222forall( dtype DT ) int ?==?( const volatile DT   *, const volatile void * );
     223forall( dtype DT ) int ?!=?( const volatile DT   *, const volatile void * );
     224forall( dtype DT ) int ?==?( const volatile void *, const volatile DT * );
     225forall( dtype DT ) int ?!=?( const volatile void *, const volatile DT * );
     226
     227forall( dtype DT ) int ?==?( const volatile DT *, forall( dtype DT2 )const DT2 * );
     228forall( dtype DT ) int ?!=?( const volatile DT *, forall( dtype DT2 )const DT2 * );
     229forall( dtype DT ) int ?==?( forall( dtype DT2 )const DT2 *, const volatile DT * );
     230forall( dtype DT ) int ?!=?( forall( dtype DT2 )const DT2 *, const volatile DT * );
     231forall( ftype FT ) int ?==?( FT *, forall( ftype FT2 )FT2 * );
     232forall( ftype FT ) int ?!=?( FT *, forall( ftype FT2 )FT2 * );
     233forall( ftype FT ) int ?==?( forall( ftype FT2 )FT2 *, FT * );
     234forall( ftype FT ) int ?!=?( forall( ftype FT2 )FT2 *, FT * );
     235
     236// ------------------------------------------------------------
     237//
     238// Section 4.10 Bitwise AND Operators
     239//
     240// ------------------------------------------------------------
    230241
    231242int             ?&?( int, int );
     
    234245unsigned long   ?&?( unsigned long, unsigned long );
    235246
    236 /*
    237  * ------------------------------------------------------------
    238  *
    239  * Section 4.11 Bitwise XOR Operators
    240  */
     247// ------------------------------------------------------------
     248//
     249// Section 4.11 Bitwise XOR Operators
     250//
     251// ------------------------------------------------------------
    241252
    242253int             ?^?( int, int );
     
    245256unsigned long   ?^?( unsigned long, unsigned long );
    246257
    247 /*
    248  * ------------------------------------------------------------
    249  *
    250  * Section 4.12 Bitwise OR Operators
    251  */
     258// ------------------------------------------------------------
     259//
     260// Section 4.12 Bitwise OR Operators
     261//
     262// ------------------------------------------------------------
    252263
    253264int             ?|?( int, int );
     
    256267unsigned long   ?|?( unsigned long, unsigned long );
    257268
    258 /*
    259  * ------------------------------------------------------------
    260  *
    261  * Section 4.16 Assignment Operator
    262  */
    263 
    264 forall(ftype FT) FT*           ?=?(FT**, FT*);
    265 forall(ftype FT) FT*           ?=?(FT* volatile*, FT*);
    266 
    267 forall(dtype DT) DT*                    ?=?(                DT *          *,          DT* );
    268 forall(dtype DT) DT*                    ?=?(                DT * volatile *,                 DT* );
    269 forall(dtype DT) const DT*              ?=?(const           DT *          *,                DT* );
    270 forall(dtype DT) const DT*              ?=?(const           DT * volatile *,                DT* );
    271 forall(dtype DT) const DT*              ?=?(const           DT *          *, const          DT* );
    272 forall(dtype DT) const DT*              ?=?(const           DT * volatile *, const          DT* );
    273 forall(dtype DT) volatile DT*           ?=?(      volatile  DT *          *,                DT* );
    274 forall(dtype DT) volatile DT*           ?=?(      volatile  DT * volatile *,                DT* );
    275 forall(dtype DT) volatile DT*           ?=?(      volatile  DT *          *,       volatile DT* );
    276 forall(dtype DT) volatile DT*           ?=?(      volatile  DT * volatile *,       volatile DT* );
     269// ------------------------------------------------------------
     270//
     271// Section 4.16 Assignment Operator
     272//
     273// ------------------------------------------------------------
     274
     275forall( ftype FT ) FT *                 ?=?( FT **, FT * );
     276forall( ftype FT ) FT *                 ?=?( FT * volatile *, FT * );
     277
     278forall( dtype DT ) DT *                 ?=?(                 DT *          *,                   DT * );
     279forall( dtype DT ) DT *                 ?=?(                 DT * volatile *,                   DT * );
     280forall( dtype DT ) const DT *           ?=?( const           DT *          *,                   DT * );
     281forall( dtype DT ) const DT *           ?=?( const           DT * volatile *,                   DT * );
     282forall( dtype DT ) const DT *           ?=?( const           DT *          *, const             DT * );
     283forall( dtype DT ) const DT *           ?=?( const           DT * volatile *, const             DT * );
     284forall( dtype DT ) volatile DT *        ?=?(       volatile  DT *          *,                   DT * );
     285forall( dtype DT ) volatile DT *        ?=?(       volatile  DT * volatile *,                   DT * );
     286forall( dtype DT ) volatile DT *        ?=?(       volatile  DT *          *,       volatile    DT * );
     287forall( dtype DT ) volatile DT *        ?=?(       volatile  DT * volatile *,       volatile    DT * );
    277288       
    278 forall(dtype DT) const volatile DT*     ?=?(const volatile  DT *          *,                DT* );
    279 forall(dtype DT) const volatile DT*     ?=?(const volatile  DT * volatile *,                DT* );
    280 forall(dtype DT) const volatile DT*     ?=?(const volatile  DT *          *, const          DT* );
    281 forall(dtype DT) const volatile DT*     ?=?(const volatile  DT * volatile *, const          DT* );
    282 forall(dtype DT) const volatile DT*     ?=?(const volatile  DT *          *,       volatile DT* );
    283 forall(dtype DT) const volatile DT*     ?=?(const volatile  DT * volatile *,       volatile DT* );
    284 forall(dtype DT) const volatile DT*     ?=?(const volatile  DT *          *, const volatile DT* );
    285 forall(dtype DT) const volatile DT*    ?=?(const volatile  DT * volatile *, const volatile DT* );
    286 
    287 forall(dtype DT) DT*                    ?=?(                DT *          *,          void* );
    288 forall(dtype DT) DT*                    ?=?(                DT * volatile *,                 void* );
    289 forall(dtype DT) const DT*              ?=?(const           DT *          *,                void* );
    290 forall(dtype DT) const DT*              ?=?(const           DT * volatile *,                void* );
    291 forall(dtype DT) const DT*              ?=?(const           DT *          *, const          void* );
    292 forall(dtype DT) const DT*              ?=?(const           DT * volatile *, const          void* );
    293 forall(dtype DT) volatile DT*           ?=?(      volatile  DT *          *,                void* );
    294 forall(dtype DT) volatile DT*           ?=?(      volatile  DT * volatile *,                void* );
    295 forall(dtype DT) volatile DT*           ?=?(      volatile  DT *          *,       volatile void* );
    296 forall(dtype DT) volatile DT*           ?=?(      volatile  DT * volatile *,       volatile void* );
     289forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *,                   DT * );
     290forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *,                   DT * );
     291forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *, const             DT * );
     292forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *, const             DT * );
     293forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *,       volatile    DT * );
     294forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *,       volatile    DT * );
     295forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *, const volatile    DT * );
     296forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *, const volatile    DT * );
     297
     298forall( dtype DT ) DT *                 ?=?(                 DT *          *,                   void * );
     299forall( dtype DT ) DT *                 ?=?(                 DT * volatile *,                   void * );
     300forall( dtype DT ) const DT *           ?=?( const           DT *          *,                   void * );
     301forall( dtype DT ) const DT *           ?=?( const           DT * volatile *,                   void * );
     302forall( dtype DT ) const DT *           ?=?( const           DT *          *, const             void * );
     303forall( dtype DT ) const DT *           ?=?( const           DT * volatile *, const             void * );
     304forall( dtype DT ) volatile DT *        ?=?(       volatile  DT *          *,                   void * );
     305forall( dtype DT ) volatile DT *        ?=?(       volatile  DT * volatile *,                   void * );
     306forall( dtype DT ) volatile DT *        ?=?(       volatile  DT *          *,       volatile    void * );
     307forall( dtype DT ) volatile DT *        ?=?(       volatile  DT * volatile *,       volatile    void * );
    297308       
    298 forall(dtype DT) const volatile DT*     ?=?(const volatile  DT *          *,                void* );
    299 forall(dtype DT) const volatile DT*     ?=?(const volatile  DT * volatile *,                void* );
    300 forall(dtype DT) const volatile DT*     ?=?(const volatile  DT *          *, const          void* );
    301 forall(dtype DT) const volatile DT*     ?=?(const volatile  DT * volatile *, const          void* );
    302 forall(dtype DT) const volatile DT*     ?=?(const volatile  DT *          *,       volatile void* );
    303 forall(dtype DT) const volatile DT*     ?=?(const volatile  DT * volatile *,       volatile void* );
    304 forall(dtype DT) const volatile DT*     ?=?(const volatile  DT *          *, const volatile void* );
    305 forall(dtype DT) const volatile DT*    ?=?(const volatile  DT * volatile *, const volatile void* );
    306 
    307        
    308 forall(dtype DT) void *            ?=?(               void *          *,                DT*);
    309 forall(dtype DT) void *            ?=?(               void * volatile *,                DT*);
    310 forall(dtype DT) const void *      ?=?(const          void *          *,                DT*);
    311 forall(dtype DT) const void *      ?=?(const          void * volatile *,                DT*);
    312 forall(dtype DT) const void *      ?=?(const          void *          *, const          DT*);
    313 forall(dtype DT) const void *      ?=?(const          void * volatile *, const          DT*);
    314 forall(dtype DT) volatile void *   ?=?(      volatile void *          *,                DT*);
    315 forall(dtype DT) volatile void *   ?=?(      volatile void * volatile *,                DT*);
    316 forall(dtype DT) volatile void *   ?=?(      volatile void *          *,       volatile DT*);
    317 forall(dtype DT) volatile void *   ?=?(      volatile void * volatile *,       volatile DT*);
    318 forall(dtype DT) const volatile void *   ?=?(const volatile void *          *,                DT*);
    319 forall(dtype DT) const volatile void *   ?=?(const volatile void * volatile *,                DT*);
    320 forall(dtype DT) const volatile void *   ?=?(const volatile void *          *, const          DT*);
    321 forall(dtype DT) const volatile void *   ?=?(const volatile void * volatile *, const          DT*);
    322 forall(dtype DT) const volatile void *   ?=?(const volatile void *          *,       volatile DT*);
    323 forall(dtype DT) const volatile void *   ?=?(const volatile void * volatile *,       volatile DT*);
    324 forall(dtype DT) const volatile void *   ?=?(const volatile void *          *, const volatile DT*);
    325 forall(dtype DT) const volatile void *   ?=?(const volatile void * volatile *, const volatile DT*);
    326 
    327 void *            ?=?(               void *          *,                void*);
    328 void *            ?=?(               void * volatile *,                void*);
    329 const void *      ?=?(const          void *          *,                void*);
    330 const void *      ?=?(const          void * volatile *,                void*);
    331 const void *      ?=?(const          void *          *, const          void*);
    332 const void *      ?=?(const          void * volatile *, const          void*);
    333 volatile void *   ?=?(      volatile void *          *,                void*);
    334 volatile void *   ?=?(      volatile void * volatile *,                void*);
    335 volatile void *   ?=?(      volatile void *          *,       volatile void*);
    336 volatile void *   ?=?(      volatile void * volatile *,       volatile void*);
    337 const volatile void *   ?=?(const volatile void *          *,                void*);
    338 const volatile void *   ?=?(const volatile void * volatile *,                void*);
    339 const volatile void *   ?=?(const volatile void *          *, const          void*);
    340 const volatile void *   ?=?(const volatile void * volatile *, const          void*);
    341 const volatile void *   ?=?(const volatile void *          *,       volatile void*);
    342 const volatile void *   ?=?(const volatile void * volatile *,       volatile void*);
    343 const volatile void *   ?=?(const volatile void *          *, const volatile void*);
    344 const volatile void *   ?=?(const volatile void * volatile *, const volatile void*);
    345 
    346 forall(dtype DT) DT*               ?=?(               DT *          *, forall(dtype DT2) const DT2*);
    347 forall(dtype DT) DT*               ?=?(               DT * volatile *, forall(dtype DT2) const DT2*);
    348 forall(dtype DT) const DT*         ?=?(const          DT *          *, forall(dtype DT2) const DT2*);
    349 forall(dtype DT) const DT*         ?=?(const          DT * volatile *, forall(dtype DT2) const DT2*);
    350 forall(dtype DT) volatile DT*      ?=?(      volatile DT *          *, forall(dtype DT2) const DT2*);
    351 forall(dtype DT) volatile DT*      ?=?(      volatile DT * volatile *, forall(dtype DT2) const DT2*);
    352 forall(dtype DT) const volatile DT* ?=?(const volatile DT *          *, forall(dtype DT2) const DT2*);
    353 forall(dtype DT) const volatile DT* ?=?(const volatile DT * volatile *, forall(dtype DT2) const DT2*);
    354 
    355 forall(ftype FT) FT*               ?=?( FT *          *, forall(ftype FT2)FT2*);
    356 forall(ftype FT) FT*               ?=?( FT * volatile *, forall(ftype FT2)FT2*);
    357 
    358 forall(type T) T*                  ?+=?(                T *          *, _ptrdiff_t);
    359 forall(type T) T*                  ?+=?(                T * volatile *, _ptrdiff_t);
    360 forall(type T) T*                  ?-=?(                T *          *, _ptrdiff_t);
    361 forall(type T) T*                  ?-=?(                T * volatile *, _ptrdiff_t);
    362 forall(type T) const T*            ?+=?( const          T *          *, _ptrdiff_t);
    363 forall(type T) const T*            ?+=?( const          T * volatile *, _ptrdiff_t);
    364 forall(type T) const T*            ?-=?( const          T *          *, _ptrdiff_t);
    365 forall(type T) const T*            ?-=?( const          T * volatile *, _ptrdiff_t);
    366 forall(type T) volatile T*         ?+=?(       volatile T *          *, _ptrdiff_t);
    367 forall(type T) volatile T*         ?+=?(       volatile T * volatile *, _ptrdiff_t);
    368 forall(type T) volatile T*         ?-=?(       volatile T *          *, _ptrdiff_t);
    369 forall(type T) volatile T*         ?-=?(       volatile T * volatile *, _ptrdiff_t);
    370 forall(type T) const volatile T*   ?+=?( const volatile T *          *, _ptrdiff_t);
    371 forall(type T) const volatile T*   ?+=?( const volatile T * volatile *, _ptrdiff_t);
    372 forall(type T) const volatile T*   ?-=?( const volatile T *          *, _ptrdiff_t);
    373 forall(type T) const volatile T*   ?-=?( const volatile T * volatile *, _ptrdiff_t);
    374 
    375 
    376 char                    ?=?(         char*, char),
    377                         ?=?(volatile char*, char);
    378 signed char             ?=?(         signed char*, signed char),
    379                         ?=?(volatile signed char*, signed char);
    380 unsigned char           ?=?(         unsigned char*, unsigned char),
    381                         ?=?(volatile unsigned char*, unsigned char);
    382 short                   ?=?(         short*, short),
    383                         ?=?(volatile short*, short);
    384 unsigned short          ?=?(         unsigned short*, unsigned short),
    385                         ?=?(volatile unsigned short*, unsigned short);
    386 int                     ?=?(         int*, int),
    387                         ?=?(volatile int*, int);
    388 unsigned                ?=?(         unsigned*, unsigned),
    389                         ?=?(volatile unsigned*, unsigned);
    390 long                    ?=?(         long*, long),
    391                         ?=?(volatile long*, long);
    392 unsigned long           ?=?(         unsigned long*, unsigned long),
    393                         ?=?(volatile unsigned long*, unsigned long);
    394 long long                       ?=?(         long long*, long long),
    395                         ?=?(volatile long long*, long long);
    396 unsigned long long              ?=?(         unsigned long long*, unsigned long long),
    397                         ?=?(volatile unsigned long long*, unsigned long long);
    398 
    399 char                    ?*=?(         char*, char),
    400                         ?*=?(volatile char*, char);
    401 signed char             ?*=?(         signed char*, signed char),
    402                         ?*=?(volatile signed char*, signed char);
    403 unsigned char           ?*=?(         unsigned char*, unsigned char),
    404                         ?*=?(volatile unsigned char*, unsigned char);
    405 short                   ?*=?(         short*, short),
    406                         ?*=?(volatile short*, short);
    407 unsigned short          ?*=?(         unsigned short*, unsigned short),
    408                         ?*=?(volatile unsigned short*, unsigned short);
    409 int                     ?*=?(         int*, int),
    410                         ?*=?(volatile int*, int);
    411 unsigned                ?*=?(         unsigned*, unsigned),
    412                         ?*=?(volatile unsigned*, unsigned);
    413 long                    ?*=?(         long*, long),
    414                         ?*=?(volatile long*, long);
    415 unsigned long           ?*=?(         unsigned long*, unsigned long),
    416                         ?*=?(volatile unsigned long*, unsigned long);
    417 long long                       ?*=?(         long long*, long long),
    418                         ?*=?(volatile long long*, long long);
    419 unsigned long long              ?*=?(         unsigned long long*, unsigned long long),
    420                         ?*=?(volatile unsigned long long*, unsigned long long);
    421 
    422 char                    ?/=?(         char*, char),
    423                         ?/=?(volatile char*, char);
    424 signed char             ?/=?(         signed char*, signed char),
    425                         ?/=?(volatile signed char*, signed char);
    426 unsigned char           ?/=?(         unsigned char*, unsigned char),
    427                         ?/=?(volatile unsigned char*, unsigned char);
    428 short                   ?/=?(         short*, short),
    429                         ?/=?(volatile short*, short);
    430 unsigned short          ?/=?(         unsigned short*, unsigned short),
    431                         ?/=?(volatile unsigned short*, unsigned short);
    432 int                     ?/=?(         int*, int),
    433                         ?/=?(volatile int*, int);
    434 unsigned                ?/=?(         unsigned*, unsigned),
    435                         ?/=?(volatile unsigned*, unsigned);
    436 long                    ?/=?(         long*, long),
    437                         ?/=?(volatile long*, long);
    438 unsigned long           ?/=?(         unsigned long*, unsigned long),
    439                         ?/=?(volatile unsigned long*, unsigned long);
    440 long long                       ?/=?(         long long*, long long),
    441                         ?/=?(volatile long long*, long long);
    442 unsigned long long              ?/=?(         unsigned long long*, unsigned long long),
    443                         ?/=?(volatile unsigned long long*, unsigned long long);
    444 
    445 char                    ?%=?(         char*, char),
    446                         ?%=?(volatile char*, char);
    447 signed char             ?%=?(         signed char*, signed char),
    448                         ?%=?(volatile signed char*, signed char);
    449 unsigned char           ?%=?(         unsigned char*, unsigned char),
    450                         ?%=?(volatile unsigned char*, unsigned char);
    451 short                   ?%=?(         short*, short),
    452                         ?%=?(volatile short*, short);
    453 unsigned short          ?%=?(         unsigned short*, unsigned short),
    454                         ?%=?(volatile unsigned short*, unsigned short);
    455 int                     ?%=?(         int*, int),
    456                         ?%=?(volatile int*, int);
    457 unsigned                ?%=?(         unsigned*, unsigned),
    458                         ?%=?(volatile unsigned*, unsigned);
    459 long                    ?%=?(         long*, long),
    460                         ?%=?(volatile long*, long);
    461 unsigned long           ?%=?(         unsigned long*, unsigned long),
    462                         ?%=?(volatile unsigned long*, unsigned long);
    463 long long                       ?%=?(         long long*, long long),
    464                         ?%=?(volatile long long*, long long);
    465 unsigned long long              ?%=?(         unsigned long long*, unsigned long long),
    466                         ?%=?(volatile unsigned long long*, unsigned long long);
    467 
    468 char                    ?+=?(         char*, char),
    469                         ?+=?(volatile char*, char);
    470 signed char             ?+=?(         signed char*, signed char),
    471                         ?+=?(volatile signed char*, signed char);
    472 unsigned char           ?+=?(         unsigned char*, unsigned char),
    473                         ?+=?(volatile unsigned char*, unsigned char);
    474 short                   ?+=?(         short*, short),
    475                         ?+=?(volatile short*, short);
    476 unsigned short          ?+=?(         unsigned short*, unsigned short),
    477                         ?+=?(volatile unsigned short*, unsigned short);
    478 int                     ?+=?(         int*, int),
    479                         ?+=?(volatile int*, int);
    480 unsigned                ?+=?(         unsigned*, unsigned),
    481                         ?+=?(volatile unsigned*, unsigned);
    482 long                    ?+=?(         long*, long),
    483                         ?+=?(volatile long*, long);
    484 unsigned long           ?+=?(         unsigned long*, unsigned long),
    485                         ?+=?(volatile unsigned long*, unsigned long);
    486 long long                       ?+=?(         long long*, long long),
    487                         ?+=?(volatile long long*, long long);
    488 unsigned long long              ?+=?(         unsigned long long*, unsigned long long),
    489                         ?+=?(volatile unsigned long long*, unsigned long long);
    490 
    491 char                    ?-=?(         char*, char),
    492                         ?-=?(volatile char*, char);
    493 signed char             ?-=?(         signed char*, signed char),
    494                         ?-=?(volatile signed char*, signed char);
    495 unsigned char           ?-=?(         unsigned char*, unsigned char),
    496                         ?-=?(volatile unsigned char*, unsigned char);
    497 short                   ?-=?(         short*, short),
    498                         ?-=?(volatile short*, short);
    499 unsigned short          ?-=?(         unsigned short*, unsigned short),
    500                         ?-=?(volatile unsigned short*, unsigned short);
    501 int                     ?-=?(         int*, int),
    502                         ?-=?(volatile int*, int);
    503 unsigned                ?-=?(         unsigned*, unsigned),
    504                         ?-=?(volatile unsigned*, unsigned);
    505 long                    ?-=?(         long*, long),
    506                         ?-=?(volatile long*, long);
    507 unsigned long           ?-=?(         unsigned long*, unsigned long),
    508                         ?-=?(volatile unsigned long*, unsigned long);
    509 long long                       ?-=?(         long long*, long long),
    510                         ?-=?(volatile long long*, long long);
    511 unsigned long long              ?-=?(         unsigned long long*, unsigned long long),
    512                         ?-=?(volatile unsigned long long*, unsigned long long);
    513 
    514 char                    ?<<=?(         char*, char),
    515                         ?<<=?(volatile char*, char);
    516 signed char             ?<<=?(         signed char*, signed char),
    517                         ?<<=?(volatile signed char*, signed char);
    518 unsigned char           ?<<=?(         unsigned char*, unsigned char),
    519                         ?<<=?(volatile unsigned char*, unsigned char);
    520 short                   ?<<=?(         short*, short),
    521                         ?<<=?(volatile short*, short);
    522 unsigned short          ?<<=?(         unsigned short*, unsigned short),
    523                         ?<<=?(volatile unsigned short*, unsigned short);
    524 int                     ?<<=?(         int*, int),
    525                         ?<<=?(volatile int*, int);
    526 unsigned                ?<<=?(         unsigned*, unsigned),
    527                         ?<<=?(volatile unsigned*, unsigned);
    528 long                    ?<<=?(         long*, long),
    529                         ?<<=?(volatile long*, long);
    530 unsigned long           ?<<=?(         unsigned long*, unsigned long),
    531                         ?<<=?(volatile unsigned long*, unsigned long);
    532 long long                       ?<<=?(         long long*, long long),
    533                         ?<<=?(volatile long long*, long long);
    534 unsigned long long              ?<<=?(         unsigned long long*, unsigned long long),
    535                         ?<<=?(volatile unsigned long long*, unsigned long long);
    536 
    537 char                    ?>>=?(         char*, char),
    538                         ?>>=?(volatile char*, char);
    539 signed char             ?>>=?(         signed char*, signed char),
    540                         ?>>=?(volatile signed char*, signed char);
    541 unsigned char           ?>>=?(         unsigned char*, unsigned char),
    542                         ?>>=?(volatile unsigned char*, unsigned char);
    543 short                   ?>>=?(         short*, short),
    544                         ?>>=?(volatile short*, short);
    545 unsigned short          ?>>=?(         unsigned short*, unsigned short),
    546                         ?>>=?(volatile unsigned short*, unsigned short);
    547 int                     ?>>=?(         int*, int),
    548                         ?>>=?(volatile int*, int);
    549 unsigned                ?>>=?(         unsigned*, unsigned),
    550                         ?>>=?(volatile unsigned*, unsigned);
    551 long                    ?>>=?(         long*, long),
    552                         ?>>=?(volatile long*, long);
    553 unsigned long           ?>>=?(         unsigned long*, unsigned long),
    554                         ?>>=?(volatile unsigned long*, unsigned long);
    555 long long                       ?>>=?(         long long*, long long),
    556                         ?>>=?(volatile long long*, long long);
    557 unsigned long long              ?>>=?(         unsigned long long*, unsigned long long),
    558                         ?>>=?(volatile unsigned long long*, unsigned long long);
    559 
    560 char                    ?&=?(         char*, char),
    561                         ?&=?(volatile char*, char);
    562 signed char             ?&=?(         signed char*, signed char),
    563                         ?&=?(volatile signed char*, signed char);
    564 unsigned char           ?&=?(         unsigned char*, unsigned char),
    565                         ?&=?(volatile unsigned char*, unsigned char);
    566 short                   ?&=?(         short*, short),
    567                         ?&=?(volatile short*, short);
    568 unsigned short          ?&=?(         unsigned short*, unsigned short),
    569                         ?&=?(volatile unsigned short*, unsigned short);
    570 int                     ?&=?(         int*, int),
    571                         ?&=?(volatile int*, int);
    572 unsigned                ?&=?(         unsigned*, unsigned),
    573                         ?&=?(volatile unsigned*, unsigned);
    574 long                    ?&=?(         long*, long),
    575                         ?&=?(volatile long*, long);
    576 unsigned long           ?&=?(         unsigned long*, unsigned long),
    577                         ?&=?(volatile unsigned long*, unsigned long);
    578 long long                       ?&=?(         long long*, long long),
    579                         ?&=?(volatile long long*, long long);
    580 unsigned long long              ?&=?(         unsigned long long*, unsigned long long),
    581                         ?&=?(volatile unsigned long long*, unsigned long long);
    582 
    583 char                    ?|=?(         char*, char),
    584                         ?|=?(volatile char*, char);
    585 signed char             ?|=?(         signed char*, signed char),
    586                         ?|=?(volatile signed char*, signed char);
    587 unsigned char           ?|=?(         unsigned char*, unsigned char),
    588                         ?|=?(volatile unsigned char*, unsigned char);
    589 short                   ?|=?(         short*, short),
    590                         ?|=?(volatile short*, short);
    591 unsigned short          ?|=?(         unsigned short*, unsigned short),
    592                         ?|=?(volatile unsigned short*, unsigned short);
    593 int                     ?|=?(         int*, int),
    594                         ?|=?(volatile int*, int);
    595 unsigned                ?|=?(         unsigned*, unsigned),
    596                         ?|=?(volatile unsigned*, unsigned);
    597 long                    ?|=?(         long*, long),
    598                         ?|=?(volatile long*, long);
    599 unsigned long           ?|=?(         unsigned long*, unsigned long),
    600                         ?|=?(volatile unsigned long*, unsigned long);
    601 long long                       ?|=?(         long long*, long long),
    602                         ?|=?(volatile long long*, long long);
    603 unsigned long long              ?|=?(         unsigned long long*, unsigned long long),
    604                         ?|=?(volatile unsigned long long*, unsigned long long);
    605 
    606 char                    ?^=?(         char*, char),
    607                         ?^=?(volatile char*, char);
    608 signed char             ?^=?(         signed char*, signed char),
    609                         ?^=?(volatile signed char*, signed char);
    610 unsigned char           ?^=?(         unsigned char*, unsigned char),
    611                         ?^=?(volatile unsigned char*, unsigned char);
    612 short                   ?^=?(         short*, short),
    613                         ?^=?(volatile short*, short);
    614 unsigned short          ?^=?(         unsigned short*, unsigned short),
    615                         ?^=?(volatile unsigned short*, unsigned short);
    616 int                     ?^=?(         int*, int),
    617                         ?^=?(volatile int*, int);
    618 unsigned                ?^=?(         unsigned*, unsigned),
    619                         ?^=?(volatile unsigned*, unsigned);
    620 long                    ?^=?(         long*, long),
    621                         ?^=?(volatile long*, long);
    622 unsigned long           ?^=?(         unsigned long*, unsigned long),
    623                         ?^=?(volatile unsigned long*, unsigned long);
    624 long long                       ?^=?(         long long*, long long),
    625                         ?^=?(volatile long long*, long long);
    626 unsigned long long              ?^=?(         unsigned long long*, unsigned long long),
    627                         ?^=?(volatile unsigned long long*, unsigned long long);
    628 
    629 
    630 float                   ?=?(         float *, float),
    631                         ?=?(volatile float *, float),
    632                         ?*=?(         float *, float),
    633                         ?*=?(volatile float *, float),
    634                         ?/=?(         float *, float),
    635                         ?/=?(volatile float *, float),
    636                         ?+=?(         float *, float),
    637                         ?+=?(volatile float *, float),
    638                         ?-=?(         float *, float),
    639                         ?-=?(volatile float *, float);
    640 
    641 double                  ?=?(         double *, double),
    642                         ?=?(volatile double *, double),
    643                         ?*=?(         double *, double),
    644                         ?*=?(volatile double *, double),
    645                         ?/=?(         double *, double),
    646                         ?/=?(volatile double *, double),
    647                         ?+=?(         double *, double),
    648                         ?+=?(volatile double *, double),
    649                         ?-=?(         double *, double),
    650                         ?-=?(volatile double *, double);
    651 
    652 long double             ?=?(         long double *, long double),
    653                         ?=?(volatile long double *, long double),
    654                         ?*=?(         long double *, long double),
    655                         ?*=?(volatile long double *, long double),
    656                         ?/=?(         long double *, long double),
    657                         ?/=?(volatile long double *, long double),
    658                         ?+=?(         long double *, long double),
    659                         ?+=?(volatile long double *, long double),
    660                         ?-=?(         long double *, long double),
    661                         ?-=?(volatile long double *, long double);
    662 
    663 /*
    664  * ------------------------------------------------------------
    665  *
    666  *                      End of file
    667  *
    668  * ------------------------------------------------------------
    669  */
     309forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *,                   void * );
     310forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *,                   void * );
     311forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *, const             void * );
     312forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *, const             void * );
     313forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *,       volatile    void * );
     314forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *,       volatile    void * );
     315forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *          *, const volatile    void * );
     316forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *, const volatile    void * );
     317
     318forall( dtype DT ) void *                ?=?(                void *          *,                 DT * );
     319forall( dtype DT ) void *                ?=?(                void * volatile *,                 DT * );
     320forall( dtype DT ) const void *          ?=?( const          void *          *,                 DT * );
     321forall( dtype DT ) const void *          ?=?( const          void * volatile *,                 DT * );
     322forall( dtype DT ) const void *          ?=?( const          void *          *, const           DT * );
     323forall( dtype DT ) const void *          ?=?( const          void * volatile *, const           DT * );
     324forall( dtype DT ) volatile void *       ?=?(       volatile void *          *,                 DT * );
     325forall( dtype DT ) volatile void *       ?=?(       volatile void * volatile *,                 DT * );
     326forall( dtype DT ) volatile void *       ?=?(       volatile void *          *,       volatile  DT * );
     327forall( dtype DT ) volatile void *       ?=?(       volatile void * volatile *,       volatile  DT * );
     328forall( dtype DT ) const volatile void * ?=?( const volatile void *          *,                 DT * );
     329forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *,                 DT * );
     330forall( dtype DT ) const volatile void * ?=?( const volatile void *          *, const           DT * );
     331forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *, const           DT * );
     332forall( dtype DT ) const volatile void * ?=?( const volatile void *          *,       volatile  DT * );
     333forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *,       volatile  DT * );
     334forall( dtype DT ) const volatile void * ?=?( const volatile void *          *, const volatile  DT * );
     335forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *, const volatile  DT * );
     336
     337void *                  ?=?(                void *          *,                void * );
     338void *                  ?=?(                void * volatile *,                void * );
     339const void *            ?=?( const          void *          *,                void * );
     340const void *            ?=?( const          void * volatile *,                void * );
     341const void *            ?=?( const          void *          *, const          void * );
     342const void *            ?=?( const          void * volatile *, const          void * );
     343volatile void *         ?=?(       volatile void *          *,                void * );
     344volatile void *         ?=?(       volatile void * volatile *,                void * );
     345volatile void *         ?=?(       volatile void *          *,       volatile void * );
     346volatile void *         ?=?(       volatile void * volatile *,       volatile void * );
     347const volatile void *   ?=?( const volatile void *          *,                void * );
     348const volatile void *   ?=?( const volatile void * volatile *,                void * );
     349const volatile void *   ?=?( const volatile void *          *, const          void * );
     350const volatile void *   ?=?( const volatile void * volatile *, const          void * );
     351const volatile void *   ?=?( const volatile void *          *,       volatile void * );
     352const volatile void *   ?=?( const volatile void * volatile *,       volatile void * );
     353const volatile void *   ?=?( const volatile void *          *, const volatile void * );
     354const volatile void *   ?=?( const volatile void * volatile *, const volatile void * );
     355
     356forall( dtype DT ) DT *                 ?=?(                DT *          *, forall( dtype DT2 ) const DT2 * );
     357forall( dtype DT ) DT *                 ?=?(                DT * volatile *, forall( dtype DT2 ) const DT2 * );
     358forall( dtype DT ) const DT *           ?=?( const          DT *          *, forall( dtype DT2 ) const DT2 * );
     359forall( dtype DT ) const DT *           ?=?( const          DT * volatile *, forall( dtype DT2 ) const DT2 * );
     360forall( dtype DT ) volatile DT *        ?=?( volatile       DT *          *, forall( dtype DT2 ) const DT2 * );
     361forall( dtype DT ) volatile DT *        ?=?( volatile       DT * volatile *, forall( dtype DT2 ) const DT2 * );
     362forall( dtype DT ) const volatile DT *  ?=?( const volatile DT *          *, forall( dtype DT2 ) const DT2 * );
     363forall( dtype DT ) const volatile DT *  ?=?( const volatile DT * volatile *, forall( dtype DT2 ) const DT2 * );
     364
     365forall( ftype FT ) FT *                 ?=?( FT *          *, forall( ftype FT2 ) FT2 * );
     366forall( ftype FT ) FT *                 ?=?( FT * volatile *, forall( ftype FT2 ) FT2 * );
     367
     368forall( type T ) T *                    ?+=?(                T *          *, ptrdiff_t );
     369forall( type T ) T *                    ?+=?(                T * volatile *, ptrdiff_t );
     370forall( type T ) T *                    ?-=?(                T *          *, ptrdiff_t );
     371forall( type T ) T *                    ?-=?(                T * volatile *, ptrdiff_t );
     372forall( type T ) const T *              ?+=?( const          T *          *, ptrdiff_t );
     373forall( type T ) const T *              ?+=?( const          T * volatile *, ptrdiff_t );
     374forall( type T ) const T *              ?-=?( const          T *          *, ptrdiff_t );
     375forall( type T ) const T *              ?-=?( const          T * volatile *, ptrdiff_t );
     376forall( type T ) volatile T *           ?+=?(       volatile T *          *, ptrdiff_t );
     377forall( type T ) volatile T *           ?+=?(       volatile T * volatile *, ptrdiff_t );
     378forall( type T ) volatile T *           ?-=?(       volatile T *          *, ptrdiff_t );
     379forall( type T ) volatile T *           ?-=?(       volatile T * volatile *, ptrdiff_t );
     380forall( type T ) const volatile T *     ?+=?( const volatile T *          *, ptrdiff_t );
     381forall( type T ) const volatile T *     ?+=?( const volatile T * volatile *, ptrdiff_t );
     382forall( type T ) const volatile T *     ?-=?( const volatile T *          *, ptrdiff_t );
     383forall( type T ) const volatile T *     ?-=?( const volatile T * volatile *, ptrdiff_t );
     384
     385_Bool                   ?=?(          _Bool *, _Bool ),
     386                        ?=?( volatile _Bool *, _Bool );
     387char                    ?=?(          char *, char ),
     388                        ?=?( volatile char *, char );
     389signed char             ?=?(          signed char *, signed char ),
     390                        ?=?( volatile signed char *, signed char );
     391unsigned char           ?=?(          unsigned char *, unsigned char ),
     392                        ?=?( volatile unsigned char *, unsigned char );
     393short                   ?=?(          short *, short ),
     394                        ?=?( volatile short *, short );
     395unsigned short          ?=?(          unsigned short *, unsigned short ),
     396                        ?=?( volatile unsigned short *, unsigned short );
     397int                     ?=?(          int *, int ),
     398                        ?=?( volatile int *, int );
     399unsigned                ?=?(          unsigned *, unsigned ),
     400                        ?=?( volatile unsigned *, unsigned );
     401long                    ?=?(          long *, long ),
     402                        ?=?( volatile long *, long );
     403unsigned long           ?=?(          unsigned long *, unsigned long ),
     404                        ?=?( volatile unsigned long *, unsigned long );
     405long long               ?=?(          long long *, long long ),
     406                        ?=?( volatile long long *, long long );
     407unsigned long long      ?=?(          unsigned long long *, unsigned long long ),
     408                        ?=?( volatile unsigned long long *, unsigned long long );
     409
     410_Bool                   ?*=?(          _Bool *, _Bool ),
     411                        ?*=?( volatile _Bool *, _Bool );
     412char                    ?*=?(          char *, char ),
     413                        ?*=?( volatile char *, char );
     414signed char             ?*=?(          signed char *, signed char ),
     415                        ?*=?( volatile signed char *, signed char );
     416unsigned char           ?*=?(          unsigned char *, unsigned char ),
     417                        ?*=?( volatile unsigned char *, unsigned char );
     418short                   ?*=?(          short *, short ),
     419                        ?*=?( volatile short *, short );
     420unsigned short          ?*=?(          unsigned short *, unsigned short ),
     421                        ?*=?( volatile unsigned short *, unsigned short );
     422int                     ?*=?(          int *, int ),
     423                        ?*=?( volatile int *, int );
     424unsigned                ?*=?(          unsigned *, unsigned ),
     425                        ?*=?( volatile unsigned *, unsigned );
     426long                    ?*=?(          long *, long ),
     427                        ?*=?( volatile long *, long );
     428unsigned long           ?*=?(          unsigned long *, unsigned long ),
     429                        ?*=?( volatile unsigned long *, unsigned long );
     430long long               ?*=?(          long long *, long long ),
     431                        ?*=?( volatile long long *, long long );
     432unsigned long long      ?*=?(          unsigned long long *, unsigned long long ),
     433                        ?*=?( volatile unsigned long long *, unsigned long long );
     434
     435_Bool                   ?/=?(          _Bool *, _Bool ),
     436                        ?/=?( volatile _Bool *, _Bool );
     437char                    ?/=?(          char *, char ),
     438                        ?/=?( volatile char *, char );
     439signed char             ?/=?(          signed char *, signed char ),
     440                        ?/=?( volatile signed char *, signed char );
     441unsigned char           ?/=?(          unsigned char *, unsigned char ),
     442                        ?/=?( volatile unsigned char *, unsigned char );
     443short                   ?/=?(          short *, short ),
     444                        ?/=?( volatile short *, short );
     445unsigned short          ?/=?(          unsigned short *, unsigned short ),
     446                        ?/=?( volatile unsigned short *, unsigned short );
     447int                     ?/=?(          int *, int ),
     448                        ?/=?( volatile int *, int );
     449unsigned                ?/=?(          unsigned *, unsigned ),
     450                        ?/=?( volatile unsigned *, unsigned );
     451long                    ?/=?(          long *, long ),
     452                        ?/=?( volatile long *, long );
     453unsigned long           ?/=?(          unsigned long *, unsigned long ),
     454                        ?/=?( volatile unsigned long *, unsigned long );
     455long long               ?/=?(          long long *, long long ),
     456                        ?/=?( volatile long long *, long long );
     457unsigned long long      ?/=?(          unsigned long long *, unsigned long long ),
     458                        ?/=?( volatile unsigned long long *, unsigned long long );
     459
     460_Bool                   ?%=?(          _Bool *, _Bool ),
     461                        ?%=?( volatile _Bool *, _Bool );
     462char                    ?%=?(          char *, char ),
     463                        ?%=?( volatile char *, char );
     464signed char             ?%=?(          signed char *, signed char ),
     465                        ?%=?( volatile signed char *, signed char );
     466unsigned char           ?%=?(          unsigned char *, unsigned char ),
     467                        ?%=?( volatile unsigned char *, unsigned char );
     468short                   ?%=?(          short *, short ),
     469                        ?%=?( volatile short *, short );
     470unsigned short          ?%=?(          unsigned short *, unsigned short ),
     471                        ?%=?( volatile unsigned short *, unsigned short );
     472int                     ?%=?(          int *, int ),
     473                        ?%=?( volatile int *, int );
     474unsigned                ?%=?(          unsigned *, unsigned ),
     475                        ?%=?( volatile unsigned *, unsigned );
     476long                    ?%=?(          long *, long ),
     477                        ?%=?( volatile long *, long );
     478unsigned long           ?%=?(          unsigned long *, unsigned long ),
     479                        ?%=?( volatile unsigned long *, unsigned long );
     480long long               ?%=?(          long long *, long long ),
     481                        ?%=?( volatile long long *, long long );
     482unsigned long long      ?%=?(          unsigned long long *, unsigned long long ),
     483                        ?%=?( volatile unsigned long long *, unsigned long long );
     484
     485_Bool                   ?+=?(          _Bool *, _Bool ),
     486                        ?+=?( volatile _Bool *, _Bool );
     487char                    ?+=?(          char *, char ),
     488                        ?+=?( volatile char *, char );
     489signed char             ?+=?(          signed char *, signed char ),
     490                        ?+=?( volatile signed char *, signed char );
     491unsigned char           ?+=?(          unsigned char *, unsigned char ),
     492                        ?+=?( volatile unsigned char *, unsigned char );
     493short                   ?+=?(          short *, short ),
     494                        ?+=?( volatile short *, short );
     495unsigned short          ?+=?(          unsigned short *, unsigned short ),
     496                        ?+=?( volatile unsigned short *, unsigned short );
     497int                     ?+=?(          int *, int ),
     498                        ?+=?( volatile int *, int );
     499unsigned                ?+=?(          unsigned *, unsigned ),
     500                        ?+=?( volatile unsigned *, unsigned );
     501long                    ?+=?(          long *, long ),
     502                        ?+=?( volatile long *, long );
     503unsigned long           ?+=?(          unsigned long *, unsigned long ),
     504                        ?+=?( volatile unsigned long *, unsigned long );
     505long long               ?+=?(          long long *, long long ),
     506                        ?+=?( volatile long long *, long long );
     507unsigned long long      ?+=?(          unsigned long long *, unsigned long long ),
     508                        ?+=?( volatile unsigned long long *, unsigned long long );
     509
     510_Bool                   ?-=?(          _Bool *, _Bool ),
     511                        ?-=?( volatile _Bool *, _Bool );
     512char                    ?-=?(          char *, char ),
     513                        ?-=?( volatile char *, char );
     514signed char             ?-=?(          signed char *, signed char ),
     515                        ?-=?( volatile signed char *, signed char );
     516unsigned char           ?-=?(          unsigned char *, unsigned char ),
     517                        ?-=?( volatile unsigned char *, unsigned char );
     518short                   ?-=?(          short *, short ),
     519                        ?-=?( volatile short *, short );
     520unsigned short          ?-=?(          unsigned short *, unsigned short ),
     521                        ?-=?( volatile unsigned short *, unsigned short );
     522int                     ?-=?(          int *, int ),
     523                        ?-=?( volatile int *, int );
     524unsigned                ?-=?(          unsigned *, unsigned ),
     525                        ?-=?( volatile unsigned *, unsigned );
     526long                    ?-=?(          long *, long ),
     527                        ?-=?( volatile long *, long );
     528unsigned long           ?-=?(          unsigned long *, unsigned long ),
     529                        ?-=?( volatile unsigned long *, unsigned long );
     530long long               ?-=?(          long long *, long long ),
     531                        ?-=?( volatile long long *, long long );
     532unsigned long long      ?-=?(          unsigned long long *, unsigned long long ),
     533                        ?-=?( volatile unsigned long long *, unsigned long long );
     534
     535_Bool                   ?<<=?(          _Bool *, _Bool ),
     536                        ?<<=?( volatile _Bool *, _Bool );
     537char                    ?<<=?(          char *, char ),
     538                        ?<<=?( volatile char *, char );
     539signed char             ?<<=?(          signed char *, signed char ),
     540                        ?<<=?( volatile signed char *, signed char );
     541unsigned char           ?<<=?(          unsigned char *, unsigned char ),
     542                        ?<<=?( volatile unsigned char *, unsigned char );
     543short                   ?<<=?(          short *, short ),
     544                        ?<<=?( volatile short *, short );
     545unsigned short          ?<<=?(          unsigned short *, unsigned short ),
     546                        ?<<=?( volatile unsigned short *, unsigned short );
     547int                     ?<<=?(          int *, int ),
     548                        ?<<=?( volatile int *, int );
     549unsigned                ?<<=?(          unsigned *, unsigned ),
     550                        ?<<=?( volatile unsigned *, unsigned );
     551long                    ?<<=?(          long *, long ),
     552                        ?<<=?( volatile long *, long );
     553unsigned long           ?<<=?(          unsigned long *, unsigned long ),
     554                        ?<<=?( volatile unsigned long *, unsigned long );
     555long long               ?<<=?(          long long *, long long ),
     556                        ?<<=?( volatile long long *, long long );
     557unsigned long long      ?<<=?(          unsigned long long *, unsigned long long ),
     558                        ?<<=?( volatile unsigned long long *, unsigned long long );
     559
     560_Bool                   ?>>=?(          _Bool *, _Bool ),
     561                        ?>>=?( volatile _Bool *, _Bool );
     562char                    ?>>=?(          char *, char ),
     563                        ?>>=?( volatile char *, char );
     564signed char             ?>>=?(          signed char *, signed char ),
     565                        ?>>=?( volatile signed char *, signed char );
     566unsigned char           ?>>=?(          unsigned char *, unsigned char ),
     567                        ?>>=?( volatile unsigned char *, unsigned char );
     568short                   ?>>=?(          short *, short ),
     569                        ?>>=?( volatile short *, short );
     570unsigned short          ?>>=?(          unsigned short *, unsigned short ),
     571                        ?>>=?( volatile unsigned short *, unsigned short );
     572int                     ?>>=?(          int *, int ),
     573                        ?>>=?( volatile int *, int );
     574unsigned                ?>>=?(          unsigned *, unsigned ),
     575                        ?>>=?( volatile unsigned *, unsigned );
     576long                    ?>>=?(          long *, long ),
     577                        ?>>=?( volatile long *, long );
     578unsigned long           ?>>=?(          unsigned long *, unsigned long ),
     579                        ?>>=?( volatile unsigned long *, unsigned long );
     580long long               ?>>=?(          long long *, long long ),
     581                        ?>>=?( volatile long long *, long long );
     582unsigned long long      ?>>=?(          unsigned long long *, unsigned long long ),
     583                        ?>>=?( volatile unsigned long long *, unsigned long long );
     584
     585_Bool                   ?&=?(          _Bool *, _Bool ),
     586                        ?&=?( volatile _Bool *, _Bool );
     587char                    ?&=?(          char *, char ),
     588                        ?&=?( volatile char *, char );
     589signed char             ?&=?(          signed char *, signed char ),
     590                        ?&=?( volatile signed char *, signed char );
     591unsigned char           ?&=?(          unsigned char *, unsigned char ),
     592                        ?&=?( volatile unsigned char *, unsigned char );
     593short                   ?&=?(          short *, short ),
     594                        ?&=?( volatile short *, short );
     595unsigned short          ?&=?(          unsigned short *, unsigned short ),
     596                        ?&=?( volatile unsigned short *, unsigned short );
     597int                     ?&=?(          int *, int ),
     598                        ?&=?( volatile int *, int );
     599unsigned                ?&=?(          unsigned *, unsigned ),
     600                        ?&=?( volatile unsigned *, unsigned );
     601long                    ?&=?(          long *, long ),
     602                        ?&=?( volatile long *, long );
     603unsigned long           ?&=?(          unsigned long *, unsigned long ),
     604                        ?&=?( volatile unsigned long *, unsigned long );
     605long long               ?&=?(          long long *, long long ),
     606                        ?&=?( volatile long long *, long long );
     607unsigned long long      ?&=?(          unsigned long long *, unsigned long long ),
     608                        ?&=?( volatile unsigned long long *, unsigned long long );
     609
     610_Bool                   ?|=?(          _Bool *, _Bool ),
     611                        ?|=?( volatile _Bool *, _Bool );
     612char                    ?|=?(          char *, char ),
     613                        ?|=?( volatile char *, char );
     614signed char             ?|=?(          signed char *, signed char ),
     615                        ?|=?( volatile signed char *, signed char );
     616unsigned char           ?|=?(          unsigned char *, unsigned char ),
     617                        ?|=?( volatile unsigned char *, unsigned char );
     618short                   ?|=?(          short *, short ),
     619                        ?|=?( volatile short *, short );
     620unsigned short          ?|=?(          unsigned short *, unsigned short ),
     621                        ?|=?( volatile unsigned short *, unsigned short );
     622int                     ?|=?(          int *, int ),
     623                        ?|=?( volatile int *, int );
     624unsigned                ?|=?(          unsigned *, unsigned ),
     625                        ?|=?( volatile unsigned *, unsigned );
     626long                    ?|=?(          long *, long ),
     627                        ?|=?( volatile long *, long );
     628unsigned long           ?|=?(          unsigned long *, unsigned long ),
     629                        ?|=?( volatile unsigned long *, unsigned long );
     630long long               ?|=?(          long long *, long long ),
     631                        ?|=?( volatile long long *, long long );
     632unsigned long long      ?|=?(          unsigned long long *, unsigned long long ),
     633                        ?|=?( volatile unsigned long long *, unsigned long long );
     634
     635_Bool                   ?^=?(          _Bool *, _Bool ),
     636                        ?^=?( volatile _Bool *, _Bool );
     637char                    ?^=?(          char *, char ),
     638                        ?^=?( volatile char *, char );
     639signed char             ?^=?(          signed char *, signed char ),
     640                        ?^=?( volatile signed char *, signed char );
     641unsigned char           ?^=?(          unsigned char *, unsigned char ),
     642                        ?^=?( volatile unsigned char *, unsigned char );
     643short                   ?^=?(          short *, short ),
     644                        ?^=?( volatile short *, short );
     645unsigned short          ?^=?(          unsigned short *, unsigned short ),
     646                        ?^=?( volatile unsigned short *, unsigned short );
     647int                     ?^=?(          int *, int ),
     648                        ?^=?( volatile int *, int );
     649unsigned                ?^=?(          unsigned *, unsigned ),
     650                        ?^=?( volatile unsigned *, unsigned );
     651long                    ?^=?(          long *, long ),
     652                        ?^=?( volatile long *, long );
     653unsigned long           ?^=?(          unsigned long *, unsigned long ),
     654                        ?^=?( volatile unsigned long *, unsigned long );
     655long long               ?^=?(          long long *, long long ),
     656                        ?^=?( volatile long long *, long long );
     657unsigned long long      ?^=?(          unsigned long long *, unsigned long long ),
     658                        ?^=?( volatile unsigned long long *, unsigned long long );
     659
     660
     661float                   ?=?(           float *, float ),
     662                        ?=?(  volatile float *, float ),
     663                        ?*=?(          float *, float ),
     664                        ?*=?( volatile float *, float ),
     665                        ?/=?(          float *, float ),
     666                        ?/=?( volatile float *, float ),
     667                        ?+=?(          float *, float ),
     668                        ?+=?( volatile float *, float ),
     669                        ?-=?(          float *, float ),
     670                        ?-=?( volatile float *, float );
     671
     672double                  ?=?(           double *, double ),
     673                        ?=?(  volatile double *, double ),
     674                        ?*=?(          double *, double ),
     675                        ?*=?( volatile double *, double ),
     676                        ?/=?(          double *, double ),
     677                        ?/=?( volatile double *, double ),
     678                        ?+=?(          double *, double ),
     679                        ?+=?( volatile double *, double ),
     680                        ?-=?(          double *, double ),
     681                        ?-=?( volatile double *, double );
     682
     683long double             ?=?(           long double *, long double ),
     684                        ?=?(  volatile long double *, long double ),
     685                        ?*=?(          long double *, long double ),
     686                        ?*=?( volatile long double *, long double ),
     687                        ?/=?(          long double *, long double ),
     688                        ?/=?( volatile long double *, long double ),
     689                        ?+=?(          long double *, long double ),
     690                        ?+=?( volatile long double *, long double ),
     691                        ?-=?(          long double *, long double ),
     692                        ?-=?( volatile long double *, long double );
Note: See TracChangeset for help on using the changeset viewer.