atlas  0.6
output.h
Go to the documentation of this file.
1 /*
2  This is output.h
3 
4  Copyright (C) 2004,2005 Fokko du Cloux
5  Copyright (C) 2016 Marc van Leeuwen
6  part of the Atlas of Lie Groups and Representations
7 
8  For license information see the LICENSE file
9 */
10 
11 #ifndef OUTPUT_H /* guard against multiple inclusions */
12 #define OUTPUT_H
13 
14 #include <iostream>
15 #include <iosfwd>
16 
17 #include "../Atlas.h"
18 #include "tags.h"
19 
20 namespace atlas {
21 
22 namespace output {
23 
24 /******** function declarations *********************************************/
25 
26  class FormNumberMap;
27  class Interface;
28 
29 std::ostream& printBlockSizes
30  (std::ostream&, InnerClass&, Interface&);
31 
32 
33 std::ostream& printRealForms(std::ostream& strm, const FormNumberMap& m);
34 
35 std::ostream&
36 printCartanClass(std::ostream&,
37  const InnerClass&, size_t, output::Interface&);
38 
39 std::ostream& printFiber(std::ostream&, const Fiber&,
40  const RealFormNbrList&);
41 
42 std::ostream& printGradings
43  (std::ostream&, InnerClass&, size_t, Interface&);
44 
45 std::ostream& printGradings(std::ostream&, const Fiber&,
46  const RealFormNbrList&,
47  const RootSystem&);
48 
49 
50 std::ostream& printBlockStabilizer(std::ostream& strm,
51  RealReductiveGroup& G_R,
52  size_t cn,
53  RealFormNbr dual_rf);
54 
55 std::ostream& printCartanClasses(std::ostream&,
56  RealReductiveGroup& G_R,
57  output::Interface&);
58 
59 std::ostream& printCartanOrder(std::ostream&,
60  const RealReductiveGroup&);
61 
62 std::ostream& printRealWeyl(std::ostream& strm,
63  RealReductiveGroup& G_R,
64  size_t cn);
65 
66 std::ostream& printStrongReal(std::ostream& strm,
67  InnerClass& G_C,
68  const output::FormNumberMap& rfi,
69  size_t cn);
70 
71 /******** type definitions **************************************************/
72 
73 // an object to map an internal form number to an external number and name
75 {
76 
79 
80  std::vector<std::string> d_name; // real form names indexed by external number
81 
82  public:
83 
84 // constructors and destructors
85  FormNumberMap(const InnerClass&, const lietype::Layout&);
86 
87  FormNumberMap(const InnerClass&, const lietype::Layout&,
89 
90 // accessors
91  RealFormNbr in(RealFormNbr external_rf) const { return d_in[external_rf]; }
92  RealFormNbr out(RealFormNbr internal_rf) const { return d_out[internal_rf]; }
93 
94  const std::string& type_name(RealFormNbr external_rf) const
95  { return d_name[external_rf]; }
96 
97  size_t numRealForms() const { return d_in.size(); }
98 
99 // no manipulators
100 };
101 
102 class Interface : public std::pair<FormNumberMap,FormNumberMap>
103 {
104  typedef std::pair<FormNumberMap,FormNumberMap> base;
105  public:
106 
107 // constructors and destructors
108  Interface(InnerClass& G, const lietype::Layout& lo)
109  : base(FormNumberMap(G,lo),FormNumberMap(G,lo,tags::DualTag()))
110  {}
111 
112 
114  { return this->first; }
115 
117  { return this->second; }
118 
119 };
120 
121 } // |namespace output|
122 
123 } // |namespace atlas|
124 
125 #endif
RealFormNbr out(RealFormNbr internal_rf) const
Definition: output.h:92
Definition: output.h:74
std::vector< std::string > d_name
Definition: output.h:80
std::ostream & printRealForms(std::ostream &strm, const FormNumberMap &I)
Definition: output.cpp:191
RealFormNbrList d_in
Definition: output.h:77
std::vector< RealFormNbr > RealFormNbrList
Definition: Atlas.h:303
std::ostream & printCartanClass(std::ostream &strm, const InnerClass &G, size_t cn, output::Interface &CI)
Definition: output.cpp:218
std::ostream & printStrongReal(std::ostream &strm, InnerClass &G_C, const output::FormNumberMap &rfi, size_t cn)
Definition: output.cpp:488
Interface(InnerClass &G, const lietype::Layout &lo)
Definition: output.h:108
std::ostream & printGradings(std::ostream &strm, InnerClass &G, size_t cn, Interface &CI)
Definition: output.cpp:200
size_t numRealForms() const
Definition: output.h:97
std::pair< FormNumberMap, FormNumberMap > base
Definition: output.h:104
Definition: lietype.h:123
const output::FormNumberMap & realFormInterface() const
Definition: output.h:113
FormNumberMap(const InnerClass &, const lietype::Layout &)
Definition: output.cpp:106
void output(text_pointer)
Definition: ctangle.c:342
std::ostream & printCartanClasses(std::ostream &strm, RealReductiveGroup &G, output::Interface &G_CI)
Definition: output.cpp:391
const output::FormNumberMap & dualRealFormInterface() const
Definition: output.h:116
Definition: output.h:102
unsigned short RealFormNbr
Definition: Atlas.h:302
std::ostream & printBlockStabilizer(std::ostream &strm, RealReductiveGroup &G_R, size_t cn, RealFormNbr drf)
Definition: output.cpp:359
Definition: Atlas.h:38
Definition of dummy argument tags used for constructor overloading.
Definition: tags.h:51
std::ostream & printBlockSizes(std::ostream &strm, InnerClass &G, Interface &CI)
Definition: output.cpp:45
const std::string & type_name(RealFormNbr external_rf) const
Definition: output.h:94
std::ostream & printCartanOrder(std::ostream &strm, const RealReductiveGroup &G_R)
Definition: output.cpp:416
std::ostream & printFiber(std::ostream &strm, const Fiber &f, const RealFormNbrList &rfl)
Definition: output.cpp:280
std::ostream & printRealWeyl(std::ostream &strm, RealReductiveGroup &G_R, size_t cn)
Definition: output.cpp:443
Definition: cweave.c:262
RealFormNbr in(RealFormNbr external_rf) const
Definition: output.h:91
RealFormNbrList d_out
Definition: output.h:78