… | |
… | |
116 | |
116 | |
117 | struct object_freezethaw |
117 | struct object_freezethaw |
118 | { |
118 | { |
119 | void *av; |
119 | void *av; |
120 | FILE *fp; |
120 | FILE *fp; |
121 | |
|
|
122 | operator FILE *() { return fp; } |
|
|
123 | }; |
121 | }; |
124 | |
122 | |
125 | struct object_freezer : object_freezethaw |
123 | struct object_freezer : object_freezethaw |
126 | { |
124 | { |
127 | void *filename; |
125 | void *filename; |
… | |
… | |
134 | template<class subclass> |
132 | template<class subclass> |
135 | void put (attachable<subclass> *obj) |
133 | void put (attachable<subclass> *obj) |
136 | { |
134 | { |
137 | put ((attachable_base *)obj); |
135 | put ((attachable_base *)obj); |
138 | } |
136 | } |
|
|
137 | |
|
|
138 | operator bool () { return !!fp; } |
139 | }; |
139 | }; |
140 | |
140 | |
141 | struct object_thawer : object_freezethaw |
141 | struct object_thawer : object_freezethaw |
142 | { |
142 | { |
143 | object_thawer (const char *filename = 0); |
143 | object_thawer (const char *filename = 0); |
… | |
… | |
149 | void get (attachable<subclass> *obj, int oid) |
149 | void get (attachable<subclass> *obj, int oid) |
150 | { |
150 | { |
151 | if (av) |
151 | if (av) |
152 | get (subclass::get_dt (), (subclass *)obj, obj, oid); |
152 | get (subclass::get_dt (), (subclass *)obj, obj, oid); |
153 | } |
153 | } |
|
|
154 | |
|
|
155 | operator FILE *() { return fp; } |
154 | }; |
156 | }; |
|
|
157 | |
|
|
158 | int fprintf (object_freezer &freezer, const char *format, ...); |
|
|
159 | int fputs (const char *s, object_freezer &freezer); |
155 | |
160 | |
156 | #endif |
161 | #endif |
157 | |
162 | |