- Main Page
- Related Pages
- Modules
- Classes
- Files

- File List

# type_ptr.hpp

Go to the documentation of this file.

    00001
    00002
    00003
    00004
    00005
    00006
    00007
    00008
    00009
    00010
    00011
    00012
    00013
    00014
    00015
    00016
    00017
    00018
    00019
    00020
    00021
    00022
    00023
    00024
    00025
    00026
    00027
    00028
    00029
    00030
    00031
    00032
    00033
    00034
    00035
    00036
    00037
    00038
    00039
    00040
    00041
    00042
    00043
    00044
    00045
    00046
    00047
    00048
    00049
    00050
    00051
    00052
    00053
    00054
    00055
    00056
    00057
    00058
    00059 #ifndef GLM_GTC_type_ptr
    00060 #define GLM_GTC_type_ptr GLM_VERSION
    00061
    00062 // Dependency:
    00063 #include "../glm.hpp"
    00064 #include "../gtc/half_float.hpp"
    00065 #include "../gtc/quaternion.hpp"
    00066 #include <cstring>
    00067
    00068 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
    00069 #       pragma message("GLM: GLM_GTC_type_ptr extension included")
    00070 #endif
    00071
    00072 namespace glm
    00073 {
    00076
    00079         template<typename T>
    00080         GLM_FUNC_QUALIFIER T const * value_ptr
    00081         (
    00082                 detail::tvec2<T> const & vec
    00083         )
    00084         {
    00085                 return &(vec.x);
    00086         }
    00087
    00090         template<typename T>
    00091         GLM_FUNC_QUALIFIER T * value_ptr
    00092         (
    00093                 detail::tvec2<T> & vec
    00094         )
    00095         {
    00096                 return &(vec.x);
    00097         }
    00098
    00101         template<typename T>
    00102         GLM_FUNC_QUALIFIER T const * value_ptr
    00103         (
    00104                 detail::tvec3<T> const & vec
    00105         )
    00106         {
    00107                 return &(vec.x);
    00108         }
    00109
    00112         template<typename T>
    00113         GLM_FUNC_QUALIFIER T * value_ptr
    00114         (
    00115                 detail::tvec3<T> & vec
    00116         )
    00117         {
    00118                 return &(vec.x);
    00119         }
    00120
    00123         template<typename T>
    00124         GLM_FUNC_QUALIFIER T const * value_ptr
    00125         (
    00126                 detail::tvec4<T> const & vec
    00127         )
    00128         {
    00129                 return &(vec.x);
    00130         }
    00131
    00134         template<typename T>
    00135         GLM_FUNC_QUALIFIER T * value_ptr
    00136         (
    00137                 detail::tvec4<T> & vec
    00138         )
    00139         {
    00140                 return &(vec.x);
    00141         }
    00142
    00145         template<typename T>
    00146         GLM_FUNC_QUALIFIER T const * value_ptr
    00147         (
    00148                 detail::tmat2x2<T> const & mat
    00149         )
    00150         {
    00151                 return &(mat[0].x);
    00152         }
    00153
    00156         template<typename T>
    00157         GLM_FUNC_QUALIFIER T * value_ptr
    00158         (
    00159                 detail::tmat2x2<T> & mat
    00160         )
    00161         {
    00162                 return &(mat[0].x);
    00163         }
    00164
    00167         template<typename T>
    00168         GLM_FUNC_QUALIFIER T const * value_ptr
    00169         (
    00170                 detail::tmat3x3<T> const & mat
    00171         )
    00172         {
    00173                 return &(mat[0].x);
    00174         }
    00175
    00178         template<typename T>
    00179         GLM_FUNC_QUALIFIER T * value_ptr
    00180         (
    00181                 detail::tmat3x3<T> & mat
    00182         )
    00183         {
    00184                 return &(mat[0].x);
    00185         }
    00186
    00189         template<typename T>
    00190         GLM_FUNC_QUALIFIER T const * value_ptr
    00191         (
    00192                 detail::tmat4x4<T> const & mat
    00193         )
    00194         {
    00195                 return &(mat[0].x);
    00196         }
    00197
    00200         template<typename T>
    00201         GLM_FUNC_QUALIFIER T * value_ptr
    00202         (
    00203                 detail::tmat4x4<T> & mat
    00204         )
    00205         {
    00206                 return &(mat[0].x);
    00207         }
    00208
    00211         template<typename T>
    00212         GLM_FUNC_QUALIFIER T const * value_ptr
    00213         (
    00214                 detail::tmat2x3<T> const & mat
    00215         )
    00216         {
    00217                 return &(mat[0].x);
    00218         }
    00219
    00222         template<typename T>
    00223         GLM_FUNC_QUALIFIER T * value_ptr
    00224         (
    00225                 detail::tmat2x3<T> & mat
    00226         )
    00227         {
    00228                 return &(mat[0].x);
    00229         }
    00230
    00233         template<typename T>
    00234         GLM_FUNC_QUALIFIER T const * value_ptr
    00235         (
    00236                 detail::tmat3x2<T> const & mat
    00237         )
    00238         {
    00239                 return &(mat[0].x);
    00240         }
    00241
    00244         template<typename T>
    00245         GLM_FUNC_QUALIFIER T * value_ptr
    00246         (
    00247                 detail::tmat3x2<T> & mat
    00248         )
    00249         {
    00250                 return &(mat[0].x);
    00251         }
    00252
    00255         template<typename T>
    00256         GLM_FUNC_QUALIFIER T const * value_ptr
    00257         (
    00258                 detail::tmat2x4<T> const & mat
    00259         )
    00260         {
    00261                 return &(mat[0].x);
    00262         }
    00263
    00266         template<typename T>
    00267         GLM_FUNC_QUALIFIER T * value_ptr
    00268         (
    00269                 detail::tmat2x4<T> & mat
    00270         )
    00271         {
    00272                 return &(mat[0].x);
    00273         }
    00274
    00277         template<typename T>
    00278         GLM_FUNC_QUALIFIER T const * value_ptr
    00279         (
    00280                 detail::tmat4x2<T> const & mat
    00281         )
    00282         {
    00283                 return &(mat[0].x);
    00284         }
    00285
    00288         template<typename T>
    00289         GLM_FUNC_QUALIFIER T * value_ptr
    00290         (
    00291                 detail::tmat4x2<T> & mat
    00292         )
    00293         {
    00294                 return &(mat[0].x);
    00295         }
    00296
    00299         template<typename T>
    00300         GLM_FUNC_QUALIFIER T const * value_ptr
    00301         (
    00302                 detail::tmat3x4<T> const & mat
    00303         )
    00304         {
    00305                 return &(mat[0].x);
    00306         }
    00307
    00310         template<typename T>
    00311         GLM_FUNC_QUALIFIER T * value_ptr
    00312         (
    00313                 detail::tmat3x4<T> & mat
    00314         )
    00315         {
    00316                 return &(mat[0].x);
    00317         }
    00318
    00321         template<typename T>
    00322         GLM_FUNC_QUALIFIER T const * value_ptr
    00323         (
    00324                 detail::tmat4x3<T> const & mat
    00325         )
    00326         {
    00327                 return &(mat[0].x);
    00328         }
    00329
    00332         template<typename T>
    00333         GLM_FUNC_QUALIFIER T const * value_ptr
    00334         (
    00335         detail::tquat<T> const & q
    00336     )
    00337         {
    00338                 return &(q[0]);
    00339         }
    00340
    00343         template<typename T>
    00344         GLM_FUNC_QUALIFIER T * value_ptr(detail::tmat4x3<T> & mat)
    00345         {
    00346                 return &(mat[0].x);
    00347         }
    00348
    00351         template<typename T>
    00352         GLM_FUNC_QUALIFIER detail::tvec2<T> make_vec2(T const * const ptr)
    00353         {
    00354                 detail::tvec2<T> Result;
    00355                 memcpy(value_ptr(Result), ptr, sizeof(detail::tvec2<T>));
    00356                 return Result;
    00357         }
    00358
    00361         template<typename T>
    00362         GLM_FUNC_QUALIFIER detail::tvec3<T> make_vec3(T const * const ptr)
    00363         {
    00364                 detail::tvec3<T> Result;
    00365                 memcpy(value_ptr(Result), ptr, sizeof(detail::tvec3<T>));
    00366                 return Result;
    00367         }
    00368
    00371         template<typename T>
    00372         GLM_FUNC_QUALIFIER detail::tvec4<T> make_vec4(T const * const ptr)
    00373         {
    00374                 detail::tvec4<T> Result;
    00375                 memcpy(value_ptr(Result), ptr, sizeof(detail::tvec4<T>));
    00376                 return Result;
    00377         }
    00378
    00381         template<typename T>
    00382         GLM_FUNC_QUALIFIER detail::tmat2x2<T> make_mat2x2(T const * const ptr)
    00383         {
    00384                 detail::tmat2x2<T> Result;
    00385                 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x2<T>));
    00386                 return Result;
    00387         }
    00388
    00391         template<typename T>
    00392         GLM_FUNC_QUALIFIER detail::tmat2x3<T> make_mat2x3(T const * const ptr)
    00393         {
    00394                 detail::tmat2x3<T> Result;
    00395                 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x3<T>));
    00396                 return Result;
    00397         }
    00398
    00401         template<typename T>
    00402         GLM_FUNC_QUALIFIER detail::tmat2x4<T> make_mat2x4(T const * const ptr)
    00403         {
    00404                 detail::tmat2x4<T> Result;
    00405                 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x4<T>));
    00406                 return Result;
    00407         }
    00408
    00411         template<typename T>
    00412         GLM_FUNC_QUALIFIER detail::tmat3x2<T> make_mat3x2(T const * const ptr)
    00413         {
    00414                 detail::tmat3x2<T> Result;
    00415                 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x2<T>));
    00416                 return Result;
    00417         }
    00418
    00421         template<typename T>
    00422         GLM_FUNC_QUALIFIER detail::tmat3x3<T> make_mat3x3(T const * const ptr)
    00423         {
    00424                 detail::tmat3x3<T> Result;
    00425                 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x3<T>));
    00426                 return Result;
    00427         }
    00428
    00431         template<typename T>
    00432         GLM_FUNC_QUALIFIER detail::tmat3x4<T> make_mat3x4(T const * const ptr)
    00433         {
    00434                 detail::tmat3x4<T> Result;
    00435                 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x4<T>));
    00436                 return Result;
    00437         }
    00438
    00441         template<typename T>
    00442         GLM_FUNC_QUALIFIER detail::tmat4x2<T> make_mat4x2(T const * const ptr)
    00443         {
    00444                 detail::tmat4x2<T> Result;
    00445                 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x2<T>));
    00446                 return Result;
    00447         }
    00448
    00451         template<typename T>
    00452         GLM_FUNC_QUALIFIER detail::tmat4x3<T> make_mat4x3(T const * const ptr)
    00453         {
    00454                 detail::tmat4x3<T> Result;
    00455                 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x3<T>));
    00456                 return Result;
    00457         }
    00458
    00461         template<typename T>
    00462         GLM_FUNC_QUALIFIER detail::tmat4x4<T> make_mat4x4(T const * const ptr)
    00463         {
    00464                 detail::tmat4x4<T> Result;
    00465                 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x4<T>));
    00466                 return Result;
    00467         }
    00468
    00471         template<typename T>
    00472         GLM_FUNC_QUALIFIER detail::tmat2x2<T> make_mat2(T const * const ptr)
    00473         {
    00474                 return make_mat2x2(ptr);
    00475         }
    00476
    00479         template<typename T>
    00480         GLM_FUNC_QUALIFIER detail::tmat3x3<T> make_mat3(T const * const ptr)
    00481         {
    00482                 return make_mat3x3(ptr);
    00483         }
    00484
    00487         template<typename T>
    00488         GLM_FUNC_QUALIFIER detail::tmat4x4<T> make_mat4(T const * const ptr)
    00489         {
    00490                 return make_mat4x4(ptr);
    00491         }
    00492
    00495         template<typename T>
    00496         GLM_FUNC_QUALIFIER detail::tquat<T> make_quat(T const * const ptr)
    00497         {
    00498                 detail::tquat<T> Result;
    00499                 memcpy(value_ptr(Result), ptr, sizeof(detail::tquat<T>));
    00500                 return Result;
    00501         }
    00502
    00504 }//namespace glm
    00505
    00506 #include "type_ptr.inl"
    00507
    00508 #endif//GLM_GTC_type_ptr
    00509