OpenWalnut
1.2.5
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
All
Classes
Namespaces
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Groups
Pages
src
core
common
WPrototyped.h
1
//---------------------------------------------------------------------------
2
//
3
// Project: OpenWalnut ( http://www.openwalnut.org )
4
//
5
// Copyright 2009 OpenWalnut Community, BSV@Uni-Leipzig and CNCF@MPI-CBS
6
// For more information see http://www.openwalnut.org/copying
7
//
8
// This file is part of OpenWalnut.
9
//
10
// OpenWalnut is free software: you can redistribute it and/or modify
11
// it under the terms of the GNU Lesser General Public License as published by
12
// the Free Software Foundation, either version 3 of the License, or
13
// (at your option) any later version.
14
//
15
// OpenWalnut is distributed in the hope that it will be useful,
16
// but WITHOUT ANY WARRANTY; without even the implied warranty of
17
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
// GNU Lesser General Public License for more details.
19
//
20
// You should have received a copy of the GNU Lesser General Public License
21
// along with OpenWalnut. If not, see <http://www.gnu.org/licenses/>.
22
//
23
//---------------------------------------------------------------------------
24
25
#ifndef WPROTOTYPED_H
26
#define WPROTOTYPED_H
27
28
#include <string>
29
30
#include <boost/shared_ptr.hpp>
31
32
#include "WExportCommon.h"
33
34
/**
35
* Interface class for the concept "Prototype". The requirements are a zero-parameter constructor.
36
*/
37
class
OWCOMMON_EXPORT
WPrototyped
// NOLINT
38
{
39
public
:
40
41
/**
42
* Default constructor. Creates a instance of the class. This not necessarily mean that the instance is fully usable. This is
43
* required for type checking and inheritance checking.
44
*/
45
WPrototyped
();
46
47
/**
48
* Destructor.
49
*/
50
virtual
~
WPrototyped
();
51
52
/**
53
* Gets the name of this prototype.
54
*
55
* \return the name.
56
*/
57
virtual
const
std::string getName()
const
= 0;
58
59
/**
60
* Gets the description for this prototype.
61
*
62
* \return the description
63
*/
64
virtual
const
std::string getDescription()
const
= 0;
65
66
/**
67
* Checks whether the actual prototype has the specified runtime type.
68
*
69
* \return true if you can safely cast this instance to the specified type.
70
*/
71
template
<
typename
T >
bool
isA();
72
73
protected
:
74
private
:
75
};
76
77
template
<
typename
T >
78
bool
WPrototyped::isA
()
79
{
80
return
dynamic_cast<
T*
>
( this );
81
}
82
83
#endif // WPROTOTYPED_H
84
Generated by
1.8.1.2