This is GSArchiver.m in view mode; [Download] [Up]
/* from * (Preliminary Documentation) Copyright (c) 1994 by NeXT Computer, Inc. * All Rights Reserved. * * part of Foundation Kit * * a NSArchiver for GNU archiving * */ #include "GSArchiver.h" #include <Foundation/NSString.h> #include <gnuarchive/objc/typedstream.h> id NXActive_Archiver; @implementation GSArchiver // Private methods not declared in interface - (BOOL)_initForWritingToFile:(NSString *)path { const char *filename = [path cString]; stream = objc_open_typed_stream_for_file(filename, OBJC_WRITEONLY ); if ( stream == NULL ) { return NO; } NXActive_Archiver = self; return YES; } - _finishWriting { objc_flush_typed_stream(stream); objc_close_typed_stream(stream); NXActive_Archiver = nil; return self; } - (BOOL) _initForWritingRootObject:(id)rootObject toFile:(NSString *)path { [self _initForWritingToFile:path]; [super encodeRootObject:rootObject]; [self _finishWriting]; return YES; } // Initializing an NSArchiver // - (id)initForWritingWithMutableData:(NSMutableData *)mdata // Archiving data // + (NSData *)archivedDataWithRootObject:(id)rootObject + (BOOL)archiveRootObject:(id)rootObject toFile:(NSString *)path { return [[self alloc] _initForWritingRootObject:rootObject toFile:path]; } - initForWritingToFile:(NSString *)path { [self _initForWritingToFile:path]; return self; } - finishWriting { [self _finishWriting]; return self; } // - (void)encodeArrayOfObjCType:(const char *)type // count:(unsigned int)count // at:(const void *)array // Note: done by superclass // - (void)encodeConditionalObject:(id)object // Note: done by superclass // - (void)encodeRootObject:(id)rootObject // Note: done by superclass // Getting data from the archiver // - (NSMutableData *)archiverData; // Substituting One Class for Another // + (NSString *)classNameEncodedForTrueClassName:(NSString *)trueName; // - (void)encodeClassName:(NSString *)trueName // intoClassName:(NSString *)inArchiveName; @end @implementation GSUnarchiver - (id) _initForReadingObjectFromFile:(NSString *)path { id object; const char *filename = [path cString]; stream = objc_open_typed_stream_for_file( filename, NX_READONLY ); NXActive_Archiver = self; object = [self decodeObject]; NXActive_Archiver = nil; return object; } - initForReadingWithStream:(NXStream *)untypedstream { stream = objc_open_typed_stream((FILE *)untypedstream, NX_READONLY); NXActive_Archiver = self; return self; } - initForReadingFromFile:(char *)filename { stream = objc_open_typed_stream_for_file(filename, NX_READONLY); NXActive_Archiver = self; return self; } - free { objc_close_typed_stream(stream); NXActive_Archiver = nil; [super free]; return self; } - (void)setObjectZone:(NSZone *)zone { return; } + (id)unarchiveObjectWithFile:(NSString *)path; { return [[ self alloc] _initForReadingObjectFromFile:path]; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.