forked from OSchip/llvm-project
63 lines
1.5 KiB
C++
63 lines
1.5 KiB
C++
// Like the compiler, the static analyzer treats some functions differently if
|
|
// they come from a system header -- for example, it is assumed that system
|
|
// functions do not arbitrarily free() their parameters, and that some bugs
|
|
// found in system headers cannot be fixed by the user and should be
|
|
// suppressed.
|
|
#pragma clang system_header
|
|
|
|
namespace std {
|
|
template <class T1, class T2>
|
|
struct pair {
|
|
T1 first;
|
|
T2 second;
|
|
|
|
pair() : first(), second() {}
|
|
pair(const T1 &a, const T2 &b) : first(a), second(b) {}
|
|
|
|
template<class U1, class U2>
|
|
pair(const pair<U1, U2> &other) : first(other.first), second(other.second) {}
|
|
};
|
|
|
|
typedef __typeof__(sizeof(int)) size_t;
|
|
|
|
template<typename T>
|
|
class vector {
|
|
T *_start;
|
|
T *_finish;
|
|
T *_end_of_storage;
|
|
public:
|
|
vector() : _start(0), _finish(0), _end_of_storage(0) {}
|
|
~vector();
|
|
|
|
size_t size() const {
|
|
return size_t(_finish - _start);
|
|
}
|
|
|
|
void push_back();
|
|
T pop_back();
|
|
|
|
T &operator[](size_t n) {
|
|
return _start[n];
|
|
}
|
|
|
|
const T &operator[](size_t n) const {
|
|
return _start[n];
|
|
}
|
|
|
|
T *begin() { return _start; }
|
|
const T *begin() const { return _start; }
|
|
|
|
T *end() { return _finish; }
|
|
const T *end() const { return _finish; }
|
|
};
|
|
|
|
class exception {
|
|
public:
|
|
exception() throw();
|
|
virtual ~exception() throw();
|
|
virtual const char *what() const throw() {
|
|
return 0;
|
|
}
|
|
};
|
|
}
|