5#ifndef BPP_PHYL_IO_IODAGRAPH_H
6#define BPP_PHYL_IO_IODAGRAPH_H
48 virtual const std::string
getDataType()
const {
return "DAG"; }
69 virtual std::unique_ptr<PhyloDAG>
readPhyloDAG(
const std::string& path)
const = 0;
78 virtual std::unique_ptr<PhyloDAG>
readPhyloDAG(std::istream& in)
const = 0;
127 std::unique_ptr<PhyloDAG>
readPhyloDAG(std::istream& in)
const override = 0;
129 std::unique_ptr<PhyloDAG>
readPhyloDAG(
const std::string& path)
const override
131 std::ifstream input(path.c_str(), std::ios::in);
133 throw IOException (
"AbstractIPhyloDAG::readPhyloDAG(path): failed to read from path " + path);
163 std::ofstream output(path.c_str(), overwrite ? (std::ios::out) : (std::ios::out | std::ios::app));
165 throw Exception(
"Problem opening file " + path +
"in writePhyloDAG.");
171 std::stringstream ss;
172 ss << e.
what() <<
"\nProblem writing dag to file " << path <<
"\n Is the file path correct and do \
173you have the proper authorizations? ";
198 virtual void readPhyloDAGs(
const std::string& path, std::vector<std::unique_ptr<PhyloDAG>>& dags)
const = 0;
207 virtual void readPhyloDAGs(std::istream& in, std::vector<std::unique_ptr<PhyloDAG>>& dags)
const = 0;
230 const std::vector<const PhyloDAG*>& dags,
231 const std::string& path,
232 bool overwrite)
const = 0;
242 const std::vector<const PhyloDAG*>& dags,
243 std::ostream& out)
const = 0;
257 virtual void readPhyloDAGs(std::istream& in, std::vector<std::unique_ptr<PhyloDAG>>& dags)
const override = 0;
259 virtual void readPhyloDAGs(
const std::string& path, std::vector<std::unique_ptr<PhyloDAG>>& dags)
const override
261 std::ifstream input(path.c_str(), std::ios::in);
278 virtual void writePhyloDAGs(
const std::vector<const PhyloDAG*>& dags, std::ostream& out)
const = 0;
280 virtual void writePhyloDAGs(
const std::vector<const PhyloDAG*>& dags,
const std::string& path,
bool overwrite)
const
284 std::ofstream output(path.c_str(), overwrite ? (std::ios::out) : (std::ios::out | std::ios::app));
Partial implementation of the IMultiDAG interface.
virtual void readPhyloDAGs(std::istream &in, std::vector< std::unique_ptr< PhyloDAG > > &dags) const override=0
Read dags from a stream.
virtual void readPhyloDAGs(const std::string &path, std::vector< std::unique_ptr< PhyloDAG > > &dags) const override
Read dags from a file.
virtual ~AbstractIMultiPhyloDAG()
Partial implementation of the IDAG interface.
std::unique_ptr< PhyloDAG > readPhyloDAG(const std::string &path) const override
Read a DAG from a file.
virtual Element getElement(const std::string &elt) const
virtual ~AbstractIPhyloDAG()
std::unique_ptr< PhyloDAG > readPhyloDAG(std::istream &in) const override=0
Read a DAG from a stream.
Partial implementation of the ODAG interface.
virtual void writePhyloDAGs(const std::vector< const PhyloDAG * > &dags, std::ostream &out) const =0
Write dags to a stream.
virtual ~AbstractOMultiPhyloDAG()
virtual void writePhyloDAGs(const std::vector< const PhyloDAG * > &dags, const std::string &path, bool overwrite) const
Write dags to a file.
Partial implementation of the ODAG interface.
virtual ~AbstractOPhyloDAG()
virtual void writePhyloDAG(const PhyloDAG &dag, const std::string &path, bool overwrite) const
Write a DAG to a file.
virtual void writePhyloDAG(const PhyloDAG &dag, std::ostream &out) const =0
Write a PhyloDAG to a stream.
const char * what() const noexcept override
General interface for multiple trees readers.
virtual void readPhyloDAGs(const std::string &path, std::vector< std::unique_ptr< PhyloDAG > > &dags) const =0
Read dags from a file.
virtual ~IMultiPhyloDAG()
virtual void readPhyloDAGs(std::istream &in, std::vector< std::unique_ptr< PhyloDAG > > &dags) const =0
Read dags from a stream.
General interface for DAG I/O.
virtual const std::string getDataType() const
General interface for DAG readers.
virtual std::unique_ptr< PhyloDAG > readPhyloDAG(const std::string &path) const =0
Read a DAG from a file.
virtual std::unique_ptr< PhyloDAG > readPhyloDAG(std::istream &in) const =0
Read a DAG from a stream.
General interface for tree writers.
virtual void writePhyloDAGs(const std::vector< const PhyloDAG * > &dags, const std::string &path, bool overwrite) const =0
Write dags to a file.
virtual void writePhyloDAGs(const std::vector< const PhyloDAG * > &dags, std::ostream &out) const =0
Write dags to a stream.
virtual ~OMultiPhyloDAG()
General interface for DAG writers.
virtual void writePhyloDAG(const PhyloDAG &dag, std::ostream &out) const =0
Write a PhyloDAG to a stream.
virtual void writePhyloDAG(const PhyloDAG &dag, const std::string &path, bool overwrite) const =0
Write a DAG to a file.
Defines the basic types of data flow nodes.