Moves Annotable-related classes to dynutils dir. Note that only header
[dyninst.git] / dynutil / h / dyntypes.h
1
2 #if !defined(DYNTYPES_H)
3 #define DYNTYPES_H
4
5 #if defined(_MSC_VER)
6 #define WIN32_LEAN_AND_MEAN
7 #include <windows.h>
8 #endif
9
10 #ifndef FILE__
11 #define FILE__ strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__
12 #endif
13
14 #if defined (os_windows)
15 #include <hash_map>
16 using stdext::hash_map;
17 #else
18 #include <ext/hash_map>
19 #include <ext/hash_set>
20 using namespace __gnu_cxx;
21 namespace __gnu_cxx {
22    template<> struct hash<std::string> {
23       hash<char*> h;
24       unsigned operator()(const std::string &s) const {
25          return h(s.c_str());
26       };
27    };
28 };
29
30 #endif
31
32 namespace Dyninst
33 {
34    typedef unsigned long Address;   
35    typedef unsigned long Offset;
36
37 #if defined(_MSC_VER)
38    typedef HANDLE PID;
39    typedef HANDLE LWP;
40    typedef HANDLE TID;
41
42 #define NULL_PID     INVALID_HANDLE_VALUE
43 #define NULL_LWP     INVALID_HANDLE_VALUE
44 #define NULL_TID     INVALID_HANDLE_VALUE
45
46 #else
47    typedef int PID;
48    typedef int LWP;
49    typedef int TRID;
50
51 #define NULL_PID     -1
52 #define NULL_LWP     -1
53 #define NULL_TRID     -1
54 #endif
55 }
56
57 #endif