Cadabra
Computer algebra system for field theory problems
|
Base class for all display classes.
A key difficulty with printing is to figure out when to print additional brackets for objects which would otherwise not render correctly. For example, a sum inside a product need brackets, but it does not need brackets when it is given as an argument to a function, because then the brackets are already there from the function call.
#include <DisplayBase.hh>
Public Member Functions | |
DisplayBase (const Kernel &, const Ex &) | |
void | output (std::ostream &) |
void | output (std::ostream &, Ex::iterator) |
virtual void | dispatch (std::ostream &, Ex::iterator)=0 |
Protected Member Functions | |
virtual bool | needs_brackets (Ex::iterator it)=0 |
Determine if a node needs extra brackets around it. More... | |
Protected Attributes | |
const Ex & | tree |
const Kernel & | kernel |
|
pure virtual |
Implemented in cadabra::DisplayTeX, cadabra::DisplayTerminal, cadabra::DisplaySympy, and cadabra::DisplayMMA.
|
protectedpure virtual |
Determine if a node needs extra brackets around it.
Uses context from the parent node if necessary. Has to be implemented in a derived class, because the answer depends on the printing method (e.g. (a+b)/c
needs brackets when printed like this, but does not need brackets when printed as \frac{a+b}{c}
).
Implemented in cadabra::DisplayTeX, cadabra::DisplayTerminal, cadabra::DisplaySympy, and cadabra::DisplayMMA.
void DisplayBase::output | ( | std::ostream & | str | ) |
void DisplayBase::output | ( | std::ostream & | str, |
Ex::iterator | it | ||
) |
|
protected |
|
protected |