[Haskell-cafe] C++ interface with Haskell
Isaac Dupree
isaacdupree at charter.net
Sat Apr 19 13:27:44 EDT 2008
you could write a C++ function to marshal a Sequence (or any Container
IIRC, maybe Forward Container) to a vector (or whatever you wanted --
there are choices), and then
okay let's see if I remember C++ well enough
This design has extra copying. but anyway
template<typename Container>
std::vector<typename Container::value_type>
container_to_vector(Container const& c) {
return std::vector<typename Container::value_type>(c.begin(), c.end());
}
and
template<typename Container>
Container vector_to_sequence(std::vector<typename Container::value_type>
const& c) {
return Container(c.begin(), c.end());
}
extern "C" {
/* the temporary returned variable doesn't last long enough here */
(char*, int)/*I know C++ doesn't have this syntax of tuples*/
string_to_array(std::string const& s) {
return (&*container_to_vector(s).begin())
}
}
In other words I suspect that it's possible with a minimum of
boilerplate per type, (possibly including the use of macros), but I'm
not sure exactly what you need to do, and I got tired of being a C++-fu
expert a few years ago
More information about the Haskell-Cafe
mailing list