file.h revision 776ca3085c44e6570813270df75278849c37d400
1#ifndef FILE_H_
2#define FILE_H_
3
4#include <stdint.h>
5
6#include <string>
7#include <vector>
8
9#include "string_pool.h"
10
11using namespace std;
12
13class AST;
14
15class Makefile {
16 public:
17  explicit Makefile(const string& filename);
18  ~Makefile();
19
20  const char* buf() const { return buf_; }
21  size_t len() const { return len_; }
22  const string& filename() const { return filename_; }
23
24  StringPool* mutable_pool() { return &pool_; }
25  const vector<AST*>& asts() const { return asts_; }
26  vector<AST*>* mutable_asts() { return &asts_; }
27
28 private:
29  char* buf_;
30  size_t len_;
31  uint64_t mtime_;
32  string filename_;
33  StringPool pool_;
34  vector<AST*> asts_;
35};
36
37#endif  // FILE_H_
38