Bob Jamison wrote: ...
If we could upgrade from char * ---to--->FILE *
to a much cleaner URI ---to--->istream and URI ---to--->ostream
In general a good idea, but I'd be very careful with using iostreams, they can be VERY slow, difficult to work with and can cause interesting problems, while their advanced features are usually hardly worth the trouble of using them (I've actually reverted to using FILE* or Win32 specific APIs as I find them much easier and more reliable).
I realize this might not all apply to InkScape and if you have to do a lot of "text" io it might a good idea. Also, if you're sure you're using a good implementation it might not be such a problem. In any case I'd thorougly test and benchmark relevant pieces of code before deciding on using it, as well as making sure it will really make things easier.
If you're worried about using FILE* I'd recommend creating a custom wrapper or looking whether you can find something better than iostreams to suit your needs. This is what I do and has saved me a lot of trouble as I have much more control over what it does (I need support for 64bit file sizes for example) and can extend it with useful features.
...with built-in support for localization, it would make things a LOT easier.
Or give a lot of problems, things like . vs. , as decimal separator can be extremely frustrating (especially when exchanging files). Things like this tend to also work extremely well in cases where they're NOT wanted (which is usually more crucial than whether they always work in places where they are wanted).
I have been looking around the net a lot, and there already exists a wonderful 'gzstreams' lib for supporting .svgz without pipes. I experimented with it by recoding my copy of repr-io.cpp to use iostreams instead of FILE *, and it worked wonderfully.
That is nice of course, but probably not worth switching for, as it probably isn't too difficult to implement for whatever system you end up using (if it isn't implemented already).
There is also a pair of iostream implementations I found, that provide printf() and scanf() style formatting, to alleviate the pain of conversion somewhat.
Personally I like printf (especially after having benchmarked similar conversions using streams), but again I doubt this is a decisive feature.