Commit Graph

4 Commits

Author SHA1 Message Date
Robert Maynard
f2a3ecd014 Don't generate doxygen for serialization helpers 2019-09-12 17:29:05 -04:00
Kenneth Moreland
aebafc9e5a Use SFINAE to write Set/Get methods in ArrayPortalSOA
Because ArrayPortalSOA calls a delegate portal to get the actual values,
it can only implement its own Set or Get if the delegate portal supports
it. Previously this was done by calling an overloaded internal method
based on the result of PortalSupportsSets/Gets. However, regardless of
whether the delegate portal supported Set or Get, ArrayPortalSOA
provided one. Thus, if something else tried to use PortalSupportsSets/
Gets on ArrayPortalSOA, it would always report true even if it was not
really supported.

Instead, use SFINAE to remove the Set or Get if that method is not
supported in the delegate portal.

Since ArrayHandleSOA is only really used for portals from basic storage
arrays, it will be rare that Set or Get is not supported. However, a
device adapter is free to remove one of these methods on a device
portal. For example, if you call PrepareForInput on an ArrayHandle, it
is possible that the device adapter will create a portal that has no Set
method because the array is not writable.

Thanks to Allison Vacanti for recomending this solution.
2019-08-20 12:10:16 -06:00
Kenneth Moreland
20c758108c Add make_ArrayHandleSOA for std::vectors and C arrays 2019-08-20 12:09:57 -06:00
Kenneth Moreland
869d665806 Add ArrayHandleSOA
This ArrayHandle should behave just like the one with basic storage but
external arrays stored by component can be shallow-copied to them.
2019-08-20 12:09:54 -06:00