1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
#pragma once
#include "Kernel.hh"
#include <ostream>
namespace cadabra {
class TerminalStream {
public:
TerminalStream(const Kernel&, std::ostream&);
TerminalStream& operator<<(const Ex&);
TerminalStream& operator<<(std::shared_ptr<Ex>);
template<class T>
TerminalStream& operator<<(const T& obj)
{
out_ << obj;
return *this;
}
TerminalStream& operator <<(std::ostream& (*os)(std::ostream&))
{
out_ << os;
return *this;
}
private:
const Kernel& kernel;
std::ostream& out_;
};
}
|