|  | 0.9.9 API documentation
    | 
 
 
  
  
 
    3 #define GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, CONST, A, B)   \ 
    4         vec<2, T, Q> A ## B() CONST                                                     \ 
    6                 return vec<2, T, Q>(this->A, this->B);                  \ 
    9 #define GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, CONST, A, B, C)                \ 
   10         vec<3, T, Q> A ## B ## C() CONST                                                        \ 
   12                 return vec<3, T, Q>(this->A, this->B, this->C);                 \ 
   15 #define GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, CONST, A, B, C, D)                                     \ 
   16         vec<4, T, Q> A ## B ## C ## D() CONST                                                                   \ 
   18                 return vec<4, T, Q>(this->A, this->B, this->C, this->D);                        \ 
   21 #define GLM_SWIZZLE_GEN_VEC2_ENTRY_DEF(T, P, L, CONST, A, B)    \ 
   22         template<typename T>                                                                            \ 
   23         vec<L, T, Q> vec<L, T, Q>::A ## B() CONST                                       \ 
   25                 return vec<2, T, Q>(this->A, this->B);                                  \ 
   28 #define GLM_SWIZZLE_GEN_VEC3_ENTRY_DEF(T, P, L, CONST, A, B, C)         \ 
   29         template<typename T>                                                                                    \ 
   30         vec<3, T, Q> vec<L, T, Q>::A ## B ## C() CONST                                  \ 
   32                 return vec<3, T, Q>(this->A, this->B, this->C);                         \ 
   35 #define GLM_SWIZZLE_GEN_VEC4_ENTRY_DEF(T, P, L, CONST, A, B, C, D)              \ 
   36         template<typename T>                                                                                            \ 
   37         vec<4, T, Q> vec<L, T, Q>::A ## B ## C ## D() CONST                                     \ 
   39                 return vec<4, T, Q>(this->A, this->B, this->C, this->D);                \ 
   44 #define GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(T, P, A, B) \ 
   45         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, 2, GLM_MUTABLE, A, B) \ 
   46         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, 2, GLM_MUTABLE, B, A) 
   48 #define GLM_SWIZZLE_GEN_REF_FROM_VEC2(T, P) \ 
   49         GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(T, P, x, y) \ 
   50         GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(T, P, r, g) \ 
   51         GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(T, P, s, t) 
   53 #define GLM_SWIZZLE_GEN_REF2_FROM_VEC3_SWIZZLE(T, P, A, B, C) \ 
   54         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, B) \ 
   55         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, C) \ 
   56         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, A) \ 
   57         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, C) \ 
   58         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, A) \ 
   59         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, B) 
   61 #define GLM_SWIZZLE_GEN_REF3_FROM_VEC3_SWIZZLE(T, P, A, B, C) \ 
   62         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, A, B, C) \ 
   63         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, A, C, B) \ 
   64         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, B, A, C) \ 
   65         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, B, C, A) \ 
   66         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, C, A, B) \ 
   67         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, C, B, A) 
   69 #define GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(T, P, A, B, C) \ 
   70         GLM_SWIZZLE_GEN_REF3_FROM_VEC3_SWIZZLE(T, P, A, B, C) \ 
   71         GLM_SWIZZLE_GEN_REF2_FROM_VEC3_SWIZZLE(T, P, A, B, C) 
   73 #define GLM_SWIZZLE_GEN_REF_FROM_VEC3(T, P) \ 
   74         GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(T, P, x, y, z) \ 
   75         GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(T, P, r, g, b) \ 
   76         GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(T, P, s, t, p) 
   78 #define GLM_SWIZZLE_GEN_REF2_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \ 
   79         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, B) \ 
   80         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, C) \ 
   81         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, D) \ 
   82         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, A) \ 
   83         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, C) \ 
   84         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, D) \ 
   85         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, A) \ 
   86         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, B) \ 
   87         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, D) \ 
   88         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, D, A) \ 
   89         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, D, B) \ 
   90         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, D, C) 
   92 #define GLM_SWIZZLE_GEN_REF3_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \ 
   93         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, B, C) \ 
   94         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, B, D) \ 
   95         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, C, B) \ 
   96         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, C, D) \ 
   97         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, D, B) \ 
   98         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, D, C) \ 
   99         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, A, C) \ 
  100         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, A, D) \ 
  101         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, C, A) \ 
  102         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, C, D) \ 
  103         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, D, A) \ 
  104         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, D, C) \ 
  105         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, A, B) \ 
  106         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, A, D) \ 
  107         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, B, A) \ 
  108         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, B, D) \ 
  109         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, D, A) \ 
  110         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, D, B) \ 
  111         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, A, B) \ 
  112         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, A, C) \ 
  113         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, B, A) \ 
  114         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, B, C) \ 
  115         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, C, A) \ 
  116         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, C, B) 
  118 #define GLM_SWIZZLE_GEN_REF4_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \ 
  119         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, C, B, D) \ 
  120         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, C, D, B) \ 
  121         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, D, B, C) \ 
  122         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, D, C, B) \ 
  123         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, B, D, C) \ 
  124         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, B, C, D) \ 
  125         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, C, A, D) \ 
  126         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, C, D, A) \ 
  127         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, D, A, C) \ 
  128         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, D, C, A) \ 
  129         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, A, D, C) \ 
  130         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, A, C, D) \ 
  131         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, B, A, D) \ 
  132         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, B, D, A) \ 
  133         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, D, A, B) \ 
  134         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, D, B, A) \ 
  135         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, A, D, B) \ 
  136         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, A, B, D) \ 
  137         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, C, B, A) \ 
  138         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, C, A, B) \ 
  139         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, A, B, C) \ 
  140         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, A, C, B) \ 
  141         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, B, A, C) \ 
  142         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, B, C, A) 
  144 #define GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(T, P, A, B, C, D) \ 
  145         GLM_SWIZZLE_GEN_REF2_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \ 
  146         GLM_SWIZZLE_GEN_REF3_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \ 
  147         GLM_SWIZZLE_GEN_REF4_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) 
  149 #define GLM_SWIZZLE_GEN_REF_FROM_VEC4(T, P) \ 
  150         GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(T, P, x, y, z, w) \ 
  151         GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(T, P, r, g, b, a) \ 
  152         GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(T, P, s, t, p, q) 
  154 #define GLM_SWIZZLE_GEN_VEC2_FROM_VEC2_SWIZZLE(T, P, A, B) \ 
  155         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, A) \ 
  156         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, B) \ 
  157         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, A) \ 
  158         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, B) 
  160 #define GLM_SWIZZLE_GEN_VEC3_FROM_VEC2_SWIZZLE(T, P, A, B) \ 
  161         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, A) \ 
  162         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, B) \ 
  163         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, A) \ 
  164         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, B) \ 
  165         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, A) \ 
  166         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, B) \ 
  167         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, A) \ 
  168         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, B) 
  170 #define GLM_SWIZZLE_GEN_VEC4_FROM_VEC2_SWIZZLE(T, P, A, B) \ 
  171         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, A) \ 
  172         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, B) \ 
  173         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, A) \ 
  174         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, B) \ 
  175         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, A) \ 
  176         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, B) \ 
  177         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, A) \ 
  178         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, B) \ 
  179         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, A) \ 
  180         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, B) \ 
  181         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, A) \ 
  182         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, B) \ 
  183         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, A) \ 
  184         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, B) \ 
  185         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, A) \ 
  186         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, B) 
  188 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(T, P, A, B) \ 
  189         GLM_SWIZZLE_GEN_VEC2_FROM_VEC2_SWIZZLE(T, P, A, B) \ 
  190         GLM_SWIZZLE_GEN_VEC3_FROM_VEC2_SWIZZLE(T, P, A, B) \ 
  191         GLM_SWIZZLE_GEN_VEC4_FROM_VEC2_SWIZZLE(T, P, A, B) 
  193 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC2(T, P)                     \ 
  194         GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(T, P, x, y)  \ 
  195         GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(T, P, r, g)  \ 
  196         GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(T, P, s, t) 
  198 #define GLM_SWIZZLE_GEN_VEC2_FROM_VEC3_SWIZZLE(T, P, A, B, C) \ 
  199         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, A) \ 
  200         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, B) \ 
  201         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, C) \ 
  202         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, A) \ 
  203         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, B) \ 
  204         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, C) \ 
  205         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, A) \ 
  206         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, B) \ 
  207         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, C) 
  209 #define GLM_SWIZZLE_GEN_VEC3_FROM_VEC3_SWIZZLE(T, P, A, B, C) \ 
  210         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, A) \ 
  211         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, B) \ 
  212         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, C) \ 
  213         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, A) \ 
  214         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, B) \ 
  215         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, C) \ 
  216         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, A) \ 
  217         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, B) \ 
  218         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, C) \ 
  219         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, A) \ 
  220         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, B) \ 
  221         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, C) \ 
  222         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, A) \ 
  223         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, B) \ 
  224         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, C) \ 
  225         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, A) \ 
  226         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, B) \ 
  227         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, C) \ 
  228         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, A) \ 
  229         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, B) \ 
  230         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, C) \ 
  231         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, A) \ 
  232         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, B) \ 
  233         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, C) \ 
  234         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, A) \ 
  235         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, B) \ 
  236         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, C) 
  238 #define GLM_SWIZZLE_GEN_VEC4_FROM_VEC3_SWIZZLE(T, P, A, B, C) \ 
  239         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, A) \ 
  240         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, B) \ 
  241         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, C) \ 
  242         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, A) \ 
  243         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, B) \ 
  244         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, C) \ 
  245         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, A) \ 
  246         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, B) \ 
  247         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, C) \ 
  248         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, A) \ 
  249         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, B) \ 
  250         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, C) \ 
  251         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, A) \ 
  252         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, B) \ 
  253         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, C) \ 
  254         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, A) \ 
  255         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, B) \ 
  256         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, C) \ 
  257         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, A) \ 
  258         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, B) \ 
  259         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, C) \ 
  260         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, A) \ 
  261         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, B) \ 
  262         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, C) \ 
  263         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, A) \ 
  264         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, B) \ 
  265         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, C) \ 
  266         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, A) \ 
  267         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, B) \ 
  268         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, C) \ 
  269         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, A) \ 
  270         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, B) \ 
  271         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, C) \ 
  272         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, A) \ 
  273         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, B) \ 
  274         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, C) \ 
  275         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, A) \ 
  276         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, B) \ 
  277         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, C) \ 
  278         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, A) \ 
  279         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, B) \ 
  280         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, C) \ 
  281         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, A) \ 
  282         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, B) \ 
  283         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, C) \ 
  284         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, A) \ 
  285         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, B) \ 
  286         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, C) \ 
  287         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, A) \ 
  288         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, B) \ 
  289         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, C) \ 
  290         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, A) \ 
  291         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, B) \ 
  292         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, C) \ 
  293         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, A) \ 
  294         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, B) \ 
  295         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, C) \ 
  296         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, A) \ 
  297         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, B) \ 
  298         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, C) \ 
  299         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, A) \ 
  300         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, B) \ 
  301         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, C) \ 
  302         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, A) \ 
  303         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, B) \ 
  304         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, C) \ 
  305         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, A) \ 
  306         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, B) \ 
  307         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, C) \ 
  308         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, A) \ 
  309         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, B) \ 
  310         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, C) \ 
  311         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, A) \ 
  312         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, B) \ 
  313         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, C) \ 
  314         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, A) \ 
  315         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, B) \ 
  316         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, C) \ 
  317         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, A) \ 
  318         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, B) \ 
  319         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, C) 
  321 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(T, P, A, B, C) \ 
  322         GLM_SWIZZLE_GEN_VEC2_FROM_VEC3_SWIZZLE(T, P, A, B, C) \ 
  323         GLM_SWIZZLE_GEN_VEC3_FROM_VEC3_SWIZZLE(T, P, A, B, C) \ 
  324         GLM_SWIZZLE_GEN_VEC4_FROM_VEC3_SWIZZLE(T, P, A, B, C) 
  326 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC3(T, P) \ 
  327         GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(T, P, x, y, z) \ 
  328         GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(T, P, r, g, b) \ 
  329         GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(T, P, s, t, p) 
  331 #define GLM_SWIZZLE_GEN_VEC2_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \ 
  332         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, A) \ 
  333         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, B) \ 
  334         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, C) \ 
  335         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, D) \ 
  336         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, A) \ 
  337         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, B) \ 
  338         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, C) \ 
  339         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, D) \ 
  340         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, A) \ 
  341         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, B) \ 
  342         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, C) \ 
  343         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, D) \ 
  344         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, D, A) \ 
  345         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, D, B) \ 
  346         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, D, C) \ 
  347         GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, D, D) 
  349 #define GLM_SWIZZLE_GEN_VEC3_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \ 
  350         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, A) \ 
  351         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, B) \ 
  352         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, C) \ 
  353         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, D) \ 
  354         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, A) \ 
  355         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, B) \ 
  356         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, C) \ 
  357         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, D) \ 
  358         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, A) \ 
  359         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, B) \ 
  360         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, C) \ 
  361         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, D) \ 
  362         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, D, A) \ 
  363         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, D, B) \ 
  364         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, D, C) \ 
  365         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, D, D) \ 
  366         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, A) \ 
  367         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, B) \ 
  368         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, C) \ 
  369         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, D) \ 
  370         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, A) \ 
  371         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, B) \ 
  372         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, C) \ 
  373         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, D) \ 
  374         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, A) \ 
  375         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, B) \ 
  376         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, C) \ 
  377         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, D) \ 
  378         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, D, A) \ 
  379         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, D, B) \ 
  380         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, D, C) \ 
  381         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, D, D) \ 
  382         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, A) \ 
  383         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, B) \ 
  384         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, C) \ 
  385         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, D) \ 
  386         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, A) \ 
  387         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, B) \ 
  388         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, C) \ 
  389         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, D) \ 
  390         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, A) \ 
  391         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, B) \ 
  392         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, C) \ 
  393         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, D) \ 
  394         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, D, A) \ 
  395         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, D, B) \ 
  396         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, D, C) \ 
  397         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, D, D) \ 
  398         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, A, A) \ 
  399         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, A, B) \ 
  400         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, A, C) \ 
  401         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, A, D) \ 
  402         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, B, A) \ 
  403         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, B, B) \ 
  404         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, B, C) \ 
  405         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, B, D) \ 
  406         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, C, A) \ 
  407         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, C, B) \ 
  408         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, C, C) \ 
  409         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, C, D) \ 
  410         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, D, A) \ 
  411         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, D, B) \ 
  412         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, D, C) \ 
  413         GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, D, D) 
  415 #define GLM_SWIZZLE_GEN_VEC4_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \ 
  416         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, A) \ 
  417         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, B) \ 
  418         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, C) \ 
  419         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, D) \ 
  420         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, A) \ 
  421         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, B) \ 
  422         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, C) \ 
  423         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, D) \ 
  424         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, A) \ 
  425         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, B) \ 
  426         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, C) \ 
  427         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, D) \ 
  428         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, D, A) \ 
  429         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, D, B) \ 
  430         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, D, C) \ 
  431         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, D, D) \ 
  432         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, A) \ 
  433         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, B) \ 
  434         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, C) \ 
  435         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, D) \ 
  436         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, A) \ 
  437         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, B) \ 
  438         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, C) \ 
  439         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, D) \ 
  440         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, A) \ 
  441         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, B) \ 
  442         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, C) \ 
  443         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, D) \ 
  444         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, D, A) \ 
  445         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, D, B) \ 
  446         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, D, C) \ 
  447         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, D, D) \ 
  448         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, A) \ 
  449         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, B) \ 
  450         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, C) \ 
  451         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, D) \ 
  452         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, A) \ 
  453         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, B) \ 
  454         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, C) \ 
  455         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, D) \ 
  456         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, A) \ 
  457         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, B) \ 
  458         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, C) \ 
  459         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, D) \ 
  460         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, D, A) \ 
  461         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, D, B) \ 
  462         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, D, C) \ 
  463         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, D, D) \ 
  464         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, A, A) \ 
  465         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, A, B) \ 
  466         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, A, C) \ 
  467         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, A, D) \ 
  468         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, B, A) \ 
  469         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, B, B) \ 
  470         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, B, C) \ 
  471         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, B, D) \ 
  472         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, C, A) \ 
  473         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, C, B) \ 
  474         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, C, C) \ 
  475         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, C, D) \ 
  476         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, D, A) \ 
  477         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, D, B) \ 
  478         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, D, C) \ 
  479         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, D, D) \ 
  480         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, A) \ 
  481         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, B) \ 
  482         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, C) \ 
  483         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, D) \ 
  484         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, A) \ 
  485         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, B) \ 
  486         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, C) \ 
  487         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, D) \ 
  488         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, A) \ 
  489         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, B) \ 
  490         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, C) \ 
  491         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, D) \ 
  492         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, D, A) \ 
  493         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, D, B) \ 
  494         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, D, C) \ 
  495         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, D, D) \ 
  496         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, A) \ 
  497         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, B) \ 
  498         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, C) \ 
  499         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, D) \ 
  500         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, A) \ 
  501         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, B) \ 
  502         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, C) \ 
  503         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, D) \ 
  504         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, A) \ 
  505         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, B) \ 
  506         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, C) \ 
  507         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, D) \ 
  508         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, D, A) \ 
  509         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, D, B) \ 
  510         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, D, C) \ 
  511         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, D, D) \ 
  512         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, A) \ 
  513         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, B) \ 
  514         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, C) \ 
  515         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, D) \ 
  516         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, A) \ 
  517         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, B) \ 
  518         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, C) \ 
  519         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, D) \ 
  520         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, A) \ 
  521         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, B) \ 
  522         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, C) \ 
  523         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, D) \ 
  524         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, D, A) \ 
  525         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, D, B) \ 
  526         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, D, C) \ 
  527         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, D, D) \ 
  528         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, A, A) \ 
  529         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, A, B) \ 
  530         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, A, C) \ 
  531         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, A, D) \ 
  532         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, B, A) \ 
  533         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, B, B) \ 
  534         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, B, C) \ 
  535         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, B, D) \ 
  536         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, C, A) \ 
  537         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, C, B) \ 
  538         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, C, C) \ 
  539         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, C, D) \ 
  540         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, D, A) \ 
  541         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, D, B) \ 
  542         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, D, C) \ 
  543         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, D, D) \ 
  544         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, A) \ 
  545         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, B) \ 
  546         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, C) \ 
  547         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, D) \ 
  548         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, A) \ 
  549         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, B) \ 
  550         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, C) \ 
  551         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, D) \ 
  552         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, A) \ 
  553         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, B) \ 
  554         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, C) \ 
  555         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, D) \ 
  556         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, D, A) \ 
  557         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, D, B) \ 
  558         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, D, C) \ 
  559         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, D, D) \ 
  560         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, A) \ 
  561         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, B) \ 
  562         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, C) \ 
  563         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, D) \ 
  564         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, A) \ 
  565         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, B) \ 
  566         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, C) \ 
  567         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, D) \ 
  568         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, A) \ 
  569         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, B) \ 
  570         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, C) \ 
  571         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, D) \ 
  572         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, D, A) \ 
  573         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, D, B) \ 
  574         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, D, C) \ 
  575         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, D, D) \ 
  576         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, A) \ 
  577         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, B) \ 
  578         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, C) \ 
  579         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, D) \ 
  580         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, A) \ 
  581         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, B) \ 
  582         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, C) \ 
  583         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, D) \ 
  584         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, A) \ 
  585         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, B) \ 
  586         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, C) \ 
  587         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, D) \ 
  588         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, D, A) \ 
  589         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, D, B) \ 
  590         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, D, C) \ 
  591         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, D, D) \ 
  592         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, A, A) \ 
  593         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, A, B) \ 
  594         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, A, C) \ 
  595         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, A, D) \ 
  596         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, B, A) \ 
  597         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, B, B) \ 
  598         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, B, C) \ 
  599         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, B, D) \ 
  600         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, C, A) \ 
  601         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, C, B) \ 
  602         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, C, C) \ 
  603         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, C, D) \ 
  604         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, D, A) \ 
  605         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, D, B) \ 
  606         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, D, C) \ 
  607         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, D, D) \ 
  608         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, A, A) \ 
  609         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, A, B) \ 
  610         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, A, C) \ 
  611         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, A, D) \ 
  612         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, B, A) \ 
  613         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, B, B) \ 
  614         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, B, C) \ 
  615         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, B, D) \ 
  616         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, C, A) \ 
  617         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, C, B) \ 
  618         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, C, C) \ 
  619         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, C, D) \ 
  620         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, D, A) \ 
  621         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, D, B) \ 
  622         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, D, C) \ 
  623         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, D, D) \ 
  624         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, A, A) \ 
  625         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, A, B) \ 
  626         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, A, C) \ 
  627         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, A, D) \ 
  628         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, B, A) \ 
  629         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, B, B) \ 
  630         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, B, C) \ 
  631         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, B, D) \ 
  632         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, C, A) \ 
  633         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, C, B) \ 
  634         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, C, C) \ 
  635         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, C, D) \ 
  636         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, D, A) \ 
  637         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, D, B) \ 
  638         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, D, C) \ 
  639         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, D, D) \ 
  640         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, A, A) \ 
  641         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, A, B) \ 
  642         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, A, C) \ 
  643         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, A, D) \ 
  644         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, B, A) \ 
  645         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, B, B) \ 
  646         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, B, C) \ 
  647         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, B, D) \ 
  648         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, C, A) \ 
  649         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, C, B) \ 
  650         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, C, C) \ 
  651         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, C, D) \ 
  652         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, D, A) \ 
  653         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, D, B) \ 
  654         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, D, C) \ 
  655         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, D, D) \ 
  656         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, A, A) \ 
  657         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, A, B) \ 
  658         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, A, C) \ 
  659         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, A, D) \ 
  660         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, B, A) \ 
  661         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, B, B) \ 
  662         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, B, C) \ 
  663         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, B, D) \ 
  664         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, C, A) \ 
  665         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, C, B) \ 
  666         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, C, C) \ 
  667         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, C, D) \ 
  668         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, D, A) \ 
  669         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, D, B) \ 
  670         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, D, C) \ 
  671         GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, D, D) 
  673 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(T, P, A, B, C, D) \ 
  674         GLM_SWIZZLE_GEN_VEC2_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \ 
  675         GLM_SWIZZLE_GEN_VEC3_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \ 
  676         GLM_SWIZZLE_GEN_VEC4_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) 
  678 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC4(T, P) \ 
  679         GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(T, P, x, y, z, w) \ 
  680         GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(T, P, r, g, b, a) \ 
  681         GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(T, P, s, t, p, q)