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