• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Like the compiler, the static analyzer treats some functions differently if
2 // they come from a system header -- for example, it is assumed that system
3 // functions do not arbitrarily free() their parameters, and that some bugs
4 // found in system headers cannot be fixed by the user and should be
5 // suppressed.
6 #pragma clang system_header
7 
8 namespace std {
9   template <class T1, class T2>
10   struct pair {
11     T1 first;
12     T2 second;
13 
pairpair14     pair() : first(), second() {}
pairpair15     pair(const T1 &a, const T2 &b) : first(a), second(b) {}
16 
17     template<class U1, class U2>
pairpair18     pair(const pair<U1, U2> &other) : first(other.first), second(other.second) {}
19   };
20 
21   typedef __typeof__(sizeof(int)) size_t;
22 
23   template<typename T>
24   class vector {
25     T *_start;
26     T *_finish;
27     T *_end_of_storage;
28   public:
vector()29     vector() : _start(0), _finish(0), _end_of_storage(0) {}
30     ~vector();
31 
size()32     size_t size() const {
33       return size_t(_finish - _start);
34     }
35 
36     void push_back();
37     T pop_back();
38 
39     T &operator[](size_t n) {
40       return _start[n];
41     }
42 
43     const T &operator[](size_t n) const {
44       return _start[n];
45     }
46 
begin()47     T *begin() { return _start; }
begin()48     const T *begin() const { return _start; }
49 
end()50     T *end() { return _finish; }
end()51     const T *end() const { return _finish; }
52   };
53 
54   class exception {
55   public:
56     exception() throw();
57     virtual ~exception() throw();
what()58     virtual const char *what() const throw() {
59       return 0;
60     }
61   };
62 }
63