Back to Mame

0.9.8: _vectorize.hpp Source File

3rdparty/glm/doc/api/a00006_source.html

latest4.9 KB
Original Source

| | 0.9.8 |

_vectorize.hpp

Go to the documentation of this file.

1

4 #pragma once

5

6 #include "type_vec1.hpp"

7 #include "type_vec2.hpp"

8 #include "type_vec3.hpp"

9 #include "type_vec4.hpp"

10

11 namespace glm{

12 namespace detail

13 {

14template <typename R, typename T, precision P, template <typename, precision> class vecType>

15struct functor1{};

16

17template <typename R, typename T, precision P>

18struct functor1<R, T, P, tvec1>

19 {

20 GLM_FUNC_QUALIFIER static tvec1<R, P> call(R (*Func) (T x), tvec1<T, P> const & v)

21 {

22return tvec1<R, P>(Func(v.x));

23 }

24 };

25

26template <typename R, typename T, precision P>

27struct functor1<R, T, P, tvec2>

28 {

29 GLM_FUNC_QUALIFIER static tvec2<R, P> call(R (*Func) (T x), tvec2<T, P> const & v)

30 {

31return tvec2<R, P>(Func(v.x), Func(v.y));

32 }

33 };

34

35template <typename R, typename T, precision P>

36struct functor1<R, T, P, tvec3>

37 {

38 GLM_FUNC_QUALIFIER static tvec3<R, P> call(R (*Func) (T x), tvec3<T, P> const & v)

39 {

40return tvec3<R, P>(Func(v.x), Func(v.y), Func(v.z));

41 }

42 };

43

44template <typename R, typename T, precision P>

45struct functor1<R, T, P, tvec4>

46 {

47 GLM_FUNC_QUALIFIER static tvec4<R, P> call(R (*Func) (T x), tvec4<T, P> const & v)

48 {

49return tvec4<R, P>(Func(v.x), Func(v.y), Func(v.z), Func(v.w));

50 }

51 };

52

53template <typename T, precision P, template <typename, precision> class vecType>

54struct functor2{};

55

56template <typename T, precision P>

57struct functor2<T, P, tvec1>

58 {

59 GLM_FUNC_QUALIFIER static tvec1<T, P> call(T (*Func) (T x, T y), tvec1<T, P> const & a, tvec1<T, P> const & b)

60 {

61return tvec1<T, P>(Func(a.x, b.x));

62 }

63 };

64

65template <typename T, precision P>

66struct functor2<T, P, tvec2>

67 {

68 GLM_FUNC_QUALIFIER static tvec2<T, P> call(T (*Func) (T x, T y), tvec2<T, P> const & a, tvec2<T, P> const & b)

69 {

70return tvec2<T, P>(Func(a.x, b.x), Func(a.y, b.y));

71 }

72 };

73

74template <typename T, precision P>

75struct functor2<T, P, tvec3>

76 {

77 GLM_FUNC_QUALIFIER static tvec3<T, P> call(T (*Func) (T x, T y), tvec3<T, P> const & a, tvec3<T, P> const & b)

78 {

79return tvec3<T, P>(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z));

80 }

81 };

82

83template <typename T, precision P>

84struct functor2<T, P, tvec4>

85 {

86 GLM_FUNC_QUALIFIER static tvec4<T, P> call(T (*Func) (T x, T y), tvec4<T, P> const & a, tvec4<T, P> const & b)

87 {

88return tvec4<T, P>(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z), Func(a.w, b.w));

89 }

90 };

91

92template <typename T, precision P, template <typename, precision> class vecType>

93struct functor2_vec_sca{};

94

95template <typename T, precision P>

96struct functor2_vec_sca<T, P, tvec1>

97 {

98 GLM_FUNC_QUALIFIER static tvec1<T, P> call(T (*Func) (T x, T y), tvec1<T, P> const & a, T b)

99 {

100return tvec1<T, P>(Func(a.x, b));

101 }

102 };

103

104template <typename T, precision P>

105struct functor2_vec_sca<T, P, tvec2>

106 {

107 GLM_FUNC_QUALIFIER static tvec2<T, P> call(T (*Func) (T x, T y), tvec2<T, P> const & a, T b)

108 {

109return tvec2<T, P>(Func(a.x, b), Func(a.y, b));

110 }

111 };

112

113template <typename T, precision P>

114struct functor2_vec_sca<T, P, tvec3>

115 {

116 GLM_FUNC_QUALIFIER static tvec3<T, P> call(T (*Func) (T x, T y), tvec3<T, P> const & a, T b)

117 {

118return tvec3<T, P>(Func(a.x, b), Func(a.y, b), Func(a.z, b));

119 }

120 };

121

122template <typename T, precision P>

123struct functor2_vec_sca<T, P, tvec4>

124 {

125 GLM_FUNC_QUALIFIER static tvec4<T, P> call(T (*Func) (T x, T y), tvec4<T, P> const & a, T b)

126 {

127return tvec4<T, P>(Func(a.x, b), Func(a.y, b), Func(a.z, b), Func(a.w, b));

128 }

129 };

130 }//namespace detail

131 }//namespace glm

type_vec3.hpp

GLM Core

glm

Definition: _noise.hpp:11

type_vec2.hpp

GLM Core

type_vec4.hpp

GLM Core

type_vec1.hpp

GLM Core


Generated by 1.8.10