$include_dir="/home/hyper-archives/geometry/include"; include("$include_dir/msg-header.inc") ?>
Subject: [ggl] read_wkt and write_wkt
From: Barend Gehrels (Barend.Gehrels)
Date: 2009-04-27 10:23:41
Hi,
Some things about wkt:
The read_wkt function currently returns true/false if it is successfully 
or not, while inside lexical_cast<> is used which might throw an 
exception. I would like to change this by returning void and always 
throw an exception if it is not successful. Is this OK for everyone?
This exception is already defined as struct read_wkt_exception : public 
geometry_exception, we need to move that geometry_exception to core. Is 
that OK ?
Boost defines an "exception/exception.hpp" which is not used by boost 
libraries. At least not by e.g. spirit. So I derive from std::exception, 
like most boost libraries do, is that OK?
Finally the wkt is streamed like one of:
(G geometry where G is a template parameter or type)
1) cout << wkt<G>(geometry) << endl // needs <G>
2) cout << make_wkt(geometry) << endl // same but does not need <G>
3) cout << geometry << endl // only if stream_wkt.hpp is included
About 2)
The "make_" prefix is normally reserved for object generators. This is 
one but actually it is, more strictly, generating an manipulator (which 
is an object). Is the "make_" prefix appropriate here? I thought I asked 
this earlier but cannot find that mail so probably I didn't. 
Alternatively it would be:
1) cout << wkt_manip<G>(geometry) << endl
2) cout << wkt(geometry) << end // because this will be most widely used
About 3)
The last one is prone to errors if geometry is not a geometry or not a 
tag. It is not living in namespace ggl to enable the library to stream 
custom geometries which are living outside the namespace ggl. So it is 
not in any namespace. Bruno recently mailed me that this behaviour will 
never be accepted by Boost so we have to re-add the namespace there, or 
remove it at all.
This is also for the upcoming WKB, and myself am writing VEShapes for a 
project (Virtual Earth shapes), so we can harmonize it.
Regards, Barend