+ delete writer;
+ delete out;
+}
+
+IO::Base *DataTool::open_output(const string &fn)
+{
+ if(fn=="-")
+ return new IO::Buffered(IO::cout);
+ else
+ return new IO::BufferedFile(fn, IO::M_WRITE);
+}
+
+IO::Base *DataTool::open_input(const string &fn)
+{
+ if(fn=="-")
+ return new IO::Buffered(IO::cin);
+ else
+ return new IO::BufferedFile(fn, IO::M_READ);
+}
+
+DataFile::Writer *DataTool::create_writer(IO::Base &out)
+{
+ DataFile::Writer *writer = new DataFile::Writer(out);
+ if(compress)
+ writer->set_compressed();
+ if(binary)
+ writer->set_binary(true);
+ if(float_size)
+ writer->set_float_precision(float_size);
+ return writer;