@@ -337,9 +337,9 @@ bool CTOOLS_API isbitset(int32_t vContainer, int32_t vBit);
337
337
// is this bit/bit_group is set and only this one
338
338
bool CTOOLS_API isbitset_exclusive (int32_t vContainer, int32_t vBit);
339
339
// set this bit/bit_group to 1
340
- void CTOOLS_API setbit (int32_t vContainer, int32_t vBit);
340
+ void CTOOLS_API setbit (int32_t & vContainer, int32_t vBit);
341
341
// set this bit/bit_group to 0
342
- void CTOOLS_API unsetbit (int32_t vContainer, int32_t vBit);
342
+ void CTOOLS_API unsetbit (int32_t & vContainer, int32_t vBit);
343
343
344
344
// ///////////////////////////////////////////////////////////
345
345
// /////// splitStringToVector ///////////////////////////////
@@ -2102,16 +2102,6 @@ inline bool valid(const fvec4& a) {
2102
2102
return floatIsValid (a.x ) && floatIsValid (a.y ) && floatIsValid (a.z ) && floatIsValid (a.w );
2103
2103
}
2104
2104
2105
- // specialization for fvec4
2106
- /* template <>
2107
- inline bool operator==(fvec4 v, fvec4 f) {
2108
- return IS_FLOAT_EQUAL(f.x, v.x) && IS_FLOAT_EQUAL(f.y, v.y) && IS_FLOAT_EQUAL(f.z, v.z) && IS_FLOAT_EQUAL(f.w, v.w);
2109
- }
2110
- template <>
2111
- inline bool operator!=(fvec4 v, fvec4 f) {
2112
- return IS_FLOAT_DIFFERENT(f.x, v.x) || IS_FLOAT_DIFFERENT(f.y, v.y) || IS_FLOAT_DIFFERENT(f.z, v.z) || IS_FLOAT_DIFFERENT(f.w, v.w);
2113
- }*/
2114
-
2115
2105
// ///////////////////////////////////////////////////////////////////////
2116
2106
template <typename T>
2117
2107
struct rect // bottom left to top right
@@ -3167,6 +3157,136 @@ typedef variant<double> dvariant; // utile pour le type de renvoi des vec2,3,4
3167
3157
typedef variant<size_t > uvariant;
3168
3158
typedef variant<int > ivariant;
3169
3159
3160
+ // ///////////////////////////////////////////////////////////
3161
+ // /////// SPECIALIZATION // VEC2 / VEC3 / VEC4 / QUAT ///////
3162
+ // ///////////////////////////////////////////////////////////
3163
+
3164
+ template <>
3165
+ inline bool ct::vec2<float >::operator ==(const float & a) {
3166
+ return (IS_FLOAT_EQUAL (x, a) && IS_FLOAT_EQUAL (y, a));
3167
+ }
3168
+ template <>
3169
+ inline bool ct::vec2<float >::operator ==(const ct::vec2<float >& v) {
3170
+ return (IS_FLOAT_EQUAL (x, v.x ) && IS_FLOAT_EQUAL (y, v.y ));
3171
+ }
3172
+ template <>
3173
+ inline bool ct::vec2<float >::operator !=(const float & a) {
3174
+ return (IS_FLOAT_DIFFERENT (x, a) || IS_FLOAT_DIFFERENT (y, a));
3175
+ }
3176
+ template <>
3177
+ inline bool ct::vec2<float >::operator !=(const ct::vec2<float >& v) {
3178
+ return (IS_FLOAT_DIFFERENT (x, v.x ) || IS_FLOAT_DIFFERENT (y, v.y ));
3179
+ }
3180
+
3181
+ template <>
3182
+ inline bool ct::vec2<double >::operator ==(const double & a) {
3183
+ return (IS_DOUBLE_EQUAL (x, a) && IS_DOUBLE_EQUAL (y, a));
3184
+ }
3185
+ template <>
3186
+ inline bool ct::vec2<double >::operator ==(const ct::vec2<double >& v) {
3187
+ return (IS_DOUBLE_EQUAL (x, v.x ) && IS_DOUBLE_EQUAL (y, v.y ));
3188
+ }
3189
+ template <>
3190
+ inline bool ct::vec2<double >::operator !=(const double & a) {
3191
+ return (IS_DOUBLE_DIFFERENT (x, a) || IS_DOUBLE_DIFFERENT (y, a));
3192
+ }
3193
+ template <>
3194
+ inline bool ct::vec2<double >::operator !=(const ct::vec2<double >& v) {
3195
+ return (IS_DOUBLE_DIFFERENT (x, v.x ) || IS_DOUBLE_DIFFERENT (y, v.y ));
3196
+ }
3197
+
3198
+ template <>
3199
+ inline bool ct::vec3<float >::operator ==(const float & a) {
3200
+ return (IS_FLOAT_EQUAL (x, a) && IS_FLOAT_EQUAL (y, a) && IS_FLOAT_EQUAL (z, a));
3201
+ }
3202
+ template <>
3203
+ inline bool ct::vec3<float >::operator ==(const ct::vec3<float >& v) {
3204
+ return (IS_FLOAT_EQUAL (x, v.x ) && IS_FLOAT_EQUAL (y, v.y ) && IS_FLOAT_EQUAL (z, v.z ));
3205
+ }
3206
+ template <>
3207
+ inline bool ct::vec3<float >::operator !=(const float & a) {
3208
+ return (IS_FLOAT_DIFFERENT (x, a) || IS_FLOAT_DIFFERENT (y, a) || IS_FLOAT_DIFFERENT (z, a));
3209
+ }
3210
+ template <>
3211
+ inline bool ct::vec3<float >::operator !=(const ct::vec3<float >& v) {
3212
+ return (IS_FLOAT_DIFFERENT (x, v.x ) || IS_FLOAT_DIFFERENT (y, v.y ) || IS_FLOAT_DIFFERENT (z, v.z ));
3213
+ }
3214
+
3215
+ template <>
3216
+ inline bool ct::vec3<double >::operator ==(const double & a) {
3217
+ return (IS_DOUBLE_EQUAL (x, a) && IS_DOUBLE_EQUAL (y, a) && IS_DOUBLE_EQUAL (z, a));
3218
+ }
3219
+ template <>
3220
+ inline bool ct::vec3<double >::operator ==(const ct::vec3<double >& v) {
3221
+ return (IS_DOUBLE_EQUAL (x, v.x ) && IS_DOUBLE_EQUAL (y, v.y ) && IS_DOUBLE_EQUAL (z, v.z ));
3222
+ }
3223
+ template <>
3224
+ inline bool ct::vec3<double >::operator !=(const double & a) {
3225
+ return (IS_DOUBLE_DIFFERENT (x, a) || IS_DOUBLE_DIFFERENT (y, a) || IS_DOUBLE_DIFFERENT (z, a));
3226
+ }
3227
+ template <>
3228
+ inline bool ct::vec3<double >::operator !=(const ct::vec3<double >& v) {
3229
+ return (IS_DOUBLE_DIFFERENT (x, v.x ) || IS_DOUBLE_DIFFERENT (y, v.y ) || IS_DOUBLE_DIFFERENT (z, v.z ));
3230
+ }
3231
+
3232
+ template <>
3233
+ inline bool ct::vec4<float >::operator ==(const float & a) {
3234
+ return (IS_FLOAT_EQUAL (x, a) && IS_FLOAT_EQUAL (y, a) && IS_FLOAT_EQUAL (z, a) && IS_FLOAT_EQUAL (w, a));
3235
+ }
3236
+ template <>
3237
+ inline bool ct::vec4<float >::operator ==(const ct::vec4<float >& v) {
3238
+ return (IS_FLOAT_EQUAL (x, v.x ) && IS_FLOAT_EQUAL (y, v.y ) && IS_FLOAT_EQUAL (z, v.z ) && IS_FLOAT_EQUAL (w, v.w ));
3239
+ }
3240
+ template <>
3241
+ inline bool ct::vec4<float >::operator !=(const float & a) {
3242
+ return (IS_FLOAT_DIFFERENT (x, a) || IS_FLOAT_DIFFERENT (y, a) || IS_FLOAT_DIFFERENT (z, a) || IS_FLOAT_DIFFERENT (w, a));
3243
+ }
3244
+ template <>
3245
+ inline bool ct::vec4<float >::operator !=(const ct::vec4<float >& v) {
3246
+ return (IS_FLOAT_DIFFERENT (x, v.x ) || IS_FLOAT_DIFFERENT (y, v.y ) || IS_FLOAT_DIFFERENT (z, v.z ) || IS_FLOAT_DIFFERENT (w, v.w ));
3247
+ }
3248
+
3249
+ template <>
3250
+ inline bool ct::vec4<double >::operator ==(const double & a) {
3251
+ return (IS_DOUBLE_EQUAL (x, a) && IS_DOUBLE_EQUAL (y, a) && IS_DOUBLE_EQUAL (z, a) && IS_DOUBLE_EQUAL (w, a));
3252
+ }
3253
+ template <>
3254
+ inline bool ct::vec4<double >::operator ==(const ct::vec4<double >& v) {
3255
+ return (IS_DOUBLE_EQUAL (x, v.x ) && IS_DOUBLE_EQUAL (y, v.y ) && IS_DOUBLE_EQUAL (z, v.z ) && IS_DOUBLE_EQUAL (w, v.w ));
3256
+ }
3257
+ template <>
3258
+ inline bool ct::vec4<double >::operator !=(const double & a) {
3259
+ return (IS_DOUBLE_DIFFERENT (x, a) || IS_DOUBLE_DIFFERENT (y, a) || IS_DOUBLE_DIFFERENT (z, a) || IS_DOUBLE_DIFFERENT (w, a));
3260
+ }
3261
+ template <>
3262
+ inline bool ct::vec4<double >::operator !=(const ct::vec4<double >& v) {
3263
+ return (IS_DOUBLE_DIFFERENT (x, v.x ) || IS_DOUBLE_DIFFERENT (y, v.y ) || IS_DOUBLE_DIFFERENT (z, v.z ) || IS_DOUBLE_DIFFERENT (w, v.w ));
3264
+ }
3265
+
3266
+ template <>
3267
+ inline void ct::quat<float >::normalize() {
3268
+ float n = sqrt (x * x + y * y + z * z + w * w);
3269
+ if (IS_FLOAT_EQUAL (n, 0 .0f )) {
3270
+ return ;
3271
+ }
3272
+ x /= n;
3273
+ y /= n;
3274
+ z /= n;
3275
+ w /= n;
3276
+ }
3277
+
3278
+ template <>
3279
+ inline void ct::quat<double >::normalize() {
3280
+ double n = sqrt (x * x + y * y + z * z + w * w);
3281
+ if (IS_DOUBLE_EQUAL (n, 0.0 )) {
3282
+ return ;
3283
+ }
3284
+ x /= n;
3285
+ y /= n;
3286
+ z /= n;
3287
+ w /= n;
3288
+ }
3289
+
3170
3290
// ///////////////////////////////////////////////////////////
3171
3291
// /////// GetNewBufferFromList //////////////////////////////
3172
3292
// ///////////////////////////////////////////////////////////
0 commit comments