… | |
… | |
99 | attachable_base () |
99 | attachable_base () |
100 | { |
100 | { |
101 | attachable_clear (); |
101 | attachable_clear (); |
102 | } |
102 | } |
103 | |
103 | |
|
|
104 | ~attachable_base () |
|
|
105 | { |
|
|
106 | clear (); |
|
|
107 | } |
|
|
108 | |
104 | attachable_base (const attachable_base &src) |
109 | attachable_base (const attachable_base &src) |
105 | : self (0), cb (0), attach (src.attach) |
110 | : self (0), cb (0), attach (src.attach) |
106 | { |
111 | { |
107 | } |
112 | } |
108 | }; |
113 | }; |
… | |
… | |
218 | add (' '); |
223 | add (' '); |
219 | add (v); |
224 | add (v); |
220 | add ('\n'); |
225 | add ('\n'); |
221 | } |
226 | } |
222 | |
227 | |
223 | void put (keyword kbeg, keyword kend, const char *v) |
228 | void put (keyword kbeg, keyword kend, const shstr &v) |
224 | { |
229 | { |
225 | add (keyword_str [kbeg], keyword_len [kbeg]); add ('\n'); |
230 | add (keyword_str [kbeg], keyword_len [kbeg]); add ('\n'); |
226 | |
231 | |
227 | if (v) |
232 | if (v) |
228 | { |
233 | { |
… | |
… | |
246 | void put (keyword k, unsigned long long v) { put_(k, (sint64)v); } |
251 | void put (keyword k, unsigned long long v) { put_(k, (sint64)v); } |
247 | |
252 | |
248 | template<typename T> |
253 | template<typename T> |
249 | void put (keyword k, T *v) |
254 | void put (keyword k, T *v) |
250 | { |
255 | { |
|
|
256 | if (v) |
|
|
257 | put (k, v->name); |
|
|
258 | else |
251 | put (k, v ? (const char *)v->name : 0); |
259 | put (k, (const char *)0); |
252 | } |
260 | } |
253 | |
261 | |
254 | bool save (const char *filename); |
262 | bool save (const char *filename); |
255 | |
263 | |
256 | operator bool () { return !!av; } |
264 | operator bool () { return !!av; } |