1 /* 2 This file is part of the Grantlee template system. 3 4 Copyright (c) 2009,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 BLOCKNODE_H 22 #define BLOCKNODE_H 23 24 #include "node.h" 25 26 namespace Grantlee 27 { 28 class Parser; 29 } 30 31 using namespace Grantlee; 32 33 class BlockNodeFactory : public AbstractNodeFactory 34 { 35 Q_OBJECT 36 public: 37 explicit BlockNodeFactory(QObject *parent = {}); 38 39 Node *getNode(const QString &tagContent, Parser *p) const override; 40 }; 41 42 class BlockNode : public Node 43 { 44 Q_OBJECT 45 Q_PROPERTY(Grantlee::SafeString super READ getSuper) 46 public: 47 BlockNode(const QString &blockName, QObject *parent = {}); 48 ~BlockNode() override; 49 50 void setNodeList(const NodeList &list) const; 51 52 void render(OutputStream *stream, Context *c) const override; 53 54 BlockNode *takeNodeParent(); 55 56 QString name() const; 57 58 void setNodeParent(BlockNode *); 59 60 void addParent(NodeList); 61 62 NodeList nodeList() const; 63 64 // Q_SLOTS 65 /** 66 Returns the block overridden by this one rendered in context. 67 */ 68 SafeString getSuper() const; 69 70 private: 71 const QString m_name; 72 mutable NodeList m_list; 73 mutable Context *m_context; 74 mutable OutputStream *m_stream; 75 }; 76 77 #endif 78