
The file reader and writers need to be written for other classes whose instances are commonly read/saved, e.g. vpgl_rational_camera
such readers usually use vcl_istream and its operator>> (or vcl_ostream and operator<<). 
so we need two more classes:

//: this class will implement the operator>> to extract formatted information, and also getline()
class bhdfs_istream : public bhdfs_fstream, public vcl_istream 
{
	bhdfs_istream(vcl_string filename, char const* mode_flags) : bhdfs_fstream(filename, mode_flags) {}
	...
} 

so then we can use the function: 
template <class T> vpgl_rational_camera<T>* read_rational_camera(vcl_istream& istr)
such as:
vcl_istream* istr = new bhdfs_istream(fname, "r");
vpgl_camera_double_sptr ratcam = read_rational_camera<double>(istr);

given this stream and read method, bhdfsReadRationalCameraProcess can be implemented


similarly for output:

//: this class will implement the operator<< to extract formatted information
class bhdfs_ostream : public bhdfs_fstream, public vcl_ostream 
{
	bhdfs_ostream(vcl_string filename, char const* mode_flags) : bhdfs_fstream(filename, mode_flags) {}
	...
} 
