File: printer.h

package info (click to toggle)
gfan 0.3dfsg-1
  • links: PTS
  • area: main
  • in suites: lenny, squeeze
  • size: 2,012 kB
  • ctags: 1,935
  • sloc: cpp: 17,728; makefile: 251
file content (127 lines) | stat: -rw-r--r-- 4,947 bytes parent folder | download | duplicates (2)
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