libjmmcg
release_579_6_g8cffd
A C++ library containing an eclectic mix of useful, advanced components.
generic_app.hpp
Go to the documentation of this file.
1
/******************************************************************************
2
** Copyright © 2002 by J.M.McGuiness, coder@hussar.me.uk
3
**
4
** This library is free software; you can redistribute it and/or
5
** modify it under the terms of the GNU Lesser General Public
6
** License as published by the Free Software Foundation; either
7
** version 2.1 of the License, or (at your option) any later version.
8
**
9
** This library is distributed in the hope that it will be useful,
10
** but WITHOUT ANY WARRANTY; without even the implied warranty of
11
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
** Lesser General Public License for more details.
13
**
14
** You should have received a copy of the GNU Lesser General Public
15
** License along with this library; if not, write to the Free Software
16
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
*/
18
19
namespace
jmmcg
{
namespace
LIBJMMCG_VER_NAMESPACE
{
20
21
template
<
typename
ProgOpts,
class
Except_>
22
class
AppBase
{
23
public
:
24
typedef
ProgOpts
ProgramOptions
;
25
26
typedef
Except_
exception_type
;
27
28
typedef
Logger
<
exception_type
>
logger_type
;
29
typedef
shared_ptr
<
logger_type
,
exception_type
>
logger_ptr_type
;
30
31
inline
AppBase
(
ProgramOptions
&p,
const
logger_ptr_type
&l)
32
:
prog_opts
(p), logger(l) {
33
assert(logger);
34
}
35
AppBase
(
AppBase
const
&)=
delete
;
36
virtual
inline
~
AppBase
(
void
) {
37
}
38
39
virtual
inline
exit_codes
Process
(
tostream
&)=0;
40
41
protected
:
42
ProgramOptions
&
prog_opts
;
43
44
inline
const
logger_type
&
Log
(
void
)
const
noexcept
(
true
) {
45
assert(logger);
46
return
*logger;
47
}
48
49
private
:
50
const
shared_ptr
<
const
logger_type
,
exception_type
> logger;
51
};
52
53
} }
core
generic_app.hpp
Generated on Tue May 11 2021 17:19:00 for libjmmcg by
1.9.2