7b3df1b14a
The usual commit from 1 year later with changes that I don't recognise
2020-04-07 22:40:14 +02:00
ebfcc6f6ac
WiP allow users to give a separate storage that is not the vector_type.
...
It works but it's probably not respecting the strict aliasing rule.
2018-11-02 20:05:14 +00:00
a4184811b1
Add test for a custom type.
...
Custom type is implicitly constructible, implicitly castable
to float and can be compared to int.
2018-10-30 20:31:49 +00:00
1e713696d7
Add unit test for offset-based getters.
2018-07-28 00:04:24 +01:00
d9dacb739a
Properly stop looping when vec values go past the end.
2017-08-02 23:37:25 +01:00
e242f0b154
Allow an iteration step.
2017-07-27 20:48:52 +01:00
c1b6bd0500
Add unit test for backwards iteration.
2017-07-26 22:48:39 +01:00
221f236f40
Finish implementing the sequence_range feature.
2017-07-26 21:16:19 +01:00
0e739c9582
Broken implementation of vector_iterator. WiP
2017-07-26 13:52:30 +01:00
6ce534fc8a
Update license header
2017-03-15 22:13:13 +00:00
83418105e3
static_cast assignments by default.
...
This can be disabled by defining VWR_WITH_UNCASTED_ASSIGNMENT.
2017-03-11 08:45:11 +00:00
db7b9becd5
Let users specify a wrapping namespace.
...
This is useful when vwr is used and publicly exposed in a
library. If both the library and the standalone project depend
on vwr, this change gives the user the opportunity to keep the
two usages separate. This is especially important if both the
library and the standalone program happen to specialize the
Info template for the same type.
2017-03-04 00:04:40 +00:00
aaa8e75dc1
Implement 2D and 3D cross product.
...
2D cross product is defined as equivalent to:
res = cross(a.xy0(), b.xy0()).z()
2017-02-01 01:51:52 +00:00
fc7b666429
Add optional methods like yx(), x1(), x0() etc...
...
You need to define VWR_EXTRA_ACCESSORS if you want those
to be available in your build.
2017-01-27 19:24:27 +00:00
69e342460c
Implement binary assignment operators for scalar types.
2017-01-27 19:07:15 +00:00
48d7b5ddec
Replace implementation of binary op assignments.
...
Use variadic templates instead of for loops. Add unit test.
2017-01-27 19:02:52 +00:00
bbaabb695d
Implement operators with scalar types.
2017-01-27 18:43:21 +00:00
2f4d319675
Implement binary operators.
...
This also has the benefical side effect of ridding me of that
stupid VWR_STATIC_CAST_RESULTS macro.
2016-11-08 02:24:21 +01:00
6bf3278631
Implement comparison operators correctly.
...
With tests.
2016-11-08 01:51:17 +01:00
00470290fe
Change hardcoded std::size_t into size_type so it can be customised.
...
Define VWR_SIZE_TYPE to the type you want to use as the template
index type. It defaults to std::size_t so if you don't do anything
you still get the old behaviour.
Also drop the std::index_range in vector_cast in favour of the custom
bt::number_range, which is already used elsewhere in the code.
2016-11-02 03:53:22 +01:00
891fa25675
Add vector_cast implementation and the unit test for it.
2016-11-02 01:19:48 +01:00
dc1b3e7b76
Use ctest in cmake.
2016-11-02 01:19:48 +01:00
6ab4d586eb
Disable implicit conversions by default and update readme.
...
Implicit conversions are still needed for the old unit test to build.
2016-11-02 01:12:00 +01:00
736e83893a
Add test for wrapped vector using get_at() which was not working previously.
2016-10-25 01:18:44 +02:00
7affd7960f
Allow casting to vectors of lower dimensions.
2015-07-25 21:18:45 +02:00
fe03f45f76
Add an example.cpp unit test to demonstrate usage.
...
Shows what it looks like when you mix vectors of different
type vs using vectorwrapper.
2015-07-25 20:55:52 +02:00
958de67849
Make scalar_type and vector_type public in Vec.
...
- Add a dot product implementation.
- Test code to demonstrate dot product.
- Test code to demonstrate wrapping structs with unordered properties.
2015-07-25 19:41:16 +02:00
1567feaa81
Fix casting.
...
Casting conditions got clarified.
User is now able to say he doesn't care if casting a wrapper on a
type larger than just the coordinates will stomp on extra data
from the casted type.
2015-07-25 19:12:21 +02:00
e64db02ac3
Fix cast<> method.
...
Add vector_type to is_vec, because vector_type is private
and it couldn't be used in cast. Besides if not is_vec, you can't
expect to find vector_type. The conditional in the cast return type
works like if V2 is not a Vec, you can just use V as the vector_type,
anyways the first is_vec is false so the whole condition is going to
be false anyways, even if it results that V == V.
2015-07-25 01:52:27 +02:00
30371adba9
Add Vec1Promotion.
2015-07-25 00:55:57 +02:00
d3b63aab8c
Fix some build errors in certain cases.
...
- wrapped vector is not guaranteed to have constructors
- vector_type is not necessary
- has typedef and has enum were not always working
2015-07-25 00:55:03 +02:00
b7c7d77dac
New test program based on gtest.
2015-07-23 23:10:03 +02:00
987cdd66ef
Import gtest 1.7.0
2015-07-23 23:08:41 +02:00