-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSCMem.h
78 lines (66 loc) · 3.33 KB
/
SCMem.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/*------------------------------------------------------------------------------+
| |
| SCL - Simulation Class Library |
| |
| (c) 1994-98 Marc Diefenbruch, Wolfgang Textor |
| University of Essen, Germany |
| |
+---------------+-------------------+---------------+-------------------+-------+
| Module | File | Created | Project | |
+---------------+-------------------+---------------+-------------------+-------+
| SCMem | SCMem.h | 10. Mar 1996 | SCL | |
+---------------+-------------------+---------------+-------------------+-------+
| |
| Change Log |
| |
| Nr. Date Description |
| ----- -------- ------------------------------------------------------- |
| 001 |
| 000 09.08.94 Neu angelegt |
| |
+------------------------------------------------------------------------------*/
/* Lineal
000000000011111111112222222222333333333344444444445555555555666666666677777777778
012345678901234567890123456789012345678901234567890123456789012345678901234567890
*/
#ifndef __SCMEM__
#define __SCMEM__
#include "SCBasicTypes.h"
class SCMem
{
public:
SCMem(const SCSize &pSize);
~SCMem(void);
public:
size_t GetOffset (void) const;
size_t GetHistoryOffset (void) const;
void SetOffset (size_t new_offset);
void SetHistoryOffset (size_t new_offset);
void SkipOffset (size_t new_offset);
void SkipHistoryOffset (size_t new_offset);
void *GetSaveArea(void) const;
void *GetHistoryArea(void) const;
size_t GetSize(void) const;
size_t GetHistorySize(void) const;
void Store(const void *const address, size_t size);
void Restore(const void *const address, size_t size);
void HistoryStore(const void *const address, size_t size);
void HistoryRestore(const void *const address, size_t size);
void Append(SCMem &source,
size_t source_offset, size_t source_length,
size_t source_hist_offset, size_t source_hist_length);
SCBoolean operator== (const SCMem & second) const;
SCBoolean operator!= (const SCMem & second) const;
private:
// void *save_area;
char *save_area;
// void *hist_area;
char *hist_area;
size_t save_area_size;
size_t hist_area_size;
size_t offset;
size_t hist_offset;
friend class SCHashTable; // Improves performance!
};
class SCStream & operator<< (class SCStream& pStream, const SCMem& pData);
#endif // __SCBASICTYPES__