Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alexbevi
GitHub Repository: alexbevi/BizHawk
Path: blob/master/lynx/newstate.cpp
2 views
1
#include "newstate.h"
2
#include <cstring>
3
#include <algorithm>
4
5
NewStateDummy::NewStateDummy()
6
:length(0)
7
{
8
}
9
void NewStateDummy::Save(const void *ptr, size_t size, const char *name)
10
{
11
length += size;
12
}
13
void NewStateDummy::Load(void *ptr, size_t size, const char *name)
14
{
15
}
16
17
NewStateExternalBuffer::NewStateExternalBuffer(char *buffer, long maxlength)
18
:buffer(buffer), length(0), maxlength(maxlength)
19
{
20
}
21
22
void NewStateExternalBuffer::Save(const void *ptr, size_t size, const char *name)
23
{
24
if (maxlength - length >= (long)size)
25
{
26
std::memcpy(buffer + length, ptr, size);
27
}
28
length += size;
29
}
30
31
void NewStateExternalBuffer::Load(void *ptr, size_t size, const char *name)
32
{
33
char *dst = static_cast<char *>(ptr);
34
if (maxlength - length >= (long)size)
35
{
36
std::memcpy(dst, buffer + length, size);
37
}
38
length += size;
39
}
40
41
NewStateExternalFunctions::NewStateExternalFunctions(const FPtrs *ff)
42
:Save_(ff->Save_),
43
Load_(ff->Load_),
44
EnterSection_(ff->EnterSection_),
45
ExitSection_(ff->ExitSection_)
46
{
47
}
48
49
void NewStateExternalFunctions::Save(const void *ptr, size_t size, const char *name)
50
{
51
Save_(ptr, size, name);
52
}
53
void NewStateExternalFunctions::Load(void *ptr, size_t size, const char *name)
54
{
55
Load_(ptr, size, name);
56
}
57
void NewStateExternalFunctions::EnterSection(const char *name)
58
{
59
EnterSection_(name);
60
}
61
void NewStateExternalFunctions::ExitSection(const char *name)
62
{
63
ExitSection_(name);
64
}
65
66