|
From: Martin R. <ru...@us...> - 2004-08-13 21:38:13
|
Update of /cvsroot/foo/foo/libfoo/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18143 Modified Files: FOOBreakpointFunction.m FOOBufferManager.m FOOContext.m FOOContextPart.m FOOEagerModule.m FOOEagerModuleManager.m FOOGlobalsManager.m FOOModule.m FOOModuleManager.m FOOObjectManager.m FOOOutput.m FOOOutputManager.m FOORegion.m FOOSoundFile.m FOOSoundStream.m FOOSubstrate.m FOOSubstrateManager.m Log Message: added archiving methods Index: FOOSubstrateManager.m =================================================================== RCS file: /cvsroot/foo/foo/libfoo/src/FOOSubstrateManager.m,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** FOOSubstrateManager.m 4 Aug 2004 06:16:41 -0000 1.2 --- FOOSubstrateManager.m 13 Aug 2004 21:38:01 -0000 1.3 *************** *** 38,41 **** --- 38,43 ---- #include "FOO/FOOSubstrate.h" + #import <Foundation/NSKeyedArchiver.h> + @implementation FOOSubstrateManager *************** *** 54,56 **** --- 56,78 ---- } + + /* + * archiving methods + */ + + - (void) encodeWithCoder: (NSCoder *)coder + { + [super encodeWithCoder: coder]; + + return; + } + + + - (FOOSubstrateManager *) initWithCoder: (NSCoder *)coder + { + self = [super initWithCoder: coder]; + + return self; + } + @end Index: FOORegion.m =================================================================== RCS file: /cvsroot/foo/foo/libfoo/src/FOORegion.m,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** FOORegion.m 4 Aug 2004 06:16:41 -0000 1.3 --- FOORegion.m 13 Aug 2004 21:38:01 -0000 1.4 *************** *** 40,43 **** --- 40,45 ---- #include "FOO/FOOContext.h" + #import <Foundation/NSKeyedArchiver.h> + @implementation FOORegion *************** *** 46,50 **** offset: (double)off size: (double)siz ! rev:(BOOL)rev { if ([substrate isKindOfClass: [FOOSoundFile class]] == NO && --- 48,52 ---- offset: (double)off size: (double)siz ! rev: (BOOL)rev { if ([substrate isKindOfClass: [FOOSoundFile class]] == NO && *************** *** 112,132 **** ! // /* ! // * archiving methods ! // */ ! // - read:(TypedStream *)stream ! // { ! // [super read:stream]; ! // objc_read_types(stream, "@iii", &substrate, &offset, &size, &reverse); ! // return self; ! // } ! // - write:(TypedStream *)stream ! // { ! // [super write:stream]; ! // objc_write_types(stream, "@iii", &substrate, &offset, &size, &reverse); ! // return self; ! // } @end --- 114,165 ---- ! /* ! * archiving methods ! */ ! - (void) encodeWithCoder: (NSCoder *)coder ! { ! [super encodeWithCoder: coder]; ! if ([coder allowsKeyedCoding]) ! { ! [coder encodeObject: _substrate forKey: @"FOORegion:substrate"]; ! [coder encodeInt64: _offset forKey: @"FOORegion:offset"]; ! [coder encodeInt64: _size forKey: @"FOORegion:size"]; ! [coder encodeBool: _reverse forKey: @"FOORegion:reverse"]; ! } ! else ! { ! [coder encodeObject: _substrate]; ! [coder encodeValueOfObjCType: @encode(long) at: &_offset]; ! [coder encodeValueOfObjCType: @encode(long) at: &_size]; ! [coder encodeValueOfObjCType: @encode(BOOL) at: &_reverse]; ! } ! ! return; ! } ! ! ! - (FOORegion *) initWithCoder: (NSCoder *)coder ! { ! self = [super initWithCoder: coder]; ! ! if ([coder allowsKeyedCoding]) ! { ! _substrate = RETAIN([coder decodeObjectForKey: @"FOORegion:substrate"]); ! _offset = [coder decodeInt64ForKey: @"FOORegion:offset"]; ! _size = [coder decodeInt64ForKey: @"FOORegion:size"]; ! _reverse = [coder decodeBoolForKey: @"FOORegion:reverse"]; ! } ! else ! { ! _substrate = RETAIN([coder decodeObject]); ! [coder decodeValueOfObjCType: @encode(long) at: &_offset]; ! [coder decodeValueOfObjCType: @encode(long) at: &_size]; ! [coder decodeValueOfObjCType: @encode(BOOL) at: &_reverse]; ! } ! ! return self; ! } @end Index: FOOContextPart.m =================================================================== RCS file: /cvsroot/foo/foo/libfoo/src/FOOContextPart.m,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** FOOContextPart.m 4 Aug 2004 06:16:41 -0000 1.2 --- FOOContextPart.m 13 Aug 2004 21:38:01 -0000 1.3 *************** *** 38,41 **** --- 38,43 ---- #include "FOO/FOOContext.h" + #import <Foundation/NSKeyedArchiver.h> + extern FOOContext *getCurrentContext(); // exported by ../fooLiface/context.m *************** *** 74,95 **** ! // /* ! // * archiving methods ! // */ ! // - read:(TypedStream *)stream ! // { ! // [super read:stream]; ! // objc_read_object(stream, &context); ! // return self; ! // } ! // - write:(TypedStream *)stream ! // { ! // [super write:stream]; ! // objc_write_object(stream, context); ! // return self; ! // } @end --- 76,114 ---- ! /* ! * archiving methods ! */ ! - (void) encodeWithCoder: (NSCoder *)coder ! { ! // no [super encode ...] call, since FOOObject doesn't implement <NSCoding> ! if ([coder allowsKeyedCoding]) ! { ! [coder encodeObject: _context forKey: @"FOOContextPart:context"]; ! } ! else ! { ! [coder encodeObject: _context]; ! } ! return; ! } ! ! ! - (FOOContextPart *) initWithCoder: (NSCoder *)coder ! { ! self = [super init]; ! ! if ([coder allowsKeyedCoding]) ! { ! _context = RETAIN([coder decodeObjectForKey: @"FOOContextPart:context"]); ! } ! else ! { ! _context = RETAIN([coder decodeObject]); ! } + return self; + } @end Index: FOOSoundFile.m =================================================================== RCS file: /cvsroot/foo/foo/libfoo/src/FOOSoundFile.m,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** FOOSoundFile.m 13 Aug 2004 00:34:34 -0000 1.3 --- FOOSoundFile.m 13 Aug 2004 21:38:01 -0000 1.4 *************** *** 38,41 **** --- 38,43 ---- #include "FOO/FOOSoundFile.h" + #import <Foundation/NSKeyedArchiver.h> + // #define FOOSOUNDFILE_DEBUG *************** *** 826,857 **** */ ! // - awake ! // { ! // [super awake]; ! // [self doInit]; ! // if ([self open: [_fileName cString] mode: _fileMode] == NO) ! // { ! // FOO_ERROR(YES, self); ! // } ! // return self; ! // } // awake - // - read: (TypedStream *) stream - // { - // [super read: stream]; - // objc_read_types(stream, "@i", &_fileName, &_fileMode); - // return self; - // } // read ! // - write: (TypedStream *) stream ! // { ! // [super write: stream]; ! // objc_write_types(stream, "@i", &_fileName, &_fileMode); ! // return self; ! // } // write @end --- 828,874 ---- */ ! - (void) encodeWithCoder: (NSCoder *)coder ! { ! [super encodeWithCoder: coder]; ! if ([coder allowsKeyedCoding]) ! { ! [coder encodeObject: _fileName forKey: @"FOOSoundFile:fileName"]; ! [coder encodeInt: _fileMode forKey: @"FOOSoundFile:fileMode"]; ! } ! else ! { ! [coder encodeObject: _fileName]; ! [coder encodeValueOfObjCType: @encode(int) at: &_fileMode]; ! } + return; + } + - (FOOSoundFile *) initWithCoder: (NSCoder *)coder + { + self = [super initWithCoder: coder]; ! if ([coder allowsKeyedCoding]) ! { ! _fileName = RETAIN([coder decodeObjectForKey: @"FOOSoundFile:fileName"]); ! _fileMode = [coder decodeIntForKey: @"FOOSoundFile:fileMode"]; ! } ! else ! { ! _fileName = RETAIN([coder decodeObject]); ! [coder decodeValueOfObjCType: @encode(int) at: &_fileMode]; ! } + [self doInit]; + + if ([self open: _fileName mode: _fileMode] == NO) + { + FOO_ERROR(YES, self); + } + + return self; + } @end Index: FOOGlobalsManager.m =================================================================== RCS file: /cvsroot/foo/foo/libfoo/src/FOOGlobalsManager.m,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** FOOGlobalsManager.m 4 Aug 2004 06:43:55 -0000 1.3 --- FOOGlobalsManager.m 13 Aug 2004 21:38:01 -0000 1.4 *************** *** 41,47 **** --- 41,51 ---- #include <math.h> #include <stdio.h> + #import <Foundation/NSArray.h> #import <Foundation/NSDictionary.h> #import <Foundation/NSValue.h> + #import <Foundation/NSData.h> + #import <Foundation/NSKeyedArchiver.h> + #import <Foundation/NSPropertyList.h> #include "FOO/FOOGlobalsManager.h" *************** *** 49,72 **** #include "FOO/FOOSineXoverXTable.h" #include "FOO/FOOFileTable.h" ! ! ! // this is loadClass etc. which is not used in foo ! // /* objc-load.h seems to be no longer exported by the base library ! // * declaring functions manually ! // */ ! // //#include <GNUstepBase/objc-load.h> ! ! // extern long objc_load_modules( ! // char *files[], ! // FILE *errorStream, ! // void (*callback)(Class,struct objc_category *), ! // void **header, ! // char *debugFilename); ! ! // extern long objc_unload_modules( ! // FILE *errorStream, ! // void (*unloadCallback)(Class, struct objc_category *)); ! ! // /* end objc-load.h stuff */ --- 53,57 ---- #include "FOO/FOOSineXoverXTable.h" #include "FOO/FOOFileTable.h" ! #include "FOO/FOOContext.h" *************** *** 116,143 **** - // seems not to be used in foo - // + (void) loadClass:(char *)path - // { - // char *files[] = {NULL, NULL}; - - // files[0] = path; - // // if (objc_loadModules(files, NULL, NULL, NULL, NULL) != 0) - // if (objc_load_modules(files, NULL, NULL, NULL, NULL) != 0) - // { - // FOO_ERROR(YES, self); - // } - // } - - - // + (void) unloadLast - // { - // // if (objc_unloadModules(NULL, NULL) != 0) - // if (objc_unload_modules(NULL, NULL) != 0) - // { - // FOO_ERROR(YES, self); - // } - // } - - + (void) schemeOutput: (NSString *)string { --- 101,104 ---- *************** *** 236,243 **** ! + (void) setDefaultBlockSize:(int) size { _defaultBlockSize = size; } @end --- 197,241 ---- ! + (void) setDefaultBlockSize: (int)size { _defaultBlockSize = size; } + + + (BOOL) archiveContext: (FOOContext *)context + toFile: (NSString *)path + { + NSMutableData *data; + NSKeyedArchiver *archiver; + BOOL result; + + data = [NSMutableData data]; + archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData: data]; + // use XML format + [archiver setOutputFormat: NSPropertyListXMLFormat_v1_0]; + [archiver encodeObject: context forKey: @"FOOContext"]; + [archiver finishEncoding]; + result = [data writeToFile: path atomically: YES]; + RELEASE(archiver); + // RELEASE(data); // ??? autoreleased or not? + + return result; + } + + + + (FOOContext *) unArchiveContextWithFile: (NSString *)path + { + FOOContext *context; + NSData *data; + NSKeyedUnarchiver *unarchiver; + + data = [NSData dataWithContentsOfFile: path]; + unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData: data]; + context = [unarchiver decodeObjectForKey: @"FOOContext"]; + [unarchiver finishDecoding]; + [unarchiver release]; + + return context; + } + @end Index: FOOModuleManager.m =================================================================== RCS file: /cvsroot/foo/foo/libfoo/src/FOOModuleManager.m,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** FOOModuleManager.m 4 Aug 2004 06:16:41 -0000 1.3 --- FOOModuleManager.m 13 Aug 2004 21:38:01 -0000 1.4 *************** *** 38,41 **** --- 38,43 ---- #include "FOO/FOOModule.h" + #import <Foundation/NSKeyedArchiver.h> + @implementation FOOModuleManager *************** *** 129,131 **** --- 131,153 ---- } + + /* + * archiving methods + */ + + - (void) encodeWithCoder: (NSCoder *)coder + { + [super encodeWithCoder: coder]; + + return; + } + + + - (FOOModuleManager *) initWithCoder: (NSCoder *)coder + { + self = [super initWithCoder: coder]; + + return self; + } + @end Index: FOOBufferManager.m =================================================================== RCS file: /cvsroot/foo/foo/libfoo/src/FOOBufferManager.m,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** FOOBufferManager.m 4 Aug 2004 06:16:41 -0000 1.2 --- FOOBufferManager.m 13 Aug 2004 21:38:01 -0000 1.3 *************** *** 38,41 **** --- 38,43 ---- #include "FOO/FOOBuffer.h" + #import <Foundation/NSKeyedArchiver.h> + @implementation FOOBufferManager *************** *** 95,115 **** ! // /* ! // * archiving methods ! // */ ! // - read:(TypedStream *)stream ! // { ! // [super read:stream]; ! // objc_read_type(stream, "i", &bufferSize); ! // return self; ! // } ! // - write:(TypedStream *)stream ! // { ! // [super write:stream]; ! // objc_write_type(stream, "i", &bufferSize); ! // return self; ! // } @end --- 97,138 ---- ! /* ! * archiving methods ! */ ! - (void) encodeWithCoder: (NSCoder *)coder ! { ! [super encodeWithCoder: coder]; ! if ([coder allowsKeyedCoding]) ! { ! [coder encodeInt: _bufferSize forKey: @"FOOBufferManager:bufferSize"]; ! } ! else ! { ! [coder encodeValueOfObjCType: @encode(int) at: &_bufferSize]; ! } ! ! return; ! } ! ! ! - (FOOBufferManager *) initWithCoder: (NSCoder *)coder ! { ! self = [super initWithCoder: coder]; ! ! if ([coder allowsKeyedCoding]) ! { ! _bufferSize = [coder decodeIntForKey: @"FOOBufferManager:bufferSize"]; ! } ! else ! { ! [coder decodeValueOfObjCType: @encode(int) at: &_bufferSize]; ! ! return; ! } ! ! return self; ! } @end Index: FOOObjectManager.m =================================================================== RCS file: /cvsroot/foo/foo/libfoo/src/FOOObjectManager.m,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** FOOObjectManager.m 4 Aug 2004 06:16:41 -0000 1.3 --- FOOObjectManager.m 13 Aug 2004 21:38:01 -0000 1.4 *************** *** 37,40 **** --- 37,42 ---- #include "FOO/FOOObjectManager.h" + #import <Foundation/NSKeyedArchiver.h> + @implementation FOOObjectManager *************** *** 116,133 **** */ ! // - read:(TypedStream *)stream ! // { ! // [super read:stream]; ! // // objects = NXReadObject(stream); ! // objc_read_object(stream, &objects); ! // return self; ! // } ! // - write:(TypedStream *)stream ! // { ! // [super write:stream]; ! // objc_write_object(stream, objects); ! // return self; ! // } @end --- 118,152 ---- */ ! - (void) encodeWithCoder: (NSCoder *)coder ! { ! // no [super encode ...] call, since FOOObject doesn't implement <NSCoding> ! if ([coder allowsKeyedCoding]) ! { ! [coder encodeObject: _objects forKey: @"FOOObjectManager:objects"]; ! } ! else ! { ! [coder encodeObject: _objects]; ! } ! return; ! } ! ! ! - (FOOObjectManager *) initWithCoder: (NSCoder *)coder ! { ! self = [super init]; ! ! if ([coder allowsKeyedCoding]) ! { ! _objects = RETAIN([coder decodeObjectForKey: @"FOOObjectManager:objects"]); ! } ! else ! { ! _objects = RETAIN([coder decodeObject]); ! } ! ! return self; ! } @end Index: FOOEagerModuleManager.m =================================================================== RCS file: /cvsroot/foo/foo/libfoo/src/FOOEagerModuleManager.m,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** FOOEagerModuleManager.m 4 Aug 2004 06:16:41 -0000 1.2 --- FOOEagerModuleManager.m 13 Aug 2004 21:38:01 -0000 1.3 *************** *** 38,41 **** --- 38,43 ---- #include "FOO/FOOEagerModule.h" + #import <Foundation/NSKeyedArchiver.h> + @implementation FOOEagerModuleManager *************** *** 54,56 **** --- 56,78 ---- } + + /* + * archiving methods + */ + + - (void) encodeWithCoder: (NSCoder *)coder + { + [super encodeWithCoder: coder]; + + return; + } + + + - (FOOEagerModuleManager *) initWithCoder: (NSCoder *)coder + { + self = [super initWithCoder: coder]; + + return self; + } + @end Index: FOOSubstrate.m =================================================================== RCS file: /cvsroot/foo/foo/libfoo/src/FOOSubstrate.m,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** FOOSubstrate.m 4 Aug 2004 06:16:41 -0000 1.4 --- FOOSubstrate.m 13 Aug 2004 21:38:01 -0000 1.5 *************** *** 38,41 **** --- 38,43 ---- #include "FOO/FOOContext.h" + #import <Foundation/NSKeyedArchiver.h> + @implementation FOOSubstrate *************** *** 98,100 **** --- 100,122 ---- } + + /* + * archiving methods + */ + + - (void) encodeWithCoder: (NSCoder *)coder + { + [super encodeWithCoder: coder]; + + return; + } + + + - (FOOSubstrate *) initWithCoder: (NSCoder *)coder + { + self = [super initWithCoder: coder]; + + return self; + } + @end Index: FOOSoundStream.m =================================================================== RCS file: /cvsroot/foo/foo/libfoo/src/FOOSoundStream.m,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** FOOSoundStream.m 4 Aug 2004 06:16:41 -0000 1.3 --- FOOSoundStream.m 13 Aug 2004 21:38:01 -0000 1.4 *************** *** 38,41 **** --- 38,43 ---- #include "FOO/FOOSoundFile.h" + #import <Foundation/NSKeyedArchiver.h> + @implementation FOOSoundStream *************** *** 82,102 **** ! // /* ! // * archiving methods ! // */ ! // - read:(TypedStream *)stream ! // { ! // [super read:stream]; ! // objc_read_types(stream, "@i", &soundFile, &channelNumber); ! // return self; ! // } ! // - write:(TypedStream *)stream ! // { ! // [super write:stream]; ! // objc_write_types(stream, "@i", &soundFile, &channelNumber); ! // return self; ! // } @end --- 84,127 ---- ! /* ! * archiving methods ! */ ! - (void) encodeWithCoder: (NSCoder *)coder ! { ! [super encodeWithCoder: coder]; ! if ([coder allowsKeyedCoding]) ! { ! [coder encodeObject: _soundFile forKey: @"FOOSoundStream:soundFile"]; ! [coder encodeInt: _channelNumber forKey: @"FOOSoundStream:channelNumber"]; ! } ! else ! { ! [coder encodeObject: _soundFile]; ! [coder encodeValueOfObjCType: @encode(int) at: &_channelNumber]; ! } ! ! return; ! } ! ! ! - (FOOSoundStream *) initWithCoder: (NSCoder *)coder ! { ! self = [super initWithCoder: coder]; ! ! if ([coder allowsKeyedCoding]) ! { ! _soundFile = RETAIN([coder decodeObjectForKey: @"FOOSoundStream:soundFile"]); ! _channelNumber = [coder decodeIntForKey: @"FOOSoundStream:channelNumber"]; ! } ! else ! { ! _soundFile = RETAIN([coder decodeObject]); ! [coder decodeValueOfObjCType: @encode(int) at: &_channelNumber]; ! } ! ! return self; ! } @end Index: FOOOutput.m =================================================================== RCS file: /cvsroot/foo/foo/libfoo/src/FOOOutput.m,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** FOOOutput.m 4 Aug 2004 06:16:41 -0000 1.2 --- FOOOutput.m 13 Aug 2004 21:38:01 -0000 1.3 *************** *** 52,55 **** --- 52,57 ---- #include "FOO/FOOBuffer.h" + #import <Foundation/NSKeyedArchiver.h> + @implementation FOOOutput *************** *** 101,122 **** ! // /* ! // * archiving methods ! // */ ! // - read:(TypedStream *)stream ! // { ! // [super read:stream]; ! // objc_read_types(stream, "@i", &input, &channel); ! // return self; ! // } ! // - write:(TypedStream *)stream ! // { ! // [super write:stream]; ! // objc_write_types(stream, "@i", &input, &channel); ! // return self; ! // } @end ! --- 103,147 ---- ! /* ! * archiving methods ! */ ! - (void) encodeWithCoder: (NSCoder *)coder ! { ! [super encodeWithCoder: coder]; ! if ([coder allowsKeyedCoding]) ! { ! [coder encodeObject: _input forKey: @"FOOOutput:input"]; ! [coder encodeInt: _channel forKey: @"FOOOutput:channel"]; ! } ! else ! { ! [coder encodeObject: _input]; ! [coder encodeValueOfObjCType: @encode(int) at: &_channel]; ! } ! ! return; ! } ! ! ! - (FOOOutput *) initWithCoder: (NSCoder *)coder ! { ! self = [super initWithCoder: coder]; ! ! if ([coder allowsKeyedCoding]) ! { ! _input = RETAIN([coder decodeObjectForKey: @"FOOOutput:input"]); ! _channel = [coder decodeIntForKey: @"FOOOutput:channel"]; ! } ! else ! { ! _input = RETAIN([coder decodeObject]); ! [coder decodeValueOfObjCType: @encode(int) at: &_channel]; ! } ! ! return self; ! } @end ! Index: FOOOutputManager.m =================================================================== RCS file: /cvsroot/foo/foo/libfoo/src/FOOOutputManager.m,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** FOOOutputManager.m 4 Aug 2004 06:16:41 -0000 1.2 --- FOOOutputManager.m 13 Aug 2004 21:38:01 -0000 1.3 *************** *** 41,44 **** --- 41,46 ---- #include "FOO/FOOContext.h" + #import <Foundation/NSKeyedArchiver.h> + @implementation FOOOutputManager *************** *** 335,364 **** ! // /* ! // * archiving methods ! // */ ! // - awake ! // { ! // [super awake]; ! // soundfile = nil; ! // buffers = nil; ! // filename = nil; ! // return self; ! // } ! // - read:(TypedStream *)stream ! // { ! // [super read:stream]; ! // objc_read_types(stream, "@i", &context, &channels); ! // return self; ! // } ! // - write:(TypedStream *)stream ! // { ! // [super write:stream]; ! // objc_write_types(stream, "@i", &context, &channels); ! // return self; ! // } @end --- 337,384 ---- ! /* ! * archiving methods ! */ ! - (void) encodeWithCoder: (NSCoder *)coder ! { ! [super encodeWithCoder: coder]; ! if ([coder allowsKeyedCoding]) ! { ! [coder encodeObject: _context forKey: @"FOOOutputManager:context"]; ! [coder encodeInt: _channels forKey: @"FOOOutputManager:channels"]; ! } ! else ! { ! [coder encodeObject: _context]; ! [coder encodeValueOfObjCType: @encode(int) at: &_channels]; ! } ! return; ! } ! ! ! - (FOOOutputManager *) initWithCoder: (NSCoder *)coder ! { ! self = [super initWithCoder: coder]; ! ! if ([coder allowsKeyedCoding]) ! { ! _context = RETAIN([coder decodeObjectForKey: @"FOOOutputManager:context"]); ! _channels = [coder decodeIntForKey: @"FOOOutputManager:channels"]; ! } ! else ! { ! _context = RETAIN([coder decodeObject]); ! [coder decodeValueOfObjCType: @encode(int) at: &_channels]; ! } ! ! _soundfile = nil; ! _buffers = nil; ! _filename = nil; ! ! return self; ! } @end Index: FOOEagerModule.m =================================================================== RCS file: /cvsroot/foo/foo/libfoo/src/FOOEagerModule.m,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** FOOEagerModule.m 4 Aug 2004 06:16:41 -0000 1.2 --- FOOEagerModule.m 13 Aug 2004 21:38:01 -0000 1.3 *************** *** 39,42 **** --- 39,44 ---- #include "FOO/FOOBuffer.h" + #import <Foundation/NSKeyedArchiver.h> + @implementation FOOEagerModule *************** *** 61,63 **** --- 63,85 ---- } + + /* + * archiving methods + */ + + - (void) encodeWithCoder: (NSCoder *)coder + { + [super encodeWithCoder: coder]; + + return; + } + + + - (FOOEagerModule *) initWithCoder: (NSCoder *)coder + { + self = [super initWithCoder: coder]; + + return self; + } + @end Index: FOOModule.m =================================================================== RCS file: /cvsroot/foo/foo/libfoo/src/FOOModule.m,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** FOOModule.m 4 Aug 2004 06:16:41 -0000 1.4 --- FOOModule.m 13 Aug 2004 21:38:01 -0000 1.5 *************** *** 41,44 **** --- 41,47 ---- #include "FOO/FOONilModule.h" + #import <Foundation/NSKeyedArchiver.h> + + // static FOONilModule *_nilModule = nil; *************** *** 265,285 **** ! // /* ! // * archiving methods ! // */ ! // - read:(TypedStream *)stream ! // { ! // [super read:stream]; ! // objc_read_types(stream, "@@", &inputs, &output); ! // return self; ! // } ! // - write:(TypedStream *)stream ! // { ! // [super write:stream]; ! // objc_write_types(stream, "@@", &inputs, &output); ! // return self; ! // } @end --- 268,311 ---- ! /* ! * archiving methods ! */ ! - (void) encodeWithCoder: (NSCoder *)coder ! { ! [super encodeWithCoder: coder]; ! if ([coder allowsKeyedCoding]) ! { ! [coder encodeObject: _inputs forKey: @"FOOModule:inputs"]; ! [coder encodeObject: _output forKey: @"FOOOutput:output"]; ! } ! else ! { ! [coder encodeObject: _inputs]; ! [coder encodeObject: _output]; ! } ! ! return; ! } ! ! ! - (FOOModule *) initWithCoder: (NSCoder *)coder ! { ! self = [super initWithCoder: coder]; ! ! if ([coder allowsKeyedCoding]) ! { ! _inputs = RETAIN([coder decodeObjectForKey: @"FOOModule:inputs"]); ! _output = RETAIN([coder decodeObjectForKey: @"FOOModule:output"]); ! } ! else ! { ! _inputs = RETAIN([coder decodeObject]); ! _output = RETAIN([coder decodeObject]); ! } ! ! return self; ! } @end Index: FOOBreakpointFunction.m =================================================================== RCS file: /cvsroot/foo/foo/libfoo/src/FOOBreakpointFunction.m,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** FOOBreakpointFunction.m 4 Aug 2004 06:16:41 -0000 1.2 --- FOOBreakpointFunction.m 13 Aug 2004 21:38:01 -0000 1.3 *************** *** 43,46 **** --- 43,51 ---- #include "FOO/FOOContext.h" + #import <Foundation/NSKeyedArchiver.h> + #import <Foundation/NSArray.h> + #import <Foundation/NSValue.h> + #import <Foundation/NSException.h> + /* transexp from cmusic's 'transit' by Dick Moore */ *************** *** 164,168 **** b = [NSString stringWithFormat: @"beginT = %f, endT = %f\n", _beginT, _endT]; - AUTORELEASE(b); [FOOGlobalsManager schemeOutput: b]; while (sp->count != 0) --- 169,172 ---- *************** *** 170,174 **** b = [NSString stringWithFormat: @"%2d: %f %f %f %f %d\n", i, sp->value, sp->time, sp->delta, sp->alpha, sp->count]; - AUTORELEASE(b); [FOOGlobalsManager schemeOutput: b]; ++sp; --- 174,177 ---- *************** *** 283,309 **** ! // /* ! // * archiving methods ! // v */ ! // - read:(TypedStream *)stream ! // { ! // [super read:stream]; ! // objc_read_types(stream, "i[8c][8c][8c]", &length, &beginT, &endT, &firstV); ! // segments = NSZoneCalloc([self zone], length, sizeof(lineseg_t)); ! // objc_read_array(stream, "{ff[8c][8c]i}", length, segments); ! // return self; ! // } ! // - write:(TypedStream *)stream ! // { ! // lineseg_t *original = [self restoreSegments]; ! // [super write:stream]; ! // objc_write_types(stream, "i[8c][8c][8c]", &length, &beginT, &endT, &firstV); ! // objc_write_array(stream, "{ff[8c][8c]i}", length, original); ! // NSZoneFree([self zone], original); ! // return self; ! // } @end --- 286,427 ---- ! /* ! * archiving methods ! */ ! - (void) encodeWithCoder: (NSCoder *)coder ! { ! [super encodeWithCoder: coder]; ! lineseg_t *original = [self restoreSegments]; ! // _segments: wrap all the stuff into one NSArray of NSArrays of ! // NSNumbers ! NSMutableArray *segments = [NSMutableArray array]; // AUTORELEASEd ! int i; ! ! for (i = 0; i < _length; ++i) ! { ! NSNumber *numarray[5]; ! ! if (IS_SAMPLE_T(@encode(float))) ! { ! numarray[0] = [NSNumber numberWithFloat: original[i].value]; ! numarray[1] = [NSNumber numberWithFloat: original[i].delta]; ! } ! else if (IS_SAMPLE_T(@encode(double))) ! { ! numarray[0] = [NSNumber numberWithDouble: original[i].value]; ! numarray[1] = [NSNumber numberWithDouble: original[i].delta]; ! } ! else ! { ! [NSException raise: @"FOOUnknownSampleFormatException" ! format: @"sample_t neither float nor double"]; ! } ! ! numarray[2] = [NSNumber numberWithDouble: original[i].alpha]; ! numarray[3] = [NSNumber numberWithDouble: original[i].time]; ! numarray[4] = [NSNumber numberWithInt: original[i].count]; ! ! [segments insertObject: [NSArray arrayWithObjects: numarray count: 5] ! atIndex: i]; ! } ! ! if ([coder allowsKeyedCoding]) ! { ! // _segments ! [coder encodeObject: segments forKey: @"FOOBreakpointFunction:segments"]; ! // rest of the members ! [coder encodeInt: _length forKey: @"FOOBreakpointFunction:length"]; ! [coder encodeDouble: _beginT forKey: @"FOOBreakpointFunction:beginT"]; ! [coder encodeDouble: _endT forKey: @"FOOBreakpointFunction:endT"]; ! [coder encodeDouble: _firstV forKey: @"FOOBreakpointFunction:firstV"]; ! [coder encodeDouble: _firstA forKey: @"FOOBreakpointFunction:firstA"]; ! } ! else ! { ! [coder encodeObject: segments]; ! [coder encodeValueOfObjCType: @encode(int) at: &_length]; ! [coder encodeValueOfObjCType: @encode(double) at: &_beginT]; ! [coder encodeValueOfObjCType: @encode(double) at: &_endT]; ! [coder encodeValueOfObjCType: @encode(double) at: &_firstV]; ! [coder encodeValueOfObjCType: @encode(double) at: &_firstA]; ! } ! ! NSZoneFree([self zone], original); ! ! return; ! } ! ! ! - (FOOBreakpointFunction *) initWithCoder: (NSCoder *)coder ! { ! NSArray *segments; ! int i, count; ! ! self = [super initWithCoder: coder]; ! ! if ([coder allowsKeyedCoding]) ! { ! // don't RETAIN the following, since we still have to unpack it ! segments = [coder decodeObjectForKey: @"FOOBreakpointFunction:segments"]; ! _length = [coder decodeIntForKey: @"FOOBreakpointFunction:length"]; ! _beginT = [coder decodeDoubleForKey: @"FOOBreakpointFunction:beginT"]; ! _endT = [coder decodeDoubleForKey: @"FOOBreakpointFunction:endT"]; ! _firstV = [coder decodeDoubleForKey: @"FOOBreakpointFunction:firstV"]; ! _firstA = [coder decodeDoubleForKey: @"FOOBreakpointFunction:firstA"]; ! } ! else ! { ! segments = [coder decodeObject]; ! [coder decodeValueOfObjCType: @encode(int) at: &_length]; ! [coder decodeValueOfObjCType: @encode(double) at: &_beginT]; ! [coder decodeValueOfObjCType: @encode(double) at: &_endT]; ! [coder decodeValueOfObjCType: @encode(double) at: &_firstV]; ! [coder decodeValueOfObjCType: @encode(double) at: &_firstA]; ! } ! ! // unpack segments ! count = [segments count]; ! ! // check consistency ! if (count != _length) ! { ! [NSException raise: @"FOOUnarchiveInconsistencyException" ! format: @"_segments in archive not of length _length"]; ! } ! ! _segments = NSZoneMalloc([self zone], count * sizeof(lineseg_t)); ! ! for (i = 0; i < count; ++i) ! { ! NSNumber *numarray[5]; ! ! [[segments objectAtIndex: i] getObjects: numarray]; ! ! if (IS_SAMPLE_T(@encode(float))) ! { ! _segments[i].value = [numarray[0] floatValue]; ! _segments[i].delta = [numarray[1] floatValue]; ! } ! else if (IS_SAMPLE_T(@encode(double))) ! { ! _segments[i].value = [numarray[0] doubleValue]; ! _segments[i].delta = [numarray[1] doubleValue]; ! } ! else ! { ! [NSException raise: @"FOOUnknownSampleFormatException" ! format: @"sample_t neither float nor double"]; ! } ! ! _segments[i].alpha = [numarray[2] doubleValue]; ! _segments[i].time = [numarray[3] doubleValue]; ! _segments[i].count = [numarray[4] intValue]; ! } ! ! return self; ! } @end Index: FOOContext.m =================================================================== RCS file: /cvsroot/foo/foo/libfoo/src/FOOContext.m,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** FOOContext.m 5 Aug 2004 21:14:03 -0000 1.3 --- FOOContext.m 13 Aug 2004 21:38:01 -0000 1.4 *************** *** 47,50 **** --- 47,52 ---- #include "FOO/FOOBuffer.h" + #import <Foundation/NSKeyedArchiver.h> + @implementation FOOContext *************** *** 365,413 **** ! // /* ! // * archiving methods ! // */ ! // - awake ! // { ! // NSZone *zone = [self zone]; ! // [super awake]; ! // volatileBufferManager = [[BufferManager allocWithZone:zone] init]; ! // sharedBufferManager = [[BufferManager allocWithZone:zone] init]; ! // numberOfSharedBuffers = 0; ! // locked = NO; ! // return self; ! // } - // - read:(TypedStream *)stream - // { - // [super read:stream]; - // // objc_read_types(stream, "di@@@@i", - // objc_read_types(stream, "[8c]i@@@@i", - // &samplingRate, - // &bufferSize, - // &moduleManager, - // &substrateManager, - // &outputManager, - // &nilModule, - // &numberOfChannels); - // return self; - // } ! // - write:(TypedStream *)stream ! // { ! // [super write:stream]; ! // // objc_write_types(stream, "di@@@@i", ! // objc_write_types(stream, "[8c]i@@@@i", ! // &samplingRate, ! // &bufferSize, ! // &moduleManager, ! // &substrateManager, ! // &outputManager, ! // &nilModule, ! // &numberOfChannels); ! // return self; ! // } @end --- 367,440 ---- ! /* ! * archiving methods ! */ ! - (void) encodeWithCoder: (NSCoder *)coder ! { ! // no [super encode ...] call, since FOOObject doesn't implement <NSCoding> ! if ([coder allowsKeyedCoding]) ! { ! [coder encodeDouble: _samplingRate forKey: @"FOOContext:samplingRate"]; ! [coder encodeInt: _bufferSize forKey: @"FOOContext:bufferSize"]; ! [coder encodeObject: _moduleManager forKey: @"FOOContext:moduleManager"]; ! [coder encodeObject: _eagerModuleManager forKey: @"FOOContext:eagerModuleManager"]; ! [coder encodeObject: _substrateManager forKey: @"FOOContext:substrateManager"]; ! [coder encodeObject: _outputManager forKey: @"FOOContext:outputManager"]; ! [coder encodeObject: _nilModule forKey: @"FOOContext:nilModule"]; ! [coder encodeInt: _numberOfChannels forKey: @"FOOContext:numberOfChannels"]; ! } ! else ! { ! [coder encodeValueOfObjCType: @encode(double) at: &_samplingRate]; ! [coder encodeValueOfObjCType: @encode(int) at: &_bufferSize]; ! [coder encodeObject: _moduleManager]; ! [coder encodeObject: _eagerModuleManager]; ! [coder encodeObject: _substrateManager]; ! [coder encodeObject: _outputManager]; ! [coder encodeObject: _nilModule]; ! [coder encodeValueOfObjCType: @encode(int) at: &_numberOfChannels]; ! } ! return; ! } ! - (FOOContext *) initWithCoder: (NSCoder *)coder ! { ! self = [super init]; ! NSZone *zone; ! ! if ([coder allowsKeyedCoding]) ! { ! _samplingRate = [coder decodeDoubleForKey: @"FOOContext:samplingRate"]; ! _bufferSize = [coder decodeIntForKey: @"FOOContext:bufferSize"]; ! _moduleManager = RETAIN([coder decodeObjectForKey: @"FOOContext:moduleManager"]); ! _eagerModuleManager = RETAIN([coder decodeObjectForKey: @"FOOContext:eagerModuleManager"]); ! _substrateManager = RETAIN([coder decodeObjectForKey: @"FOOContext:substrateManager"]); ! _outputManager = RETAIN([coder decodeObjectForKey: @"FOOContext:outputManager"]); ! _nilModule = RETAIN([coder decodeObjectForKey: @"FOOContext:nilModule"]); ! _numberOfChannels = [coder decodeIntForKey: @"FOOContext:numberOfChannels"]; ! } ! else ! { ! [coder decodeValueOfObjCType: @encode(double) at: &_samplingRate]; ! [coder decodeValueOfObjCType: @encode(int) at: &_bufferSize]; ! _moduleManager = RETAIN([coder decodeObject]); ! _eagerModuleManager = RETAIN([coder decodeObject]); ! _substrateManager = RETAIN([coder decodeObject]); ! _outputManager = RETAIN([coder decodeObject]); ! _nilModule = RETAIN([coder decodeObject]); ! [coder decodeValueOfObjCType: @encode(int) at: &_numberOfChannels]; ! } ! ! zone = [self zone]; ! _volatileBufferManager = [[FOOBufferManager allocWithZone: zone] init]; ! _sharedBufferManager = [[FOOBufferManager allocWithZone: zone] init]; ! _numberOfSharedBuffers = 0; ! _locked = NO; ! ! return self; ! } @end |