1 | /* |
2 | This file is part of the Grantlee template system. |
3 | |
4 | Copyright (c) 2010 Stephen Kelly <steveire@gmail.com> |
5 | |
6 | This library is free software; you can redistribute it and/or |
7 | modify it under the terms of the GNU Lesser General Public |
8 | License as published by the Free Software Foundation; either version |
9 | 2.1 of the Licence, or (at your option) any later version. |
10 | |
11 | This library is distributed in the hope that it will be useful, |
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
14 | Lesser General Public License for more details. |
15 | |
16 | You should have received a copy of the GNU Lesser General Public |
17 | License along with this library. If not, see <http://www.gnu.org/licenses/>. |
18 | |
19 | */ |
20 | |
21 | #ifndef GRANTLEE_RENDERCONTEXT_H |
22 | #define GRANTLEE_RENDERCONTEXT_H |
23 | |
24 | #include "grantlee_core_export.h" |
25 | |
26 | #include <QtCore/QVariantHash> |
27 | |
28 | /// @headerfile rendercontext.h grantlee/rendercontext.h |
29 | |
30 | namespace Grantlee |
31 | { |
32 | |
33 | class ContextPrivate; |
34 | class TemplateImpl; |
35 | class Node; |
36 | |
37 | class RenderContextPrivate; |
38 | |
39 | // ### BIC Rewrite this and Context in terms of a common base class. |
40 | |
41 | /** |
42 | * @brief Provides storage facility for state while rendering a template. |
43 | * |
44 | * This class can not be instatiated by users of it. An instance of RenderContext is available |
45 | * through Context::renderContext() for use with implementations of re-entrant template tags. |
46 | */ |
47 | class GRANTLEE_CORE_EXPORT RenderContext |
48 | { |
49 | public: |
50 | /** |
51 | Returns the data for the node @p scopeNode. |
52 | */ |
53 | QVariant& data( Node * const scopeNode ); |
54 | |
55 | /** |
56 | Returns whether the RenderContext contains data for @p scopeNode. |
57 | */ |
58 | bool contains( Node * const scopeNode ) const; |
59 | |
60 | /** |
61 | Destructor |
62 | */ |
63 | ~RenderContext(); |
64 | |
65 | #ifndef Q_QDOC |
66 | private: |
67 | RenderContext(); |
68 | |
69 | void push(); |
70 | |
71 | void pop(); |
72 | |
73 | private: |
74 | friend class ContextPrivate; |
75 | friend class TemplateImpl; |
76 | |
77 | Q_DISABLE_COPY( RenderContext ) |
78 | Q_DECLARE_PRIVATE( RenderContext ) |
79 | RenderContextPrivate * const d_ptr; |
80 | #endif |
81 | }; |
82 | |
83 | } |
84 | |
85 | #endif |
86 | |