Coriolis Core (CRL) Documentation


Banner.h
1// -*- C++ -*-
2//
3// This file is part of the Coriolis Software.
4// Copyright (c) UPMC 2008-2018, All Rights Reserved
5//
6// +-----------------------------------------------------------------+
7// | C O R I O L I S |
8// | Alliance / Hurricane Interface |
9// | |
10// | Author : Jean-Paul CHAPUT |
11// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
12// | =============================================================== |
13// | C++ Header : "./crlcore/Banner.h" |
14// +-----------------------------------------------------------------+
15
16
17#ifndef CRL_BANNER_H
18#define CRL_BANNER_H
19
20#include <map>
21#include <string>
22#include <vector>
23#include <ostream>
24#include <sstream>
25
26#ifdef __CCORE_INTERNAL__
27# include "hurricane/CConfig.h"
28#endif
29#include "crlcore/Utilities.h"
30
31
32namespace CRL {
33
34 using std::string;
35 using std::map;
36 using std::vector;
37 using std::ostream;
38 using std::ostringstream;
39
40
41// -------------------------------------------------------------------
42// Class : "CRL::BannerFont".
43
44
45 class BannerFont {
46
47 public:
48 // BigChar subclass.
49 class BigChar {
50 public:
51 // Constructor & Destructor.
52 BigChar ( char c, int height, const char* lines[], const BannerFont* font );
53 ~BigChar ();
54 // Methods.
55 inline int getHeight () const;
56 inline const BannerFont* getFont () const;
57 string _getPrint () const;
58 const char* operator[] ( int line ) const;
59
60 private:
61 // Internal: Attributes.
62 char _character;
63 int _height;
64 const char** _lines;
65 const BannerFont* _font;
66
67 // Internal: Constructors.
68 BigChar& operator= ( const BigChar& );
69 BigChar ( const BigChar& );
70 };
71
72 // Static Methods.
73 static const BannerFont* getBannerFont ( const string& name );
74 // Constructor & Destructor.
75 inline BannerFont ( const string& name );
76 // Methods.
77 inline void addChar ( char character, int height, const char *lines[] );
78 inline int getHeight () const;
79 inline const BigChar& operator[] ( char character ) const;
80
81 private:
82 // Internal: FontMap subclass.
83 class FontMap : public map<const string,const BannerFont*> {
84 public:
85 FontMap ();
86 ~FontMap ();
87 const BannerFont* operator[] ( const string& name ) const;
88 };
89
90 // Internal: Types.
91 typedef map<char,BigChar*> CharMap;
92
93 // Internal: Static Attributes.
94 static FontMap _fontMap;
95 // Internal: Attributes.
96 CharMap _table;
97 string _name;
98 int _height;
99
100 // Internal: Constructors.
101 BannerFont ( const BannerFont& );
102 ~BannerFont ();
103 inline BannerFont& operator= ( const BannerFont& );
104
105 };
106
107
108
109
110// -------------------------------------------------------------------
111// Class : "CRL::Banner".
112
113
114 class Banner {
115 public:
116 // Constructor & Destructor.
117 Banner ( string name=""
118 , string version=""
119 , string purpose=""
120 , string date=""
121 , string authors=""
122 , string contributors="" );
123 virtual ~Banner ();
124 // Accessors.
125 inline const BannerFont* getFont () const;
126 inline const string& getName () const;
127 inline const string& getVersion () const;
128 inline const string& getPurpose () const;
129 inline const string& getDate () const;
130 inline const string& getAuthors () const;
131 inline const string& getContributors () const;
132 inline unsigned int getScreenWidth () const;
133 // Modifiers.
134 void setFont ( BannerFont* font );
135 void setName ( string name );
136 void setVersion ( string version );
137 void setPurpose ( string purpose );
138 void setDate ( string date );
139 void setAuthors ( string authors );
140 void setContributors ( string contributors );
141 void setScreenWidth ( unsigned screenWidth );
142 // Hurricane Management.
143 virtual const string _getPrint () const { return ( _banner.str() ); };
144
145 // Internal: Attributes.
146 private:
147 string _name;
148 string _version;
149 string _purpose;
150 string _date;
151 string _authors;
152 string _contributors;
153 unsigned int _screenWidth;
154 size_t _cartoucheWidth;
155 const BannerFont* _font;
156 string* _lines;
157 ostringstream _banner;
158
159 // Internal: Constructors.
160 Banner ( const Banner & );
161 Banner& operator= ( const Banner & );
162 // Internal: Methods.
163 void _redraw ();
164 };
165
166
167// Inline Functions.
168 inline int BannerFont::BigChar::getHeight () const { return _height; }
169 inline const BannerFont* BannerFont::BigChar::getFont () const { return _font; }
170 inline BannerFont::BannerFont ( const string& name ): _table(), _name(name) {}
171 inline int BannerFont::getHeight () const { return _height; }
172 inline const BannerFont* Banner::getFont () const { return _font; }
173 inline const string& Banner::getName () const { return _name; }
174 inline const string& Banner::getVersion () const { return _version; }
175 inline const string& Banner::getPurpose () const { return _purpose; }
176 inline const string& Banner::getDate () const { return _date; }
177 inline const string& Banner::getAuthors () const { return _authors; }
178 inline const string& Banner::getContributors () const { return _contributors; }
179 inline unsigned int Banner::getScreenWidth () const { return _screenWidth; }
180
181
182} // CRL namespace.
183
184
185// Hurricane Management.
186
187inline std::string getPrint ( const CRL::BannerFont::BigChar& c ) { return c._getPrint(); }
188inline std::string getPrint ( const CRL::Banner& b ) { return b._getPrint(); }
189inline std::ostream& operator<< ( std::ostream& o, const CRL::BannerFont::BigChar& c ) { return o << getPrint(c); }
190inline std::ostream& operator<< ( std::ostream& o, const CRL::Banner& b ) { return o << getPrint(b); }
191
192MSTREAM_R_SUPPORT(CRL::Banner);
193
194
195#endif // CRL_BANNER_H
Print Formatted Banners (on ttys).
Definition Banner.h:114
const string & getVersion() const
Definition Banner.h:174
void setAuthors(string authors)
const string & getContributors() const
Definition Banner.h:178
const string & getDate() const
Definition Banner.h:176
void setDate(string date)
const string & getName() const
Definition Banner.h:173
const string & getPurpose() const
Definition Banner.h:175
void setScreenWidth(unsigned screenWidth)
unsigned int getScreenWidth() const
Definition Banner.h:179
void setPurpose(string purpose)
Banner(string name="", string version="", string purpose="", string date="", string authors="", string contributors="")
void setVersion(string version)
const string & getAuthors() const
Definition Banner.h:177
void setName(string name)
void setContributors(string contributors)
The namespace of Coriolis Core.
Definition AcmSigda.h:28


Generated by doxygen 1.16.1 on Return to top of page
Coriolis Core (CRL) Copyright © 2008-2020 Sorbonne Universite, All rights reserved