]> git.llucax.com Git - software/bife/bife++.git/blob - chit.h
Added a fallback implementation.
[software/bife/bife++.git] / chit.h
1 // vim: set expandtab tabstop=4 shiftwidth=4:
2
3 #ifndef BIFE_CHIT_H
4 #define BIFE_CHIT_H
5
6 #include "ghit.h"
7 #include "hash.h"
8 #include <string>
9
10 namespace bife {
11
12     using std::string;
13
14     /**
15      * Cache enabled GHIT.
16      *
17      * GHIT with cache capabilities added. The templates are stored in memory once
18      * they are readed and reused in succesive parse() calls, avoiding disc reads
19      * overhead.
20      *
21      * @todo See if it's really usefull, since the OS is supposed to be in charge
22      *       of disc cache.
23      */
24     class CHIT: public GHIT {
25         // Attributes.
26         protected:
27             /// Cache storage.
28             Hash cache;
29
30         // Methods.
31         protected:
32             /**
33              * Gets cached file content.
34              *
35              * @param  filename Name of the file to get the content.
36              * @return File content.
37              */
38             virtual string getFileContent(const string&);
39
40         public:
41             /**
42              * Constructor.
43              *
44              * @param root    Root directory from where to get the templates.
45              * @param postfix Postfix of the template files.
46              * @param group   Starting group.
47              */
48             CHIT(const string& = string("."), const string& = string(".tpl"),
49                     const string& = string(""));
50
51             /**
52              * Destructor.
53              */
54             virtual ~CHIT(void);
55     };
56
57 }
58
59 #endif