just a bug
[swift-upb.git] / compat.h
1 /*
2  *  compat.h
3  *  compatibility wrappers
4  *
5  *  Created by Arno Bakker, Victor Grishchenko
6  *  Copyright 2009 Delft University of Technology. All rights reserved.
7  *
8  */
9 #ifndef SWIFT_COMPAT_H
10 #define SWIFT_COMPAT_H
11
12 #ifdef _MSC_VER
13 typedef unsigned char uint8_t;
14 typedef signed char int8_t;
15 typedef unsigned short uint16_t;
16 typedef short int16_t;
17 typedef unsigned int uint32_t;
18 typedef int int32_t;
19 typedef __int64 int64_t;
20 typedef unsigned __int64 uint64_t;
21 #else
22 #include <stdint.h>
23 #endif
24
25 #ifdef _WIN32
26 #include <winsock2.h>
27 #include <sys/stat.h>
28 #include <io.h>
29 #else
30 #include <sys/mman.h>
31 #endif
32
33 #include <fcntl.h>
34 #include <cstdio>
35 #include <cstdlib>
36 #include <string>
37
38 #ifdef _MSC_VER
39 #include "getopt_win.h"
40 #else
41 #include <getopt.h>
42 #endif
43
44 #ifdef _WIN32
45 #define open(a,b,c)    _open(a,b,c)
46 #endif
47 #ifndef S_IRUSR
48 #define S_IRUSR _S_IREAD
49 #endif
50 #ifndef S_IWUSR
51 #define S_IWUSR _S_IWRITE
52 #endif
53 #ifndef S_IRGRP
54 #define S_IRGRP _S_IREAD
55 #endif
56 #ifndef S_IROTH
57 #define S_IROTH _S_IREAD
58 #endif
59
60 namespace swift {
61
62 /** tint is the time integer type; microsecond-precise. */
63 typedef int64_t tint;
64 #define TINT_HOUR ((tint)1000000*60*60)
65 #define TINT_MIN ((tint)1000000*60)
66 #define TINT_SEC ((tint)1000000)
67 #define TINT_MSEC ((tint)1000)
68 #define TINT_uSEC ((tint)1)
69 #define TINT_NEVER ((tint)0x3fffffffffffffffLL)
70
71
72 size_t  file_size (int fd);
73
74 int     file_seek (int fd, size_t offset);
75
76 int     file_resize (int fd, size_t new_size);
77
78 void*   memory_map (int fd, size_t size=0);
79 void    memory_unmap (int fd, void*, size_t size);
80
81 void    print_error (const char* msg);
82
83 #ifdef _WIN32
84
85 /** UNIX pread approximation. Does change file pointer. Is not thread-safe */
86 size_t  pread(int fildes, void *buf, size_t nbyte, long offset);
87
88 /** UNIX pwrite approximation. Does change file pointer. Is not thread-safe */
89 size_t  pwrite(int fildes, const void *buf, size_t nbyte, long offset);
90
91 int     inet_aton(const char *cp, struct in_addr *inp);
92
93 #endif
94
95 std::string gettmpdir(void);
96
97 tint    usec_time ();
98
99 };
100
101 #endif
102