#ifndef __TPTPPrinter__
#define __TPTPPrinter__
#include <iosfwd>
#include "Forwards.hpp"
namespace Shell {
using namespace Kernel;
class TPTPPrinter {
public:
TPTPPrinter(std::ostream* tgtStream=0);
void print(Unit* u);
void printAsClaim(std::string name, Unit* u);
void printWithRole(std::string name, std::string role, Unit* u, bool includeSplitLevels = true);
static std::string toString(const Unit*);
static std::string toString(const Formula*);
static std::string toString(const Term*);
static std::string toString(const Literal*);
private:
std::string getBodyStr(Unit* u, bool includeSplitLevels);
void ensureHeadersPrinted(Unit* u);
void outputSymbolTypeDefinitions(unsigned symNumber, SymbolType symType);
void ensureNecesarySorts();
void printTffWrapper(Unit* u, std::string bodyStr);
std::ostream& tgt();
std::ostream* _tgtStream;
bool _headersPrinted;
};
}
#endif