Xmipp  v3.23.11-Nereus
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
ConsolePrinter Class Reference

#include <argsprinter.h>

Inheritance diagram for ConsolePrinter:
Inheritance graph
[legend]
Collaboration diagram for ConsolePrinter:
Collaboration graph
[legend]

Public Member Functions

 ConsolePrinter (std::ostream &out=std::cout, bool color=true)
 
virtual void printProgram (const ProgramDef &program, int v=0)
 
virtual void printSection (const SectionDef &section, int v=0)
 
virtual void printParam (const ParamDef &param, int v=0)
 
virtual void printArgument (const ArgumentDef &argument, int v=0)
 
virtual void printCommentList (const CommentList &comments, int v=0)
 
- Public Member Functions inherited from Printer
virtual ~Printer ()
 
virtual void printToken (ArgToken *token)
 

Public Attributes

bool color
 

Protected Member Functions

void printRequiresList (StringVector requires)
 

Protected Attributes

std::ostream * pOut
 

Detailed Description

Just print to out stream

Definition at line 52 of file argsprinter.h.

Constructor & Destructor Documentation

◆ ConsolePrinter()

ConsolePrinter::ConsolePrinter ( std::ostream &  out = std::cout,
bool  color = true 
)

Constructor

Definition at line 44 of file argsprinter.cpp.

45 {
46  this->pOut = &out;
47  this->color = color;
48 }
std::ostream * pOut
Definition: argsprinter.h:55

Member Function Documentation

◆ printArgument()

void ConsolePrinter::printArgument ( const ArgumentDef argument,
int  v = 0 
)
virtual

Implements Printer.

Definition at line 170 of file argsprinter.cpp.

171 {
172  *pOut << "<" << argument.name;
173  if (argument.hasDefault)
174  *pOut << "=" << argument.argDefault;
175  *pOut << ">";
176 }
std::ostream * pOut
Definition: argsprinter.h:55
String name
Definition: argsparser.h:152
bool hasDefault
Definition: argsparser.h:176
String argDefault
Definition: argsparser.h:172

◆ printCommentList()

void ConsolePrinter::printCommentList ( const CommentList comments,
int  v = 0 
)
virtual

Implements Printer.

Definition at line 178 of file argsprinter.cpp.

179 {
180  for (size_t i = 0; i < comments.size(); ++i)
181  if (comments.visibility[i] <= v)
182  *pOut << " " << comments.comments[i] << std::endl;
183 }
std::ostream * pOut
Definition: argsprinter.h:55
std::vector< int > visibility
Definition: comment_list.h:36
#define i
size_t size() const
StringVector comments
Definition: comment_list.h:35

◆ printParam()

void ConsolePrinter::printParam ( const ParamDef param,
int  v = 0 
)
virtual

Implements Printer.

Definition at line 114 of file argsprinter.cpp.

115 {
116  if (param.visible <= v)
117  {
118  if (param.orBefore)
119  *pOut << " OR" << std::endl;
120 
121  *pOut << " ";
122  int pColor = BLUE;
123  if (!param.notOptional)
124  {
125  *pOut << "[";
126  pColor = GREEN;
127  }
128  *pOut << COLOR(param.name.c_str(), pColor);
129  //print alias
130  for (size_t i = 0; i < param.aliases.size(); ++i)
131  *pOut << ", " << param.aliases[i];
132  //print arguments
133  for (size_t i = 0; i < param.arguments.size(); ++i)
134  {
135  *pOut << " ";
136  printArgument(*param.arguments[i], v);
137  }
138  if (!param.notOptional)
139  *pOut << "]";
140 
142  *pOut << std::endl;
143  printCommentList(param.comments, v);
144 
145  for (size_t i = 0; i < param.arguments.size(); ++i)
146  {
147  ArgumentDef &arg = *param.arguments[i];
148  if (!arg.subParams.empty())
149  {
150  *pOut << " where <" << arg.name << "> can be:" << std::endl;
151  for (size_t j = 0; j < arg.subParams.size(); ++j)
152  {
153  *pOut << " " << arg.subParams[j]->name;
154  for (size_t k = 0; k < arg.subParams[j]->arguments.size(); ++k)
155  {
156  *pOut << " ";
157  printArgument(*(arg.subParams[j]->arguments[k]));
158  }
159  printRequiresList(arg.subParams[j]->requires);
160  *pOut << std::endl;
161  printCommentList(arg.subParams[j]->comments, v);
162 
163  }
164  }
165  }
166 
167  }
168 }
std::ostream * pOut
Definition: argsprinter.h:55
String name
Definition: argsparser.h:152
bool notOptional
Definition: argsparser.h:195
CommentList comments
Definition: argsparser.h:203
#define i
void printRequiresList(StringVector requires)
ql0001_ & k(htemp+1),(cvec+1),(atemp+1),(bj+1),(bl+1),(bu+1),(x+1),(clamda+1), &iout, infoqp, &zero,(w+1), &lenw,(iw+1), &leniw, &glob_grd.epsmac
StringVector requires
Definition: argsparser.h:205
virtual void printArgument(const ArgumentDef &argument, int v=0)
#define COLOR(x, c)
Definition: argsprinter.cpp:42
int visible
Definition: argsparser.h:153
std::vector< ParamDef * > subParams
Definition: argsparser.h:175
std::vector< ArgumentDef * > arguments
Definition: argsparser.h:198
for(j=1;j<=i__1;++j)
virtual void printCommentList(const CommentList &comments, int v=0)
#define j
bool orBefore
Definition: argsparser.h:196
StringVector aliases
Definition: argsparser.h:204

◆ printProgram()

void ConsolePrinter::printProgram ( const ProgramDef program,
int  v = 0 
)
virtual

Implements Printer.

Definition at line 50 of file argsprinter.cpp.

51 {
52  //print program name and usage
53  *pOut << COLOR("PROGRAM", RED) << std::endl << " " << program.name << std::endl;
54  if (program.usageComments.size() > 0)
55  {
56  *pOut << COLOR("USAGE", RED) << std::endl;
57  for (size_t i = 0; i < program.usageComments.size(); ++i)
58  if (program.usageComments.visibility[i] <= v)
59  *pOut << " " << program.usageComments.comments[i] << std::endl;
60  }
61  //print see also
62  if (!program.seeAlso.empty())
63  {
64  *pOut << COLOR("SEE ALSO", RED) << std::endl;
65  *pOut << " " << program.seeAlso << std::endl;
66  }
67 
68  //print sections and params
69  if (program.sections.size() > 0)
70  {
71  *pOut << COLOR("OPTIONS", RED) << std::endl;
72  for (size_t i = 0; i < program.sections.size(); ++i)
73  printSection(*program.sections[i], v);
74  }
75  //print examples
76  if (program.examples.size() > 0)
77  {
78  *pOut << COLOR("EXAMPLES", RED) << std::endl;
79  for (size_t i = 0; i < program.examples.size(); ++i)
80  if (program.examples.visibility[i] <= v)
81  {
82  if (program.examples.wikiVerbatim[i])
83  *pOut << " " << COLOR(program.examples.comments[i].c_str(), BLUE) << std::endl;
84  else
85  *pOut << " " << program.examples.comments[i] << std::endl;
86  }
87 
88  }
89 }
std::ostream * pOut
Definition: argsprinter.h:55
String name
Definition: argsparser.h:152
std::vector< int > visibility
Definition: comment_list.h:36
std::vector< SectionDef * > sections
Definition: argsparser.h:241
#define i
#define COLOR(x, c)
Definition: argsprinter.cpp:42
std::vector< bool > wikiVerbatim
Definition: comment_list.h:37
String seeAlso
Definition: argsparser.h:247
size_t size() const
StringVector comments
Definition: comment_list.h:35
CommentList examples
examples of use
Definition: argsparser.h:243
CommentList usageComments
comments of usage
Definition: argsparser.h:242
virtual void printSection(const SectionDef &section, int v=0)
Definition: argsprinter.cpp:91

◆ printRequiresList()

void ConsolePrinter::printRequiresList ( StringVector  requires)
protected

Definition at line 103 of file argsprinter.cpp.

104 {
105  if (!requires.empty())
106  {
107  *pOut << " ( requires ";
108  for (size_t i = 0; i < requires.size(); ++i)
109  *pOut << requires[i] << " ";
110  *pOut << ")";
111  }
112 }
std::ostream * pOut
Definition: argsprinter.h:55
#define i

◆ printSection()

void ConsolePrinter::printSection ( const SectionDef section,
int  v = 0 
)
virtual

Implements Printer.

Definition at line 91 of file argsprinter.cpp.

92 {
93  if (section.visible <= v)
94  {
95  *pOut << std::endl;
96  if (section.name.length() > 0)
97  *pOut << COLOR(section.name.c_str(), RED) << std::endl;
98  for (size_t i = 0; i < section.params.size(); ++i)
99  printParam(*section.params[i], v);
100  }
101 }
std::ostream * pOut
Definition: argsprinter.h:55
String name
Definition: argsparser.h:152
virtual void printParam(const ParamDef &param, int v=0)
#define i
#define COLOR(x, c)
Definition: argsprinter.cpp:42
int visible
Definition: argsparser.h:153
std::vector< ParamDef * > params
All params defined for the program.
Definition: argsparser.h:224

Member Data Documentation

◆ color

bool ConsolePrinter::color

Definition at line 58 of file argsprinter.h.

◆ pOut

std::ostream* ConsolePrinter::pOut
protected

Definition at line 55 of file argsprinter.h.


The documentation for this class was generated from the following files: