]> git.llucax.com Git - software/bife/bife++.git/blob - ghit.h
32900a6bc96864a7c3d7bc4bcb0fa6afc69cce4b
[software/bife/bife++.git] / ghit.h
1 // vim: set expandtab tabstop=4 shiftwidth=4:
2
3 #ifndef BIFE_GHIT_H
4 #define BIFE_GHIT_H
5
6 #include "hit.h"
7 #include <stack>
8 #include <string>
9
10 using std::string;
11
12 /**
13  * Group enabled HIT.
14  *
15  * HIT template with groups of templates added. You can specify a template
16  * group. The group is used as a subdirectory in root template directory, so you
17  * can group templates together. The default group ('') templates are stored in
18  * the root directory.
19  */
20 class GHIT: public HIT {
21     // Typedefs.
22     protected:
23         /// Group stack.
24         typedef std::stack<string> GroupStack;
25
26     // Attributes.
27     protected:
28         /// Group stack.
29         GroupStack group;
30
31     // Methods.
32     protected:
33         /**
34          * Gets file name based on the blockname and the group.
35          *
36          * @param  blockname Name of the block to get the filename.
37          * @return Block's filename.
38          */
39         virtual string getFileName(string);
40
41     public:
42         /**
43          * Constructor.
44          *
45          * @param root    Root directory from where to get the templates.
46          * @param postfix Postfix of the template files.
47          * @param group   Starting group.
48          */
49         GHIT(string = string("."), string = string(".tpl"), string = string(""));
50
51         /**
52          * Destructor.
53          */
54         virtual ~GHIT(void);
55
56         /**
57          * Starts working with a new group of templates.
58          *
59          * @param group Group of templates to work with.
60          */
61         virtual void pushGroup(string);
62
63         /**
64          * Stops working with a group of templates.
65          *
66          * @return Last template's group used.
67          */
68         virtual string popGroup(void);
69
70         /**
71          * Gets the current working group.
72          *
73          * @return Current template's group.
74          */
75         virtual string getGroup(void);
76 };
77
78 #endif