system-header-simulator-cxx.h revision 1b22cec353bc6112653d50b060a1d78d70c51527
1#pragma clang system_header
2
3namespace std {
4  template <class T1, class T2>
5  struct pair {
6    T1 first;
7    T2 second;
8
9    pair() : first(), second() {}
10    pair(const T1 &a, const T2 &b) : first(a), second(b) {}
11
12    template<class U1, class U2>
13    pair(const pair<U1, U2> &other) : first(other.first), second(other.second) {}
14  };
15
16  typedef __typeof__(sizeof(int)) size_t;
17
18  template<typename T>
19  class vector {
20    T *_start;
21    T *_finish;
22    T *_end_of_storage;
23  public:
24    vector() : _start(0), _finish(0), _end_of_storage(0) {}
25    ~vector();
26
27    size_t size() const {
28      return size_t(_finish - _start);
29    }
30
31    void push_back();
32    T pop_back();
33
34    T &operator[](size_t n) {
35      return _start[n];
36    }
37
38    const T &operator[](size_t n) const {
39      return _start[n];
40    }
41
42    T *begin() { return _start; }
43    const T *begin() const { return _start; }
44
45    T *end() { return _finish; }
46    const T *end() const { return _finish; }
47  };
48
49  class exception {
50  public:
51    exception() throw();
52    virtual ~exception() throw();
53    virtual const char *what() const throw() {
54      return 0;
55    }
56  };
57}
58