29 #ifndef MODULES_DATAIO_GENERIC_WRITER_H
30 #define MODULES_DATAIO_GENERIC_WRITER_H
40 #include <boost/filesystem.hpp>
49 template <
class HType,
class PortTag>
55 GenericWriter(
const std::string &
name,
const std::string &category,
const std::string &package,
const std::string& stateFilename);
75 virtual bool call_exporter(
const std::string &filename) {
return false; }
81 template <
class HType,
class PortTag>
83 : SCIRun::Dataflow::Networks::Module(SCIRun::Dataflow::Networks::ModuleLookupInfo(name, cat, pack)),
88 stateFilename_(stateFilename),
94 #ifdef SCIRUN4_CODE_TO_BE_ENABLED_LATER
95 template <
class HType,
class PortTag>
101 if (result == std::string(
"0"))
103 warning(
"User chose to not save.");
110 template <
class HType,
class PortTag>
116 auto fileOption = getOptionalInput(Filename);
118 filename_ = get_state()->getValue(stateFilename_).getString();
121 filename_ = (*fileOption)->value();
123 boost::filesystem::path path(filename_);
124 path = boost::filesystem::absolute(path);
125 if (!boost::filesystem::exists(path.parent_path()))
127 error(
"Could not create path to filename");
130 filename_ = path.string();
133 if (!objectPortName_)
135 error(
"Logical error: object port name not specified.");
138 handle_ = getRequiredInput(*objectPortName_);
140 if (filename_.empty())
142 error(
"No filename specified.");
146 #ifdef SCIRUN4_CODE_TO_BE_ENABLED_LATER
147 update_state(Executing);
149 remark(
"saving file " + filename_);
151 if (!overwrite())
return;
153 if (useCustomExporter(filename_))
155 if (!call_exporter(filename_))
157 error(
"Export failed.");
164 if (filetype_ ==
"Binary")
166 stream =
auto_ostream(filename_,
"Binary", getLogger());
175 error(
"Could not open file for writing" + filename_);
179 Pio(*stream, handle_);
PiostreamPtr auto_ostream(const std::string &filename, const std::string &type, LoggerHandle pr)
Definition: Persistent.cc:478
GenericWriter(const std::string &name, const std::string &category, const std::string &package, const std::string &stateFilename)
Definition: GenericWriter.h:82
virtual bool call_exporter(const std::string &filename)
Definition: GenericWriter.h:75
Definition: AlgorithmBase.h:52
HType handle_
Definition: GenericWriter.h:63
StaticPortName< typename HType::element_type, 0 > * objectPortName_
Definition: GenericWriter.h:67
Definition: GenericWriter.h:50
boost::shared_ptr< Piostream > PiostreamPtr
Definition: Persistent.h:80
const char * name[]
Definition: BoostGraphExampleTests.cc:87
Core::Algorithms::AlgorithmParameterName stateFilename_
Definition: GenericWriter.h:66
virtual bool overwrite()
Definition: GenericWriter.h:77
virtual ~GenericWriter()
Definition: GenericWriter.h:56
#define INITIALIZE_PORT(nameObj)
Definition: Module.h:674
virtual void execute()
Definition: GenericWriter.h:112
void Pio(Piostream &stream, Array1< T > &array)
Definition: Array1.h:65
tuple eval
Definition: eab.py:13
std::string filetype_
Definition: GenericWriter.h:65
INPUT_PORT(1, Filename, String)
virtual bool useCustomExporter(const std::string &filename) const =0
std::string filename_
Definition: GenericWriter.h:64