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