-
Notifications
You must be signed in to change notification settings - Fork 1
/
archiver.h
141 lines (116 loc) · 2.98 KB
/
archiver.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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
// -*- mode:c++ -*-
/*
* ici object serialization
*
* Copyright (C) 1995 A. Newman
*/
#ifndef ICI_ARCHIVE_H
#define ICI_ARCHIVE_H
#include "file.h"
#include "object.h"
namespace ici
{
int archive_init();
void archive_uninit();
int f_archive_save(...);
int f_archive_restore(...);
// HACK - endianess support needs re-think
#if defined(__i386__) || defined(__x86_64__)
#define ICI_ARCHIVE_LITTLE_ENDIAN_HOST 1
#endif
/*
* The top bit of the tcode is set when the object is atomic. This of
* course limits archiving to 128 distinct types.
*/
constexpr int O_ARCHIVE_ATOMIC = 0x80;
/*
* The following portion of this file exports to ici.h. --ici.h-start--
*/
/*
* An archiver holds the /state/ used when saving or restoring an object graph.
*/
class archiver
{
public:
static int op_func_code(int (*fn)());
static int (*op_func(int))();
/**
* Constructs an archiver that will use the given file and scope.
*
* If saving the file must be