King_DuckZ
e128827322
Add sample code
2017-07-28 10:10:55 +01:00
King_DuckZ
73310217e0
Add a convenience operator<< overload for easy printing to std::cout.
2017-07-28 09:38:32 +01:00
King_DuckZ
421e5e2433
Allow extra casting if users explicitly whitelist them.
...
They'll have to make VectorTypeInfo<V> inherit from
is_castable_to<U> for every U they want the V to be
castable to. Note that if they also want U to be castable
to V (so the other way around) they'll have to explicitly
whitelist that conversion too in VectorTypeInfo<U>.
2017-07-27 23:42:21 +01:00
King_DuckZ
b7616a4fcf
Make sure to only match Vec<std::array> types.
2017-07-23 14:18:03 +01:00
King_DuckZ
f4715ec87f
Add a sample gdb pretty printer for Vec<std::array> types
2017-07-23 14:02:44 +01:00
King_DuckZ
546bd7e270
Remove pointless symlink.
2017-03-16 21:33:46 +00:00
King_DuckZ
34e5775972
Don't put the path when including headers.
2017-03-16 20:58:49 +00:00
King_DuckZ
6ce534fc8a
Update license header
2017-03-15 22:13:13 +00:00
King_DuckZ
83418105e3
static_cast assignments by default.
...
This can be disabled by defining VWR_WITH_UNCASTED_ASSIGNMENT.
2017-03-11 08:45:11 +00:00
King_DuckZ
33bc1e73da
Use pragma once instead of inclusion guards.
...
Multiple versions of the same library can't be used in the same
project because even tho project take care to include from
the right vectorwrapper-1.0/ dir the inclusion guard is the
same. So in spite of having a different path and livingi in a
different namespace, ifndef is preventing the inclusions to work.
2017-03-04 01:19:15 +00:00
King_DuckZ
9533c73cd6
Add versioned symlink to include directory
2017-03-04 01:00:39 +00:00
King_DuckZ
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
King_DuckZ
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
King_DuckZ
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
King_DuckZ
69e342460c
Implement binary assignment operators for scalar types.
2017-01-27 19:07:15 +00:00
King_DuckZ
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
King_DuckZ
bbaabb695d
Implement operators with scalar types.
2017-01-27 18:43:21 +00:00
King_DuckZ
780e6647b2
Implement unary operator-
2017-01-26 17:28:17 +00:00
King_DuckZ
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
King_DuckZ
6bf3278631
Implement comparison operators correctly.
...
With tests.
2016-11-08 01:51:17 +01:00
King_DuckZ
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
King_DuckZ
c3844dc246
Update sequence_bt from duckhandy.
2016-11-02 03:37:01 +01:00
King_DuckZ
8af1a36baa
Warning fix on clang
2016-11-02 02:45:16 +01:00
King_DuckZ
d9ac0531b3
Fix warning about unused typedef.
2016-11-02 01:31:48 +01:00
King_DuckZ
0c78771c3e
Try to get gcc-5 (please travis, just work!)
2016-11-02 01:19:48 +01:00
King_DuckZ
891fa25675
Add vector_cast implementation and the unit test for it.
2016-11-02 01:19:48 +01:00
King_DuckZ
dc1b3e7b76
Use ctest in cmake.
2016-11-02 01:19:48 +01:00
King_DuckZ
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
King_DuckZ
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
King_DuckZ
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
King_DuckZ
736e83893a
Add test for wrapped vector using get_at() which was not working previously.
2016-10-25 01:18:44 +02:00
King_DuckZ
84203ee817
Fix broken build when using the get_at() way wrapper.
2016-10-25 01:07:28 +02:00
King_DuckZ
41eed2c8ba
Warning fix
2016-09-05 21:30:17 +02:00
King_DuckZ
dbfed8c124
Add notes about example.cpp and about performance.
2015-07-25 22:12:44 +02:00
King_DuckZ
f682168382
Remove Build status section.
2015-07-25 21:58:56 +02:00
King_DuckZ
7affd7960f
Allow casting to vectors of lower dimensions.
2015-07-25 21:18:45 +02:00
King_DuckZ
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
King_DuckZ
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
King_DuckZ
40ca5cd388
Clarify cast conditions.
2015-07-25 19:20:20 +02:00
King_DuckZ
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
King_DuckZ
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
King_DuckZ
59d8eb43e7
Short version of the motivation in the readme.
2015-07-25 00:56:14 +02:00
King_DuckZ
30371adba9
Add Vec1Promotion.
2015-07-25 00:55:57 +02:00
King_DuckZ
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
King_DuckZ
9b107d6e82
Fix in travis.yml.
2015-07-24 22:35:54 +02:00
King_DuckZ
638f1bef55
Fix in travis.yml.
2015-07-24 22:28:50 +02:00
King_DuckZ
cd4d5b9bf5
Try to move to the new Travis container based infrastructure.
2015-07-24 22:21:43 +02:00
King_DuckZ
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
King_DuckZ
bc24424e8f
Fix travis.yml
2015-07-23 23:35:02 +02:00
King_DuckZ
f99739772b
Fix travis.yml
2015-07-23 23:28:19 +02:00