| // 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 |
| |
| #ifdef __cplusplus |
| #define restrict /*restrict*/ |
| #endif |
| |
| typedef struct _FILE FILE; |
| extern FILE *stdin; |
| extern FILE *stdout; |
| extern FILE *stderr; |
| // Include a variant of standard streams that occur in the pre-processed file. |
| extern FILE *__stdinp; |
| extern FILE *__stdoutp; |
| extern FILE *__stderrp; |
| |
| int scanf(const char *restrict format, ...); |
| int fscanf(FILE *restrict, const char *restrict, ...); |
| int printf(const char *restrict format, ...); |
| int fprintf(FILE *restrict, const char *restrict, ...); |
| int getchar(void); |
| |
| // Note, on some platforms errno macro gets replaced with a function call. |
| extern int errno; |
| |
| typedef __typeof(sizeof(int)) size_t; |
| |
| size_t strlen(const char *); |
| |
| char *strcpy(char *restrict, const char *restrict); |
| void *memcpy(void *dst, const void *src, size_t n); |
| |
| typedef unsigned long __darwin_pthread_key_t; |
| typedef __darwin_pthread_key_t pthread_key_t; |
| int pthread_setspecific(pthread_key_t, const void *); |
| |
| typedef long long __int64_t; |
| typedef __int64_t __darwin_off_t; |
| typedef __darwin_off_t fpos_t; |
| |
| void setbuf(FILE * restrict, char * restrict); |
| int setvbuf(FILE * restrict, char * restrict, int, size_t); |
| |
| FILE *fopen(const char * restrict, const char * restrict); |
| int fclose(FILE *); |
| FILE *funopen(const void *, |
| int (*)(void *, char *, int), |
| int (*)(void *, const char *, int), |
| fpos_t (*)(void *, fpos_t, int), |
| int (*)(void *)); |
| |
| int sqlite3_bind_text_my(int, const char*, int n, void(*)(void*)); |
| |
| typedef void (*freeCallback) (void*); |
| typedef struct { |
| int i; |
| freeCallback fc; |
| } StWithCallback; |
| |
| int dealocateMemWhenDoneByVal(void*, StWithCallback); |
| int dealocateMemWhenDoneByRef(StWithCallback*, const void*); |
| |
| typedef struct CGContext *CGContextRef; |
| CGContextRef CGBitmapContextCreate(void *data/*, size_t width, size_t height, |
| size_t bitsPerComponent, size_t bytesPerRow, |
| CGColorSpaceRef space, |
| CGBitmapInfo bitmapInfo*/); |
| void *CGBitmapContextGetData(CGContextRef context); |
| |
| // Include xpc. |
| typedef struct _xpc_connection_s * xpc_connection_t; |
| typedef void (*xpc_finalizer_t)(void *value); |
| void xpc_connection_set_context(xpc_connection_t connection, void *context); |
| void xpc_connection_set_finalizer_f(xpc_connection_t connection, xpc_finalizer_t finalizer); |
| void xpc_connection_resume(xpc_connection_t connection); |
| |
| //The following are fake system header functions for generic testing. |
| void fakeSystemHeaderCallInt(int *); |
| void fakeSystemHeaderCallIntPtr(int **); |
| |
| // Some data strauctures may hold onto the pointer and free it later. |
| void fake_insque(void *, void *); |
| typedef struct fake_rb_tree { void *opaque[8]; } fake_rb_tree_t; |
| void fake_rb_tree_init(fake_rb_tree_t *, const void *); |
| void *fake_rb_tree_insert_node(fake_rb_tree_t *, void *); |
| |
| typedef struct __SomeStruct { |
| char * p; |
| } SomeStruct; |
| void fakeSystemHeaderCall(SomeStruct *); |
| |
| typedef int pid_t; |
| pid_t fork(void); |
| pid_t vfork(void); |
| int execl(const char *path, const char *arg, ...); |
| |
| void exit(int status) __attribute__ ((__noreturn__)); |
| void _exit(int status) __attribute__ ((__noreturn__)); |
| void _Exit(int status) __attribute__ ((__noreturn__)); |
| |
| #define UINT32_MAX 4294967295U |
| #define INT64_MIN (-INT64_MAX-1) |
| #define __DBL_MAX__ 1.7976931348623157e+308 |
| #define DBL_MAX __DBL_MAX__ |
| #ifndef NULL |
| #define __DARWIN_NULL 0 |
| #define NULL __DARWIN_NULL |
| #endif |