… | |
… | |
498 | int fputs (const char *s, object_freezer &freezer) |
498 | int fputs (const char *s, object_freezer &freezer) |
499 | { |
499 | { |
500 | freezer.add (s); |
500 | freezer.add (s); |
501 | } |
501 | } |
502 | |
502 | |
|
|
503 | static const char thawer_eof[] = "\n\n\n\0\0\0"; |
|
|
504 | |
503 | object_thawer::object_thawer (const char *filename) |
505 | object_thawer::object_thawer (const char *filename) |
504 | { |
506 | { |
505 | static const char eof[] = "\n\n\n\0\0\0"; |
507 | static const char eof[] = "\n\n\n\0\0\0"; |
506 | |
508 | |
507 | av = 0; |
509 | av = 0; |
… | |
… | |
544 | |
546 | |
545 | PUTBACK; |
547 | PUTBACK; |
546 | FREETMPS; |
548 | FREETMPS; |
547 | LEAVE; |
549 | LEAVE; |
548 | } |
550 | } |
|
|
551 | } |
|
|
552 | |
|
|
553 | object_thawer::object_thawer (const char *data, AV *perlav) |
|
|
554 | { |
|
|
555 | av = perlav; |
|
|
556 | text = newSVpv (data, 0); |
|
|
557 | sv_catpv (text, thawer_eof); |
|
|
558 | line = SvPVbyte_nolen (text); |
549 | } |
559 | } |
550 | |
560 | |
551 | void object_thawer::get (data_type type, void *obj, attachable_base *ext, int oid) |
561 | void object_thawer::get (data_type type, void *obj, attachable_base *ext, int oid) |
552 | { |
562 | { |
553 | if (!av || oid < 0) // this is actually an error of sorts |
563 | if (!av || oid < 0) // this is actually an error of sorts |