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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
#ifndef Printer_INCLUDED
#define Printer_INCLUDED
class Printer;
#include <stdio.h>
#include <string>
#include "vektor.h"
#include "term.h"
#include "termorder.h"
#include "polynomial.h"
// We need to help the Mac compiler:
#define Stdin ((FILE*)stdin)
#define Stdout ((FILE*)stdout)
#define Stderr ((FILE*)stderr)
class Printer
{
protected:
FILE *f;
virtual string variableIndexToString(PolynomialRing const &r, int i);
public:
Printer(FILE *f){this->f=f;};
virtual void printVariable(PolynomialRing const &r, int i);
virtual void printInteger(int i, int minimalFieldWidth=0)=0;
virtual void printMonomial(const Monomial &m, bool alwaysWriteSign=false, bool writeIfOne=true)=0;
virtual void printFieldElement(const FieldElement &e, bool writeIfOne=true, bool alwaysWriteSign=false)=0;
virtual void printTerm(const Term &t)=0;
virtual void printPolynomial(const Polynomial &p)=0;
virtual void printPolynomialSet(const PolynomialSet &p, bool newLine=false)=0;
virtual void printPolynomialSetList(const PolynomialSetList &s)=0;
virtual void printVector(const IntegerVector &v, bool curly=false, int minimalFieldWidth=0)=0;
virtual void printVectorList(const IntegerVectorList &s, bool indexed=false)=0;
virtual void printString(const string &s)=0;
virtual void printNewLine()=0;
virtual void printChar(int c){char s[2];s[0]=c;s[1]=0;printString(s);}
virtual void printTermOrder(TermOrder const &t);
virtual void printPolyhedralCone(class PolyhedralCone const &c);
virtual void printPolyhedralFan(class PolyhedralFan const &c);
virtual void printField(class Field const &f);
virtual void printPolynomialRing(class PolynomialRing const &r);
};
class LatexPrinter:public Printer
{
int mathModeLevel;
void pushMathMode();
void popMathMode();
public:
LatexPrinter(FILE *f):Printer(f){mathModeLevel=0;}
virtual void printInteger(int i, int minimalFieldWidth=0);
virtual void printMonomial(const Monomial &m, bool alwaysWriteSign=false, bool writeIfOne=true);
virtual void printFieldElement(const FieldElement &e, bool writeIfOne=true, bool alwaysWriteSign=false);
virtual void printTerm(const Term &t);
virtual void printPolynomial(const Polynomial &p);
virtual void printPolynomialSet(const PolynomialSet &s, bool newLine=false);
virtual void printPolynomialSetList(const PolynomialSetList &s);
virtual void printVector(const IntegerVector &v, bool curly=false, int minimalFieldWidth=0);
virtual void printVectorList(const IntegerVectorList &s, bool indexed=false);
virtual void printString(const string &s);
virtual void printNewLine();
void printLatexStart();
void printLatexEnd();
};
class AsciiPrinter:public Printer
{
public:
AsciiPrinter(FILE *f):Printer(f){}
virtual char vectorLeftBrackets(){return '(';}
virtual char vectorRightBrackets(){return ')';}
virtual char vectorListLeftBrackets(){return '{';}
virtual char vectorListRightBrackets(){return '}';}
virtual void printInteger(int i, int minimalFieldWidth=0);
virtual void printMonomial(const Monomial &m, bool alwaysWriteSign=false, bool writeIfOne=true);
virtual void printFieldElement(const FieldElement &e, bool writeIfOne=true, bool alwaysWriteSign=false);
virtual void printTerm(const Term &t);
virtual void printPolynomial(const Polynomial &p);
virtual void printPolynomialSet(const PolynomialSet &s, bool newLine=false);
virtual void printPolynomialSetList(const PolynomialSetList &s);
virtual void printVector(const IntegerVector &v, bool curly=false, int minimalFieldWidth=0);
virtual void printVectorList(const IntegerVectorList &s, bool indexed=false);
virtual void printString(const string &s);
virtual void printNewLine();
};
/*
class XmlPrinter:public Printer
{
public:
XmlPrinter(FILE *f):Printer(f){}
virtual void printMonomial(const vektor_i &m, int sign=1);
virtual void printBinomial(const vektor_i &b);
virtual void printVector(const vektor_i &v);
virtual void printVectorList(const gbasis &g);
virtual void printMatrix(const basis_i &m);
virtual void printTransposedMatrix(const basis_i &m);
virtual void printGroebnerBasis(const gbasis &g);
virtual void printGroebnerBasisNewLine(const gbasis &g);
virtual void printMonomialList(const gbasis &g);
virtual void printMonomialListNewLine(const gbasis &g);
virtual void printMonomialIdeal(const gbasis &g);
virtual void printMonomialIdealList(const gfan &g);
virtual void printStandardPair(const StandardPair &g);
virtual void printStandardPairList(const StandardPairList &g);
virtual void printString(const string &s);
};
*/
class TopcomPrinter:public AsciiPrinter
{
public:
TopcomPrinter(FILE *f):AsciiPrinter(f){}
virtual char vectorLeftBrackets(){return '[';}
virtual char vectorRightBrackets(){return ']';}
virtual char vectorListLeftBrackets(){return '[';}
virtual char vectorListRightBrackets(){return ']';}
};
extern AsciiPrinter debug;
#endif
|