Commit graph

48 commits

Author SHA1 Message Date
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
780e6647b2 Implement unary operator- 2017-01-26 17:28:17 +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
c3844dc246 Update sequence_bt from duckhandy. 2016-11-02 03:37:01 +01:00
8af1a36baa Warning fix on clang 2016-11-02 02:45:16 +01:00
d9ac0531b3 Fix warning about unused typedef. 2016-11-02 01:31:48 +01:00
0c78771c3e Try to get gcc-5 (please travis, just work!) 2016-11-02 01:19:48 +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
f51c739a48 Add a macro to control if the result of binary operators should be casted.
It allows to suppress warnings when combining vectors of a type that
gets promoted to int after the binary operator is applied, for example.
2016-11-02 01:14:23 +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
2725d4f63d Update copyright to 2016
I think vectorops was missing the copyright header /on purpose/ but
I've added it there as well now.
2016-11-01 22:58:23 +01:00
736e83893a Add test for wrapped vector using get_at() which was not working previously. 2016-10-25 01:18:44 +02:00
84203ee817 Fix broken build when using the get_at() way wrapper. 2016-10-25 01:07:28 +02:00
41eed2c8ba Warning fix 2016-09-05 21:30:17 +02:00
dbfed8c124 Add notes about example.cpp and about performance. 2015-07-25 22:12:44 +02:00
f682168382 Remove Build status section. 2015-07-25 21:58:56 +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
40ca5cd388 Clarify cast conditions. 2015-07-25 19:20:20 +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
59d8eb43e7 Short version of the motivation in the readme. 2015-07-25 00:56:14 +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
9b107d6e82 Fix in travis.yml. 2015-07-24 22:35:54 +02:00
638f1bef55 Fix in travis.yml. 2015-07-24 22:28:50 +02:00
cd4d5b9bf5 Try to move to the new Travis container based infrastructure. 2015-07-24 22:21:43 +02:00
39fecaf6e0 Add lines for clang.
See:
http://stackoverflow.com/questions/22111549/travis-ci-with-clang-3-4-and-c11
2015-07-24 01:17:29 +02:00
bc24424e8f Fix travis.yml 2015-07-23 23:35:02 +02:00
f99739772b Fix travis.yml 2015-07-23 23:28:19 +02:00
b5df8e3f40 Fix travis.yml 2015-07-23 23:25:28 +02:00
feb98a32f3 Remove cd command 2015-07-23 23:23:43 +02:00
198345113b Travis file for travis-ci.com 2015-07-23 23:20:59 +02:00
7547450913 Fix build errors and typos in the documentation. 2015-07-23 23:10:55 +02:00
b7c7d77dac New test program based on gtest. 2015-07-23 23:10:03 +02:00
5e6c537a2d Fix in HasEnum that was always returning true. 2015-07-23 23:09:35 +02:00
987cdd66ef Import gtest 1.7.0 2015-07-23 23:08:41 +02:00
08050e42da First import 2015-07-23 01:37:35 +02:00
4c15aadf4e Initial commit 2015-07-23 01:33:36 +02:00