$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: HartmutKaiser_at_[hidden]
Date: 2001-12-09 13:00:00
Hi all,
We at the Spirit development group
(http://sourceforge.net/projects/spirit/) use the Boost.Tuple library as
a base for implementing parser closures. Since Spirit is a header only
C++ library we had the problem, that we couldn't use the tuple_io
functionality as it is.
The Boost.Tuple library requires a static constant variable definition
(format_info::stream_index, see file boost/libs/tuple/src/tuple.cpp) to
be linked to the built executable. To overcome this incompatibility with
our design rules (headers only) I want to propose the following change
(reference is the current CVS):
File boost/tuple/tuple_io.hpp:
52c52,58
< static const int stream_index[number_of_manipulators];
---
> static int get_stream_index (int m)
> {
> static const int stream_index[number_of_manipulators]
> = { std::ios::xalloc(), std::ios::xalloc(), std::ios::xalloc()
};
>
> return stream_index[m];
> }
61c67
< char c = static_cast<char>(i.iword(stream_index[m]));
---
> char c = static_cast<char>(i.iword(get_stream_index(m)));
75c81
< i.iword(stream_index[m]) = static_cast<long>(c);
---
> i.iword(get_stream_index(m)) = static_cast<long>(c);
85c91
< CharType c = static_cast<CharType>(i.iword(stream_index[m]) );
---
> CharType c = static_cast<CharType>(i.iword(get_stream_index(m))
);
105c111
< i.iword(stream_index[m]) = static_cast<long>(c);
---
> i.iword(get_stream_index(m)) = static_cast<long>(c);
This removes the need for a separate file to link with the executable
using the Boost.Tuple library.
Regards Hartmut