
----- Original Message ----- From: "Christopher Schmidt" <mr.chr.schmidt@online.de> To: <boost@lists.boost.org> Sent: Sunday, February 07, 2010 8:45 PM Subject: Re: [boost] [fusion] is there an adapter for C-arrays?
vicente.botet schrieb:
----- Original Message ----- From: "Christopher Schmidt" <mr.chr.schmidt@online.de> To: <boost@lists.boost.org> Sent: Sunday, February 07, 2010 2:19 AM Subject: Re: [boost] [fusion] is there an adapter for C-arrays?
vicente.botet schrieb:
On 2/7/2010 3:34 AM, vicente.botet wrote:
Hi,
I need to visit the members of a C++ type using Fusion sequences. For structures I plan to use BOOST_FUSION_ADAPT_STRUCT. I need also to visit also c-arrays (with static size). I see that there is already an adapter for boost::array. Is there an adapter for C-arrays?
Sorry, no. Would you want to contribute one? It's easy if you take a look at the boost::array adapter.
Hi,
Well if doesn't exists I will need to see how to do it :) I will inform you when I reach to get something.
I just added an implementation for adapting plain arrays to the c++0x branch of fusion. You can find the code here:
https://svn.boost.org/trac/boost/browser/sandbox/SOC/2009/fusion/boost/fusio... https://svn.boost.org/trac/boost/browser/sandbox/SOC/2009/fusion/boost/fusio...
[snip]
Is there a simple way to implement this flat view? Or even better, is it already available?
It is. Check the (undocumented) code in the ext_-directories.
https://svn.boost.org/trac/boost/browser/trunk/boost/fusion/container/ext_/t... https://svn.boost.org/trac/boost/browser/trunk/boost/fusion/algorithm/iterat...
Unfortunately the code is pretty much broken at the moment.
https://svn.boost.org/trac/boost/ticket/3858
-Christopher
Hi,
thanks for all these pointers. I was starting to implement it,when DING, your post appeared. I'm sure I would made a lot of errors before reaching to run the test.
I ported my code to the trunk. Update to the HEAD and include <boost/fusion/adapted/array.hpp> in your code.
Do you know if it is planned to document the tree extension soon? Is there any post about this subject?
The segmented extension is pretty much proto specific in its current form. From my limited point of view, it still needs some work in order to be a useful component aside of Spirit/Proto-alike use-cases. Unfortunately Eric Niebler, the original author, has not continued development on this extension. For more information, see the old posts in the archives.
http://lists.boost.org/Archives/boost/2006/09/110708.php
As the code is broken, undocumented and may change in the future, I suggest you to connect your fusion sequences recursively via fusion::fold and fusion::join.
Just a remark most of the .hpp files on po_array are not self contained as the structure po_array_tag is not declared in th file.
the *.hpp-files in the detail folder are not meant to be included by the user. po_array_tag is defined in /detail/tag_of.hpp, which is always included by array.hpp before any other /detail/*_impl.hpp-header.
-Christopher
Hi, I've the impression you have introduced a interface break as before the array directory was for boost_array, and now is for POD arrays? I would prefer a hierarchycal directory fusion/adapted/boost/array.hpp fusion/adapted/boost/mpl.hpp fusion/adapted/boost/tuple.hpp fusion/adapted/boost/detail/array fusion/adapted/boost/detail/mpl fusion/adapted/boost/detail/tuple fusion/adapted/builtin/array.hpp fusion/adapted/builtin/struct.hpp fusion/adapted/builtin/detail/array fusion/adapted/builtin/detail/struct fusion/adapted/std/pair.hpp fusion/adapted/std/detail/pair The old files can be made deprecated includig the new ones. Now all the files are at the array level (detail directory has desapeared), so can be directly include by the user, thus my previous remark is still valid. Update C:\cygwin\home\Vicente\boost\trunk\boost\fusion\adapted\array\detail C:\cygwin\home\Vicente\boost\trunk\boost\fusion\adapted\array\array_iterator.hpp C:\cygwin\home\Vicente\boost\trunk\boost\fusion\adapted\array\size_impl.hpp C:\cygwin\home\Vicente\boost\trunk\boost\fusion\adapted\array\tag_of.hpp C:\cygwin\home\Vicente\boost\trunk\boost\fusion\adapted\array\value_at_impl.hpp C:\cygwin\home\Vicente\boost\trunk\boost\fusion\adapted\array\value_of_impl.hpp C:\cygwin\home\Vicente\boost\trunk\boost\fusion\adapted\array\category_of_impl.hpp C:\cygwin\home\Vicente\boost\trunk\boost\fusion\adapted\array\is_sequence_impl.hpp C:\cygwin\home\Vicente\boost\trunk\boost\fusion\adapted\array\at_impl.hpp C:\cygwin\home\Vicente\boost\trunk\boost\fusion\adapted\array\begin_impl.hpp C:\cygwin\home\Vicente\boost\trunk\boost\fusion\adapted\array\deref_impl.hpp C:\cygwin\home\Vicente\boost\trunk\boost\fusion\adapted\array\is_view_impl.hpp C:\cygwin\home\Vicente\boost\trunk\boost\fusion\adapted\array\end_impl.hpp At revision: 59579 Best, Vicente