1 #ifndef COVERAGE_MANAGER_H_
\r
2 #define COVERAGE_MANAGER_H_
\r
8 class CoverageManager
\r
11 static HANDLE _hMemory;
\r
12 static char *_memory;
\r
14 static bool initialize(int nameNumberHigh, int nameNumberLow, int size) {
\r
16 sprintf(name, "%d-%d-%d", nameNumberHigh, nameNumberLow, size);
\r
18 _hMemory = CreateFileMapping(
\r
19 (HANDLE)-1, //
\83t
\83@
\83C
\83\8b\82Ì
\83n
\83\93\83h
\83\8b(0xFFFFFFFF
\82¾
\82Æ
\83t
\83@
\83C
\83\8b\82ð
\90¶
\90¬
\82µ
\82È
\82¢)
\r
20 NULL, //
\83Z
\83L
\83\85\83\8a\83e
\83B
\r
21 PAGE_READWRITE, //
\95Û
\8cì
\r
22 0, //
\83T
\83C
\83Y
\82ð
\95\
\82·
\8fã
\88Ê DWORD
\r
23 size, //
\83T
\83C
\83Y
\82ð
\95\
\82·
\89º
\88Ê DWORD
\r
24 name); //
\83I
\83u
\83W
\83F
\83N
\83g
\96¼
\81i
\8e¯
\95Ê
\8eq
\81j
\r
25 if (GetLastError() == ERROR_ALREADY_EXISTS) {
\r
26 _hMemory = OpenFileMapping(
\r
27 FILE_MAP_ALL_ACCESS, //
\83A
\83N
\83Z
\83X
\83\82\81[
\83h
\r
28 FALSE, //
\8cp
\8f³
\83t
\83\89\83O
\81i
\8eq
\83v
\83\8d\83Z
\83X
\82É
\8cp
\8f³
\82·
\82é
\82©
\94Û
\82©
\81j
\r
29 name); //
\83I
\83u
\83W
\83F
\83N
\83g
\96¼
\81i
\8e¯
\95Ê
\8eq
\81j
\r
31 if (_hMemory == NULL)
\r
34 _memory = (char*)MapViewOfFile(
\r
35 _hMemory, //
\83t
\83@
\83C
\83\8b\83}
\83b
\83s
\83\93\83O
\83I
\83u
\83W
\83F
\83N
\83g
\82Ì
\83n
\83\93\83h
\83\8b\r
36 FILE_MAP_ALL_ACCESS, //
\83A
\83N
\83Z
\83X
\83\82\81[
\83h
\r
37 0, //
\83I
\83t
\83Z
\83b
\83g
\82Ì
\8fã
\88Ê DWORD
\r
38 0, //
\83I
\83t
\83Z
\83b
\83g
\82Ì
\89º
\88Ê DWORD
\r
39 0); //
\83}
\83b
\83v
\91Î
\8fÛ
\82Ì
\83o
\83C
\83g
\90\94\r
40 if (_memory == NULL)
\r
45 static void write(int nameNumberHigh, int nameNumberLow, int size, int id, char value) {
\r
46 if (_memory == NULL && initialize(nameNumberHigh, nameNumberLow, size) == false) {
\r
49 _memory[id] |= value;
\r
53 static int read(int nameNumberHigh, int nameNumberLow, int size, int id) {
\r
54 if (_memory == NULL && initialize(nameNumberHigh, nameNumberLow, size) == false) {
\r
60 static bool branch(int nameNumberHigh, int nameNumberLow, int size, int id, bool value) {
\r
61 write(nameNumberHigh, nameNumberLow, size, id, value ? 1 : 2);
\r
65 static void statement(int nameNumberHigh, int nameNumberLow, int size, int id) {
\r
66 write(nameNumberHigh, nameNumberLow, size, id, 3);
\r
70 extern int read(int nameNumberHigh, int nameNumberLow, int size, int id);
\r
71 extern bool branch(int nameNumberHigh, int nameNumberLow, int size, int id, bool value);
\r
72 extern void statement(int nameNumberHigh, int nameNumberLow, int size, int id);
\r
74 #endif //COVERAGE_MANAGER_H_
\r