Wed Mar 11 17:11:23 1998 Adam Fedor * Version: Version 0.5.0; Wed Mar 11 11:02:49 1998 Scott Christley * doc/gnustep-howto.tmpl.texi: Update. * GNUstep-HOWTO: Regenerate. Tue Mar 10 9:40:00 1998 Richard Frith-Macdonald * Tools/gdomap.c: Changes to permit configuration of gdomap so that it probes a specific list of hosts rather than all hosts on the local net. Also permit compile-time override of port number. * Tools/gdomap.h: Added comments about overriding port used by gdomap. * src/TcpPort.m: (nameServer()) modified for easy compile-time override of port number used. Thu Mar 5 15:40:00 1998 Richard Frith-Macdonald * src/GNUmakefile: removed byte_order.h and added NSByteOrder.h * src/NSData.m: Changed all byte-ordering code to use new byte order functions described in the Rhapsody documentation. * src/NSSerializer.m: Removed unused include file. * src/include/NSByteOrder.h: Added this file containing all the byte-order management functions described in the Rhapsody docs. Wed Mar 4 21:06:00 1998 Richard Frith-Macdonald * src/NSConnection.m: Changed some objects to be OpenStep rather than old libobjects types. Using NSMutableArray rather than Queue for the message queues seems to fixes bug with queue corruption under heavy load. * src/NSHost.m: Added methods for archiving NSHost objects and sending them bycopy over DO at all times. * src/NSRunLoop.m: ([-runUntilDate:forMode:]) modified to exit promptly if there are no more input sources for the run loop. Mon Mar 2 10:04:57 1998 Adam Fedor * ANNOUNCE, NEWS, GNUstep-HOWTO: Update. * doc/faq.tmpl.texi, doc/gnustep-howto.tmpl.texi, doc/news.tmpl.texi: Likewise. * src/GNUmakefile (GENERATED_HAFILES): Add include/o_... Thu Feb 26 12:49:10 1998 Adam Fedor * configure.in: Use AC_CHECK_HEADERS instead of AC_CHECK_HEADER. * src/include/config.h.in: Regenerate. * doc/GNUmakefile (HTML_FILES): Add fac_toc.html * doc/Makefile.postamble: (fac_toc.html): New target. * src/include/NSDictionary.h: Add NSMutableCopying protocol (suggested by David Fritzsche ). Thu Feb 26 8:12:00 1998 Richard Frith-Macdonald * Tools/defaults.m: Removed autorelease debugging. * Tools/dread.m: Removed autorelease debugging. * Tools/dremove.m: Removed autorelease debugging. * Tools/dwrite.m: Removed autorelease debugging. * Tools/gdomap.m: Substantial rewrite with changes to the protocol for name servers to identify themselves to each other. Now handles subnet addressing within a class-c network. Now handles machines with multiple IP addresses more efficiently. Removes addresses from list of known servers after a period in which it fails to contect them. * Tools/gdomap.h: Changed comments to reflect protocol changes. * src/Coder.m: ([-initForReadingWithData:]) removed an inefficient hack for dealing with a problem that should never happen (init methid called on autoreleased object). * src/NSConnection.m: ([+newForInPort:outPort:cancestorConnection:), (-_handleRmc:) removed 'delay_dialog_interruptions' which could result in deadlock in three-way DO conversations. * src/NSPortCoder.m: ([-_doEncodeObject:]) changed so that a copy over-the-wire is a deep copy rather than a shallow one. I think this gives a more expected behaviour, though I don't know what OPENSTEP does. * src/include/NSConnection.h: Removed delay_dialog_interruptions. Sat Feb 14 16:03:07 1998 Scott Christley * configure.in: Check for sys/statvfs.h header file. * configure: Regenerate. * std/include/config.h.in: Regenerate. * src/NSFileManager.m: Include header files only if available. Sat Feb 14 15:50:40 1998 Adam Fedor * src/NXStringTable_scan.c src/lex.pl.m src/lex.sf.m src/proplist.tab.h src/proplist.tab.m src/stringsfile.tab.h src/stringsfile.tab.m: Add regenerated files to repository. Sat Feb 14 13:41:39 1998 Scott Christley * src/include/config.h.in: Create and add back into repository. Thu Feb 12 13:31:00 1998 Adam Fedor * src/NSDictionary.m ([-copy]): New method. Mon Feb 9 13:08:27 1998 Adam Fedor * AUTHORS, ANNOUNCE, README, INSTALL, STATUS, TODO: New files. * configure: Likewise. * +cronscript, +crontab, +patch.sh, Makefile.local, make-*, upload-dist: Removed non-dist files. * src/Makefile.local, src/Makefile.set.nt: Likewise. * GNUmakefile (DIST_FILES): Remove gcc diffs. * Makefile.postamble (regenerate): New target. (snapshot, dist): Update for cvs export. * NSCharacterSets/Makefile.postamble (regenerate): New target. * NSTimeZones/Makefile.postamble: Likewise * Tools/Makefile.postamble: Likewise. * admin/Makefile.postamble: Likewise * checks/Makefile.postamble: Likewise * doc/Makefile.postamble: Likewise * examples/Makefile.postamble: Likewise * src/Makefile.postamble: Likewise * src/NSUserDefaults ([-synchronize]): Check for defaultDatabase and create it it doesn't exist. * src/NSThread.m ([-currentThread]): Set thread data for new thread. * src/NSString.m ([-initWithContentsOfFile:]): Check for NULL data. Patches suggested by Ulrich Steinmetz * src/NSHost.m: Remove arpa/inet.h * src/TcpPort.m: Likewise. * src/UnixFileHandle.m: Likewise. patches from Paul Kunz Thu Feb 5 10:12:00 1998 Richard Frith-Macdonald * src/NSConcreteNumber.m: Defined preprocessor values to handle 'promotion' of numeric types and added private methods to support this. Modified ([-compare:]) to promote numeric values so that comparisons work as expected. Implemented ([-isEqualToNumber:]), Implemented ([-description]) and partially ([-descriptionWithLocale:]) Implemented ([-hash]) so that numbers which compare the same also has the same (so we can use NSNumbers as dictionary keys). * src/NSData.m: Added non-openstep method ([-relinquishAllocatedBytes]) to ask a data object to hand over it's malloced buffer. * src/NSNumber.m: Added initialisation methods specified in Rhapsody documentation. * src/NSString.m: ([-dataUsingEncoding:allowLossyConversion:]) made tiny change for efficiency - moving test outside loop - perhaps the compiler would have optimised it anyway. * src/Port.m: Modified initialisaers to test for failure to create NSData objects and return nil as appropriate. * src/TcpPort.m: ([+newForReceivingFromPortNumber:]) release newly created port before raising exceptions. In both ([-invalidate]) methods we remove the port from the various maps before doing anything else so that invalid ports can't be found by accident during the invalidation process. * src/UnixFileHandle.m: ([-readDataOfLength:]) fixed problem with data object causing read value to be overwritten with nuls. * src/include/NSData.h: Added ([-relinquishAllocatedBytes]) * src/NSValue.h: Added initialisation methods for NSNumber and ([-isEqualToNumber:]) method. Thu Feb 5 10:48:35 1998 Adam Fedor * GNUmakefile (GNUSTEP_MAKEFILES): New variable. Use it to include makefiles. * Likewise for all sub-directory GNUmakefile files. Mon Feb 2 10:11:20 1998 Adam Fedor * Version (GCC_VERSION): Change to 2.8.0 * gcc-2.7.2-objc.diff: Remove. * gcc-2.7.2.1-objc.diff: Likewise. * NSTimeZones/Makefile.postamble (after-install): Remove directories before (re-)installing. * checks/GNUmakefile: Include bundle.make. * checks/invocation2.m: New file. * doc/gnustep-howto.tmpl.texi: Make gcc2.8.0 supported compiler. * doc/news.tmpl.texi: Add recent changes. * src/NSFileManager.m: Include sys/statvfs for mips-sgi-irix6.2 * Tools/gdomap.c: Add IPPORT_USERRESERVED def for sgi. * src/TcpPort.m: Likewise. * src/UdpPort.m: Likewise. (patches from Mike Kienenberger ) Fri Jan 30 20:38:56 1998 Masatake Yamato * src/Invocation.m ([MethodInvocation -initWithTarget:selector:,...]): Add _C_CLASS, a CASE_TYPE to the switch-case labels. Implement default: in the switch-case. I used typeof, a gcc extension. * src/NSMethodSignature.m ([NSMethodSignature -argumentInfoAtIndex:]): Implemented. * src/include/NSInvocation.h (NS_INVOCATION, NS_MESSAGE): New macros. Mon Feb 2 12:54:00 1998 Richard Frith-Macdonald * Tools/defaults.m: Modified to make sure that defaults are all written correctly when reading multile defaults settings from stdin. * src/NSArray.m: Modified or rewrote almost all methods to use unsigned ints rather than ints and to avoid retain/release sequences for the sake of efficiency. Also rewrote property list and sorting methods for much greater efficieny. * src/NSData.m: (readContentsOfFile(NSString*, void**, unsigned*)) fixed bug leaving file open and modified to use ([NSString -fileSystemRepresentation]). Similarly modified ([-writeToFile:atomically;]) and ([-initWithContentsOfMappedFile:]). * src/NSDictionary.m: Modified ([-descriptionInStringsFileFormat]) and ([-descriptionWithLocale:indent:]) for better performance. * src/NSGArray.m: Added implementations of ([-getObjects:]) and ([-getObjects:range:]) so that it is possible to get high speed access to array contents. Added implementation of ([-sortUsingFunction:context:]) for faster sorting of array contents so that property descriptions are generated more quickly. * src/NSGCString.m: Modified various methods so that the _capacity instance variable has the space available for characters in the string without the terminator. Added ([-getCharacters:]) and ([-getCharacters:range:]) implementations. * src/NSGString.m: Modified various methods so that unicode strings are no longer nul terminated and the _capacity instance variable has the number of character spaces available in the string. Added ([-getCharacters:]) and ([-getCharacters:range:]) implementations. Added ([-replaceCharactersInRange:withString:]) implementation. * src/NSString.m: Fixed a few places where it was assumed that string buffers include space for a nul terminator. In ([-compare:options:range:]) made modifications so that literal comparisons now work correctly for ranges other than the entire string. Made some changes to avoid use of malloc/free sequences where not necessary. Made efficiency improvements to append methods. * src/NSUserDefaults.m: ([-initWithContentsOfFile:]) changed to take process name as being the last path component of the full process name. Also added code to retry a few times if the database is locked. * src/TcpPort.m: ([+newForSendingToSockaddr:withAcceptedSocket:pollingInPort:]) Vague attempt to make rapid shutdown/startup of DO more robust. * src/UnixFileHandle.m: (getAddr()) Fixed error in handling service names and permit nil service to mean 'any'. Also use ([NSString -fileSystemRepresentation]) as appropriate. * src/include/NSGArray.h: modified to contain same instance variables as the Array class so we can access them directly in NSGArray.m Mon Jan 26 09:10:39 1998 Adam Fedor * src/NSPage.m (NSRealMemoryAvailable): Add implementation for GNU/Linux (Patch from Matt Jenkins ). * src/Invocation.m (-setArgument:atIndex:): Make argument const. * src/NSInvocation.m (-methodSignature): Make my_sel_type const. Sat Jan 24 15:14:50 1998 Masatake Yamato * src/include/NSMethodSignature.h(-methodType): Declare new category NSMethodSignature(GNU). * src/Invocation.m ([MethodInvocation -setSelector:]): Add code to handle a case that sel_pointer is pointing NULL SEL value. This is far from perfect. Type checking is needed. * src/NSMethodSignature.m Add cpp directives to use `strrchr'. (rtn_type_is_oneway): New function for [NSMethodSignature -isOneway]. ([NSMethodSignature +signatureWithObjCTypes:]): Fix length of memory allocation for strings. Do not copy all the encoding string T to returnTypes. ([NSMethodSignature -isOneway]): Method implemented. ([NSMethodSignature(GNU) -methodType]): New category and method. This is not part of OpenStep spec. This method is used in NSInvocation.m. * src/NSInvocation.m ([NSInvocation +initialize]): Add MethodInvocation class instead of Invocation. ([NSInvocation -methodSignature]): Method implemented. ([NSInvocation +invocationWithMethodSignature:]): Invoke [NSMethodSignature -methodType] instead of [NSMethodSignature -methodReturnType]. Wed Jan 21 17:37:00 1998 Richard Frith-Macdonald * Tools/defaults.m: Fixed bug in handling 'write' operations reading info from stdin - now puts all values into the database correctly. * src/TcpPort.m: ([+newForReceivingFromPortNumber:]) added code to perform retries if the kernel freaks out when asked to select the port to bind to - this has happened to me on linux! Wed Jan 21 11:45:00 1998 Richard Frith-Macdonald * src/GetDefEncoding.m: Modified GetDefEncoding() to us the NSString method - ([+availableStringEncodings]) so we can make the _availableEncodings array local to NSString.m * src/NSString.m: Moved _availableEncodings here from NSString.h Added methods as specified in Rhapsody documentation - ([+pathWithComponents:]), ([-isAbsolutePath]), ([-pathComponents]), ([-stringsByAppendingPaths:]) * src/include/NSString.h: Moved _availableEncodings from here to NSString.m and added declarations for new methods - ([+pathWithComponents:]), ([-isAbsolutePath]), ([-pathComponents]), ([-stringsByAppendingPaths:]) Wed Jan 21 09:41:46 1998 Adam Fedor * src/Makefile.postamble: Change $(LEX) to $(FLEX) and $(YACC) to $(BISON). Add $(GNUSTEP_OBJC_DIR) to targets with ${OEXT}. Tue Jan 20 19:05:00 1998 Richard Frith-Macdonald * Tools/GNUmakefile: Added defaults.m * Tools/defaults.m: New file defaults.m - command line tool like the OPENSTEP defaults command. Renders dread, dwrite and dremove obsolete. * Tools/dread.m: Added -u flag and made numerous bug fixes. * Tools/dremove.m: Added -u flag and made numerous bug fixes. * Tools/dwrite.m: Added -u flag and made numerous bug fixes. * checks/GNUmakefile (TEST_TOOL_NAME): Add nstask. * checks/nsdate.m: Added some year-2000 tests. * checks/nstask.m: New file. * src/Dictionary.m: Removed ([-descriptionWithIndent:]) and the ([-description]) methods - no longer needed for property lists. * src/GNUmakefile: Added NSTask * src/GetDefEncoding.m: Fixed so that the encoding that is read from the environment is accepted. * src/Heap.m: Added implementation of ([-minObject]) to take advantage of the known ordering of a heap - fixes performance problem with large numbers of timers in NSRunLoop. * src/NSArray.m: Implemented many new methods for OPENSTEP - ([+arrayWithArray:]), ([+arrayWithContentsOfFile:]), ([+arrayWithObjects:count:]), ([-getObjects:]), ([-getObjects:range:]), ([-indexOfObjectIdenticalto:inRange:]), ([-indexOfObject:inRange:]), ([-makeObjectsPerformSelector:]), ([-makeObjectsPerformSelector:withObject:]), ([-sortedArrayHint]), ([-sortedArrayUsingFunction:context:hint:]), ([-pathsMatchingExtensions:]), ([-descriptionWithLocale:]), ([-descriptionWithLocale:indent:), ([-replaceObjectsInRange:withObjectsFromArray:]), ([-initWithContentsOfFile:]), ([-removeObject:inRange:]), ([-removeObjectIdenticalTo:inRange:]), ([-removeObjectsInRange:]) Modified ([-makeObjectsPerform:]) and ([-makeObjectsPerform:wihtObject:]) to iterate through array in reverse as specified in OPENSTEP docs. Removed obsolete method - ([-descriptionWithIndent:]) * src/NSArray.m: Implemented new methods for OPENSTEP - ([+dataWithData:]), ([-setData:]) Modified ([-description]) to give tidier output. * src/NSCalendarDate.m: Changed initialisation and creation methods to return type id as in the Rhapsody docs, also changed default format for description to use numeric timezone values as per Rhapsody docs. * src/NSData.m: Implemented new methods for OPENSTEP - ([+dataWithData:]), ([-setData:]) Modified ([-description]) to give tidier output. * NSDate.m: Changed initialisation and creation methods to return type id as in the Rhapsody docs. * src/NSDictionary.m: Implemented new methods for OPENSTEP - ([-keysSortedByValueUsingSelector:]), ([-objectsForKeys:notFoundMarker:]), ([-description]), ([-descriptionInStringsFileFormat]), ([-descriptionWithLocale:]), ([-descriptionWithLocale:indent:]), ([-setDictionary:]), * src/NSFileHandle.m: Added extensions for getting information about sockets used in file handles. * src/NSString.m: Removed ([-quotedCString]) and added new method ([-descriptionForPropertyList]) to do things more neatly. Fixed ([-initWithContentsOfFile:]) to avoid crash when given a bad file name. * src/NSTask.m: Added this OPENSTEP/Rhapsody class. * src/TcpPort.m: Added check for bad data arriving on descriptor in ([-_tryToGetPacketFromReadableFD:]) * src/UnixFileHandle.m: Added stuff for getting information about sockets used in file handles. * src/include/IndexedCollecting.h: Made 'IndexRange' a synonym for NSRange. * src/include/NSArray.h: Changes to reflect the changes in methods implemented in NSArray.m * src/include/NSData.h: Changes to reflect the changes in methods implemented in NSData.m * src/include/NSDate.h: Changed return tpes of initialisation methods to be (id) as in Rhapsody documentation. * src/include/NSDictionary.h: Changes to reflect the changes in methods implemented in NSData.m * src/include/NSFileHandle.h: Changes to reflect the changes in methods implemented in NSFileHandle.m * src/include/NSString.h: Changes to reflect the changes in methods implemented in NSString.m * src/NSTask.h: Added this OPENSTEP/Rhapsody class. * src/include/UnixFileHandle.h: Changes to reflect the changes in methods implemented in UnixFileHandle.m * src/proplist.y: Make parsing less strict - permit dictionaries with or without a semicolon after the last key-value pair. * src/stringsfile.y: Fixed bug in parser - it is legitimate to have a key-value pair without a value - in which case the '=' is omitted. Fri Jan 9 10:04:09 1998 Adam Fedor * Version: Release 0.4.0. Thu Jan 8 09:42:39 1998 Adam Fedor * doc/announce.tmpl.texi: Fixup variable definitions. * doc/news.tmpl.texi: Likewise. * doc/todo.tmpl.texi: Update. Sun Jan 4 13:26:03 1997 Stevo Crvenkovski * doc/news.tmpl.texi: Replace my old e-mail. * src/GNUmakefile : add GetDefEncoding.m and GetDefEncoding.h. * src/GetDefEncoding.m : new file. * src/NSGCString.m ([NSGCString -initWithCStringNoCopy:length:freeWhenDone:]): Move [super init] to the begining of code. * src/NSGCString.m ([NSGMutableCString initWithCapacity:]): Likewise. * src/NSGCString.m ([NSGMutableCString - initWithCStringNoCopy:length:freeWhenDone:]): Likewise. * src/NSGString.m ([NSGString - initWithCharactersNoCopy:length:freeWhenDone:]): Likewise. * src/NSGString.m ([NSGMutableString initWithCapacity:]): Likewise. * src/NSGSequence.m ([NSGSequence decompose]): Check for lenght>1: * src/NSString.m ([NSGString initialize]): Set _DefaultStringEncoding variable using GetDefEncoding(). * src/NSString.m initWithData:encoding:]) : Number of bug fixes. * src/NSString.m ([NSString initWithContentsOfFile:]) : Method rewriten. * src/NSString.m ([NSString hash]) : Method rewriten. * src/NSString.m ([NSString lineRangeForRange:]) : New OPENSTEP method implemented. * src/NSString.m ([NSString getLineStart:end:contentsEnd:forRange:]) : New OPENSTEP method implemented. * src/NSString.m ([NSString capitalizedString]) : Take care of white space characters properly. * src/NSString.m ([NSString defaultCStringEncoding]) : Changed to read new _DefaultStringEncoding variable. * src/NSString.m ([NSString availableStringEncodings]) : New OPENSTEP method implemented. * src/NSString.m ([NSString localizedNameOfStringEncoding]) : New OPENSTEP method implemented. * src/NSString.m ([NSString dataUsingEncoding:allowLossyConversion:}) : Number of bug fixes. * src/NSString.m ([NSString writeToFile:atomically:]) : Attempt to write in default c string encoding, if failed write in Unicode. * src/include/GetDefEncoding.h : New file. * src/include/NSString.h typedef enum _NSStringEncoding Changed to OPENSTEP spec. * src/include/NSString.h declare new OPENSTEP methods. Sat Jan 3 14:05:32 1998 Scott Christley * confdefs.h: Delete transient file. * src/include/Foundation.h: New file. * src/include/NSEnumerator.h: New file. * src/GNUmakefile: Install new header files. * src/include/NSUtilities.h: Move NSEnumerator interface to NSEnumerator.h file. * src/NSObject.m (-copyWithZone:): Eliminate semicolon. * Fix memory allocation function usage. (As reported by Matthias Klose ). * src/Connection.m (-_service_forwardForProxy:): Use function instead of function pointer. * src/Decoder.m (-decodeClass, -decodeSelectorWithName:): Likewise. * src/Invocation.m (-initWithReturnType:): Likewise. (-_initArgframeFrom:withType:retainArgs:): Likewise. (-_deallocArgFrame): Likewise. * src/NSAutoreleasePool.m (-reallyDealloc): Likewise. * src/NSConnection.m (-_service_forwardForProxy:): Likewise. * src/TextCStream.m (-decodeValueOfCType:at:withName:): Likewise. * src/include/objc-gnu2next.h (list_cons): Likewise. (list_remove_head, list_free): Likewise. * src/include/preface.h.in (OBJC_FREE): Likewise. Fri Jan 2 13:04:53 1998 Adam Fedor * doc/Makefile.postamble: Generate html,texi from tmpl.texi files. * doc/announce.tmpl.texi: Renamed from announce.texi * doc/faq.tmpl.texi: Likewise. * doc/gnustep-base.tmpl.texi: Likewise. * doc/gnustep-howto.tmpl.texi: Likewise. * doc/gnustep-zones.tmpl.texi: Likewise. * doc/coding-standards.tmpl.texi: Likewise. * doc/install.tmpl.texi: Likewise. * doc/manual.tmpl.texi: Likewise. * doc/news.tmpl.texi: Likewise. * doc/readme.tmpl.texi: Likewise. * doc/todo.tmpl.texi: Likewise. * NSZone.texi: Removed. * STATUS: removed. * MACHINES: removed. * doc/status.tmpl.texi: New file. Wed Dec 31 13:58:51 1997 Adam Fedor * STATUS: Updated status on a few classes. * doc/GNUmakefile (TOP_DOC_FILES): Add GNUstep-HOWTO. * doc/gnustep-howto.texi: Update documentation. * doc/gnustep-faq.texi: Likewise. * doc/install.texi: Likewise. * doc/readme.texi: Likewise. Mon Dec 29 09:16:34 1997 Adam Fedor * src/Random.m ([Random -randomFloatBetween:and:]): Add lowBound (Fix suggested by Masatake Yamato ). Fri Dec 26 10:25:00 1997 Richard Frith-Macdonald * src/NSCalendarDate.m: ([-dateByAddingYears:months:days:hours:minutes:seconds:]) Fixed bug in wrapping months when adding date to december. * src/NSUserDefaults.m: ([-__createArgumentDictionary]) Fixed to use command line args beginning with a dash as defaults keys. Retained old behaviour for -GS and --GS prefixes for backward compatibility. Fri Dec 19 13:09:28 1997 Adam Fedor * src/NSGeometry.m (NSPointFromString, NSSizeFromString, NSRectFromString): New functions. * src/include/NSGeometry.h: New function defs. * NSCTemplateValue.m (-description): Use them. Tue Dec 16 22:35:00 1997 Richard Frith-Macdonald * src/Decoder.m: Modified to use a single, class-wide dummy object as a placeholder in cross-reference tables. This gives a slight speed and memory usage improvement. * src/MemoryStream.m: Avoid using autorelease where possible in order to improve efficiency. * src/NSConnection.m: ([+rootProxyAtPort:]) modified to refrain from creating a new connection when we already have one for the given output port. * src/Random.m: ([-randomDie:]) Fixed to confirm to description in comments. * src/TcpPort.m: Changed size field in packets to be 4 bytes long rather than 2. This allows messages to be more than 64K bytes long and is essential for things like pasteboard operations. Thu Dec 18 16:17:22 1997 Yoo C. Chung * src/NSProcessInfo.m (_gnu_process_noobjc_args): Use malloc(). (_gnu_noobjc_free_vars): Use free(). Thu Dec 11 13:58:39 1997 Adam Fedor * configure.in: Remove unneeded tests. * GNUmakefile (SUBPROJECTS): Remove checks and examples. Tue Dec 9 17:47:21 1997 Yoo C. Chung * src/include/behavior.h: Include . * src/NSProcessInfo.m: Include . * src/NSPipe.m: Include . * src/NSPage.m: Include . * src/NSLog.m: Include . * src/NSHost.m: Include . * src/NSDistributedLock.m: Include . * src/NSDictionary.m: Include . * src/NSBundle.m ([NSBundle +_bundleResourcePathsWithRootPath:subPath:]): Removed unused variables. * src/NSArray.m: Include ([NSArrayNonCore -descriptionWithIndent:]): Changed argument to unsigned. * src/UnixFileHandle.m: Include and . * src/UdpPort.m: Include . * src/StdioStream.m: Include . * src/Coder.m: Include . * src/NSUser.m (NSHomeDirectoryForUser): Use objc_malloc(). * src/NSData.m ([NSDataMalloc -initWithCoder:]): Check malloc. ([NSMutableDataMalloc -initWithCoder:]): Likewise. * src/List.m: Removed unused macros. Sun Dec 7 23:22:07 1997 Stevo Crvenkovski * src/NSGCString.m ([NSGMutableCString -initWithCharactersNoCopy:length:freeWhenDone:]): Changed to invoke instance of NSGMutableString. * src/NSGString.m ([NSGMutableString -initWithCStringNoCopy:length:freeWhenDone:]): Changed to invoke instance of NSGMutableCString. * src/NSGString.m ([NSGMutableString -initWithCharactersNoCopy:length:freeWhenDone:]): Method implemented. Based on code by Richard Frith-Macdonald * src/NSGCString.m ([NSGMutableCString -initWithCStringNoCopy:length:freeWhenDone:]): Changed to fix memory leak in this method. Code by Richard Frith-Macdonald * src/NSGCString.m ([NSGCString -dealoc]): Changed to avoid compiler warning. * src/NSGCString.m ([NSGCString -initWithCStringNoCopy: length: freeWhenDone:]): Changed to conform with class cluster definition. * src/NSGString.m ([NSGString -initWithCharactersNoCopy: length: freeWhenDone:]): Idem. * src/NSGCString.m ([NSGMutableCString -initWithCapacity]): Idem. * src/NSString.m ([NSString -init]): Idem. * src/NSGCString.m ([NSGCString -init]): Method implemented to conform with class cluster definition. * src/NSGCString.m ([NSGMutableCString -init]): Idem. * src/NSGString.m ([NSGString -init]): Idem. * src/NSGString.m ([NSGMutableString -init]): Idem. * src/NSString.m ([NSString -replaceCharactersInRange: withString:]): Change to be subclass responsibillty. This should be pimitive method. * src/NSGString.m ([NSGString -replaceCharactersInRange: withString:]): Move implementation from NSString here. * src/NSGCString.m ([NSGCString -replaceCharactersInRange: withString:]): Idem. * src/NSString.m ([NSString +stringWithString]): New OPENSTEP method implemented. * src/NSString.m ([NSString -substringFromRange]): Method implemented * src/NSString.m ([NSString -substringWithRange]): New OPENSTEP method implemented. * src/NSString.m ([NSString -hash]): Remove C String implementation as Unicode implementation now works. * src/NSString.m ([NSString -getFileSystemRepresentation]) Correct name of method. * src/NSString.m ([NSString -_normalizedString]):Bug fixed. * src/NSString.m ([NSString -mutableCopy]): Implemented to avoid compiler warning. Why is this warning anyway? Method should be inherited from NSObject. * src/NSString.m ([NSString -deleteCharactersInRange:]): Method implemented. * src/NSString.m ([NSString -insertString: atIndex:]): Method implemented. * src/NSString.m ([NSString -setString:]): Method implemented. * src/NSString.h ([NSString +stringWithString:]): Method declared. * src/NSString.h ([NSString -substringWithRange:]): Method declared. Fri Nov 28 12:52:06 1997 Scott Christley * Tools/GNUmakefile (OBJC_PROGRAM_NAME): Reverse prior change. * Tools/Makefile.postamble (after-install): Install gdomap from the proper directory. * checks/nsattributesstring.m (NSFontAttributeName): New variable. (NSForegroundColorAttributeName): New variable. (NSBackgroundColorAttributeName): New variable. * src/GNUmakefile: Install headers in gnustep not gnustep/base. * src/Makefile.preamble (ADDITIONAL_INSTALL_DIRS): Likewise. * src/NSTimeZone.m (LOCALDBKEY, ZONES_DIR): Make NSStrings. (+getTimeZoneFile:): ZONES_DIR is NSString. * src/o_map.m (INLINE): Use macro so its easy to un-inline functions if debugging. Wed Nov 26 16:08:20 1997 Adam Fedor * Tools/GNUmakefile (OBJC-PROGRAM_NAME): Change from underscore. * checks/GNUmakefile: include new test-tool.make. * examples/GNUmakefile: Likewise. * src/Makefile.postamble (FORCE): New target. * src/ostream.m (_ostream_new_stream_struct): Use "r+" for append or read/write mode. Wed Nov 26 11:30:00 1997 Richard Frith-Macdonald * Tools/dwrite.m: Fix problem with uninitialised variable. * src/NSConnection.m: Added [+connectionByOutPort:] and [+connectionByInPort:OutPort:] methods to lookup connections for use by other barts of the DO system. Added [-_service_retain:] and [-retainTraget:] methods to handle special case of retaining of proxies. * src/NSDistantObject.m: ([+newWithCoder:]) modified to fix two problems to do with proxies passed in a triangle - 1. if passed a proxy to an object in a third server, use any existing connection to that third server if possible rather than creating a new connection. 2. if passed a proxy to an object in a third server, tell the third server to retain it's local object for us. * src/NSUserDefaults.m: various modifications to fix for getting the defaults for a user other than the logged in user - eg when a server process runs setuid to a particular user ID and wants to read the defaults for that user rather than the user who actually launched it. Also - added code to break the lock on the defaults database if it is more than five minutes old. * src/include/DistributedObjects.h: modifications for retaining objects. * src/include/NSPortCoder.h: removed unneccessary include. * src/include/NSUserDefaults.h: minor changes for coping with tasks runnning setuid to a user other than the person who launched them. Fri Nov 21 13:14:31 1997 Adam Fedor * src/NSAttributedString.m (-initWIthString:attributes:): Make designated initializer. * src/NSGAttributedString.m: (_initWithString): Save value of textChars. * src/include/NSAttributedString.h: Update comments, Remove attribute strings. Fixes submitted by . Tue Nov 18 14:13:13 1997 Adam Fedor * src/include/NSNotification.h: Correct placeholder size (bug submitted by Ville-Pertti Keinonen . Wed Nov 12 10:10:33 1997 Adam Fedor * src/NSString.m (-initWithFormat:args:): Print a "null string" when string in format is nil. * src/objc-load.c: Remove ifdef HAVE_CONFIG_H. * doc/gnustep-howto.texi: Update for new gdb patch file. Wed Nov 12 12:30:00 1997 Richard Frith-Macdonald * src/Collection.m: ([Enumerator -dealloc]) added call dealloction method in super class to fix memory leak. * src/KeyedCollection.m: Removed initialisation and deallocation methods for KeyEnumerator as these are done in its super class. * src/NSCharacterSet.m: ([-invertedSet:]) added autorelease for data object (created by mutableCopy) in order to fix memory leak. * src/NSData.m: Replaced line accidentally deleted in section only compiled in for systems without shared memory. Thu Nov 6 19:00:00 1997 Richard Frith-Macdonald * Tools/Makefile.postamble: Modified to install gdomap in cpu/os specific location. * src/Dictionary.m: ([-descriptionWithIndent:]) Modified to encode empty strings as "" so that ascii property lists work when a dictionary entry is empty. * src/NSArray.m: ([-descriptionWithIndent:]) Modified to encode empty strings as "" so that ascii property lists work when a string in the array is empty. * src/TcpPort.m: Modified in various places so that we look in the correct location for gdomap. Thu Nov 6 10:14:39 1997 Adam Fedor * src/GNUmakefile (DEFS): Remove PLATFORM_OS. * src/NSBundle.m: Change platform to gnustep_target_os. * src/ostream.m (ostream_getc, ostream_read, ostream_vscanf): Return EOF if stream_obj returned 0. * doc/gnustep-howto.texi: Use today's date. Wed Nov 5 16:10:32 1997 Scott Christley * src/Invocation.m (-setArgument:atIndex:): Add OpenStep method. * src/NSGSet.m (-member:): Delete method. * src/Set.m (-member:): New method. * src/NSMethodSignature.m (-methodReturnType): Return value. * configure.in: Remove check for threads library. * checks/heap.m: Don't prototype random. * Remove dependency upon config.h by headers files and include directly in source files because the config.h file is system dependent and should not be installed. * src/Archiver.m: Include config.h. * src/Array.m: Likewise. * src/Bag.m: Likewise. * src/BinaryCStream.m: Likewise. * src/BinaryTree.m: Likewise. * src/BinaryTreeNode.m: Likewise. * src/CStream.m: Likewise. * src/CircularArray.m: Likewise. * src/Coder.m: Likewise. * src/Collection.m: Likewise. * src/ConnectedCoder.m: Likewise. * src/Connection.m: Likewise. * src/Decoder.m: Likewise. * src/DelegatePool.m: Likewise. * src/Dictionary.m: Likewise. * src/Encoder.m: Likewise. * src/GapArray.m: Likewise. * src/HashTable.m: Likewise. * src/Heap.m: Likewise. * src/IndexedCollection.m: Likewise. * src/Invocation.m: Likewise. * src/KeyedCollection.m: Likewise. * src/LinkedList.m: Likewise. * src/LinkedListNode.m: Likewise. * src/List.m: Likewise. * src/Lock.m: Likewise. * src/MachPort.m: Likewise. * src/Magnitude.m: Likewise. * src/MallocAddress.m: Likewise. * src/MappedCollector.m: Likewise. * src/MemoryStream.m: Likewise. * src/NSAllocateObject.m: Likewise. * src/NSArchiver.m: Likewise. * src/NSArray.m: Likewise. * src/NSAssertionHandler.m: Likewise. * src/NSAttributedString.m: Likewise. * src/NSAutoreleasePool.m: Likewise. * src/NSBitmapCharSet.m: Likewise. * src/NSBundle.m: Likewise. * src/NSCTemplateValue.m: Likewise. * src/NSCalendarDate.m: Likewise. * src/NSCallBacks.m: Likewise. * src/NSCharacterSet.m: Likewise. * src/NSCoder.m: Likewise. * src/NSConcreteNumber.m: Likewise. * src/NSConcreteValue.m: Likewise. * src/NSConnection.m: Likewise. * src/NSCopyObject.m: Likewise. * src/NSCountedSet.m: Likewise. * src/NSData.m: Likewise. * src/NSDate.m: Likewise. * src/NSDeallocateObject.m: Likewise. * src/NSDebug.m: Likewise. * src/NSDictionary.m: Likewise. * src/NSDistantObject.m: Likewise. * src/NSDistributedLock.m: Likewise. * src/NSEnumerator.m: Likewise. * src/NSException.m: Likewise. * src/NSFileHandle.m: Likewise. * src/NSFileManager.m: Likewise. * src/NSGArchiver.m: Likewise. * src/NSGArray.m: Likewise. * src/NSGAttributedString.m: Likewise. * src/NSGCString.m: Likewise. * src/NSGCountedSet.m: Likewise. * src/NSGDictionary.m: Likewise. * src/NSGSequence.m: Likewise. * src/NSGSet.m: Likewise. * src/NSGString.m: Likewise. * src/NSGeometry.m: Likewise. * src/NSHashTable.m: Likewise. * src/NSHost.m: Likewise. * src/NSInvocation.m: Likewise. * src/NSLock.m: Likewise. * src/NSLog.m: Likewise. * src/NSMapTable.m: Likewise. * src/NSMethodSignature.m: Likewise. * src/NSNotification.m: Likewise. * src/NSNotificationCenter.m: Likewise. * src/NSNotificationQueue.m: Likewise. * src/NSNumber.m: Likewise. * src/NSObjCRuntime.m: Likewise. * src/NSObject.m: Likewise. * src/NSPage.m: Likewise. * src/NSPipe.m: Likewise. * src/NSPort.m: Likewise. * src/NSPortCoder.m: Likewise. * src/NSProcessInfo.m: Likewise. * src/NSProxy.m: Likewise. * src/NSRange.m: Likewise. * src/NSRunLoop.m: Likewise. * src/NSScanner.m: Likewise. * src/NSSerializer.m: Likewise. * src/NSSet.m: Likewise. * src/NSString.m: Likewise. * src/NSThread.m: Likewise. * src/NSTimeZone.m: Likewise. * src/NSTimer.m: Likewise. * src/NSUser.m: Likewise. * src/NSUserDefaults.m: Likewise. * src/NSValue.m: Likewise. * src/NSZone.m: Likewise. * src/NXStringTable.m: Likewise. * src/Notification.m: Likewise. * src/NotificationDispatcher.m: Likewise. * src/OrderedCollection.m: Likewise. * src/Port.m: Likewise. * src/Proxy.m: Likewise. * src/Queue.m: Likewise. * src/RBTree.m: Likewise. * src/RBTreeNode.m: Likewise. * src/RNGAdditiveCongruential.m: Likewise. * src/RNGBerkeley.m: Likewise. * src/Random.m: Likewise. * src/RawCStream.m: Likewise. * src/Set.m: Likewise. * src/SplayTree.m: Likewise. * src/Stack.m: Likewise. * src/StdioStream.m: Likewise. * src/Storage.m: Likewise. * src/Stream.m: Likewise. * src/TcpPort.m: Likewise. * src/TextCStream.m: Likewise. * src/Time.m: Likewise. * src/UdpPort.m: Likewise. * src/Unicode.m: Likewise. * src/UnixFileHandle.m: Likewise. * src/behavior.m: Likewise. * src/externs.m: Likewise. * src/find_exec.c: Likewise. * src/md5.c: Likewise. * src/mframe.m: Likewise. * src/o_array.m: Likewise. * src/o_cbs.m: Likewise. * src/o_hash.m: Likewise. * src/o_list.m: Likewise. * src/o_map.m: Likewise. * src/o_x_bas.m.in: Likewise. * src/o_x_cbs.m.in: Likewise. * src/objc-gnu2next.m: Likewise. * src/ostream.m: Likewise. * src/preface.m: Likewise. * src/win32-entry.m: Likewise. * src/include/preface.h.in: Do not include config.h * src/GNUmakefile: Don't install config.h; add target so that config.h gets moved to target cpu/os dependent directory. * src/Makefile.postamble: Move config.h to target directory. * src/Makefile.preamble: Add target directory to include dirs. * src/NSCalendarDate.m (-initWithString:calendarFormat:locale:): Parse the time zone abbreviation and am/pm indicator. * src/md5.c: Correct license comment. Wed Nov 5 13:36:45 1997 Adam Fedor * doc/GNUmakefile (TEXT_FILES): Add GNUstep-HOWTO * doc/Makefile.postamble (GNUstep-HOWTO): New target. * doc/gnustep-howto.texi: New file. Sun Nov 2 15:47:10 1997 Yoo C. Chung * src/NSTimeZone.m: More effecient implementation of [NSTimeZone -abbreviationDictionary] object enumerator. More robust error logging. Description method changes. Sat Nov 1 06:45:00 1997 Richard Frith-Macdonald * src/NSDistributedLock: New OPENSTEP class implementation. * src/GNUmakefile: Add new class to list. * src/NSFileManager: implemented method ([-removeFileAtPath:handler:]) * src/NSString.m: Added two new (OPENSTEP) methods - ([-fileSystemRepresentation]) and ([-fileSystemRepresentation:maxLength:]) * src/NSUserDefaults.m: ([-synchronize]) modified to do locking using NSDistributedLock * src/Foundation/NSDistributedLock.h: New OPENSTEP class definition. * src/Foundation/NSString.h: Added two new (OPENSTEP) methods. Fri Oct 31 17:00:29 1997 Adam Fedor * GNUmakefile (DIST_FILES): Update files. * src/GNUmakefile: Likewise. * checks/GNUmakefile: Likewise. * examples/GNUmakefile: Likewise. * doc/GNUmakefile: Likewise. * admin/GNUmakefile: Likewise. * NSCharacterSets/GNUmakefile: Likewise. * NSTimeZones/GNUmakefile: Likewise. * Tools/GNUmakefile: Likewise. * Tools/Makefile.postamble (copy-dist): New target. Fri Oct 31 15:16:46 1997 Adam Fedor * NSBundle.README: Removed obsolete file. * README.threads: Likewise. * RELEASE-NOTES: Likewise. * GNUmakefile: Remove obsolete files from DIST. Make Tools the second build target. * Tools/GNUmakefile: Include tool.make and make dread, etc as tools. * Tools/Makefile.preamble: Add uninstalled includes and libraries from ../src. * Tools/dremove.m: Add errno.h. * doc/GNUmakefile: Remove unneeded top-level text files. * doc/announce.texi: Update. * doc/install.texi: Likewise. * doc/news.texi: Likewise. * doc/readme.texi: Likewise. * doc/todo.texi: Likewise. Fri Oct 31 10:26:16 1997 Adam Fedor * GNUmakefile: Renamed from Makefile. * src/GNUmakefile: Likewise. * checks/GNUmakefile: Likewise. * examples/GNUmakefile: Likewise. * doc/GNUmakefile: Likewise. * admin/GNUmakefile: Likewise. * NSCharacterSets/GNUmakefile: Likewise. * NSTimeZones/GNUmakefile: Likewise. * Makefile: Dummy make, tells user to use GNU make. * doc/GNUMakefile: Make more text files. * doc/Makefile.postamble: Clean up to make text files. * NSBundle.README: Update. * examples/Makefile.example.in: Remove obsolete file. * examples/configure.example.in: Likewise. Thu Oct 30 15:20:00 1997 Richard Frith-Macdonald * Tools/GNUmakefile: New format make file with the addition of three new tools - dread, dwrite, dremove * Tools/dread.m: New command line tool to read user defaults database. * Tools/dremove.m: New command line tool to remove defaults from database. * Tools/dwrite.m: New command line tool to modify user defaults. * src/Dictionary.m: ([-descriptionWithIndent:]) modified to produce better property-list type description with escaped special chars. * src/NSArray.m: ([-description]) modified to produce better property-list type description with escaped special chars. * src/NSData.m: ([-writeToFile:atomically:]) changed code for handling temporary file to avoid failure due to cross-device links. * src/NSDictionary.m: ([-writeToFile:atomically:]) implemented this method using NSString. * src/NSString.m: ([-stringByAppendingString:]) fixed memory leak. Added new method ([-quotedCString]) for use in writing property lists. Modified ([-appendFormat:]) so that it doesn't leave temporary strings to be autoreleased - small efficiency gain. * src/NSUserDefaults.m: Various minor fixes to get saving to the defaults database to work. * src/Foundation/NSString.h: Added (GNUstep specific) method - [-quotedCString]. * src/Foundation/NSUserDefaults.h: Added (OPENSTEP specific) method - [-setSearchList:]. Thu Oct 30 13:38:51 1997 Scott Christley * Makefile (GNUSTEP_INSTALLATION_DIR): Make default be system. * NSCharacterSets/Makefile: Likewise. * NSTimeZones/Makefile: Likewise. * Tools/Makefile: Likewise. Use objc.make instead of tool.make as the file does not require the foundation library. * admin/Makefile: Likewise. * checks/Makefile: Likewise. Use test.make so that the programs do not get installed. * doc/Makefile: Likewise. * examples/Makefile: Likewise. Use test.make so that the programs do not get installed. * src/Makefile: Likewise. Alter names to correspond with the new recursive library.make. * src/Makefile.postamble: Uninstall header files. * src/NSBundle.m (+mainBundle): Strip off library combo, target os and target cpu is they are part of the directory list to the executable so that the bundle path is the top level dir. * src/externs.m (NSNonRetainedObjectHashCallbacks): Correct name. Thu Oct 30 14:32:28 1997 Adam Fedor * Makefile (GNUSTEP_INSTALLATION_DIR): New variable. * checks/Makefile (TOOL_NAME): Remove duplicate nsattributedstring. * src/Makefile: Add libgnustep-base_ prefix to appropriate variables. * src/NSProxy.m: Add limits.h for Solaris. Tue Oct 28 10:05:00 1997 Richard Frith-Macdonald * src/NSData.m: Added [-replacementObjectForPortCoder:] method to ensure that NSData objects are always sent bycopy. * src/mframe.m: Modified mframe_do_call() and mframe_build_return() to encode/decode a dummy integer value where a method returns void but is NOT declared as being oneway. Mon Oct 27 16:15:00 1997 Richard Frith-Macdonald * Makefile: Added Tools subproject * NSTimeZones/Makefile.postamble: Added distclean code to remove time-zone files leaving only the tar image. * Tools/Makefile: New make file added. * Tools/Makefile.postamble: New file. * Tools/Makefile.preamble: New file. * Tools/gdomap.c: Moved from the src directory with some minor bug fixes and easing of restrictions on deregistering a name. * Tools/gdomap.h: Moved from the src directory with some minor changes and improvements to comments. * checks/Makefile.postamble: Added some stuff for distclean to remove some fo the temporary data files. * checks/Makefile.preamble: Modified to compile with -g flag even if being linked with non-debug libraries. * checks/nsdate.m: Added checks for new NSCalendarDate features. * src/Coder.m: ([-initForReadingWithData:]) modified use of the [-retainCount] method for newly corrected version. * src/Makefile: Removed references to gdomap.[hc] * src/Makefile.postamble: distclean now removes some automatically generated source files. * src/NSBundle.m: Removed own reference counting support in favour of using the standard mechanism but intercepting [-release] to change deallocation behaviour. * src/NSCalendarDate.m: Implemented [-dayOfWeek], added support for week day names (and abbreviations) in descriptions. Implemented some missing formatting directives in descriptions, Fixed the [-initWithYears:months:days:hours:minutes:seconds:timeZone:] method to use the supplied time zone correctly. Implemented [-dateByAddingYears:months:days:hours:minutes:seconds]. Implemented [-years:months:days:hours:minutes:seconds:sinceDate:]. * src/NSData.m: Fixed shared memory to only remove shared-memory IDs from the system when the last object having mapped the memory is deallocated. * src/NSObject.m: ([-retainCount]) corrected to return the number of times the object has been retained. ([-autorelease]) use [-retainCount] so that this works with classes that have implemented their own retain./release/retainCount. * src/NSProxy.m: Fixed retain counting scheme so that [-retainCount] returns the correct value. * src/NSRunLoop.m: ([-runMode:beforeDate:]) fixed possible problem with passing a date obejct which might have been released unexpectedly. * src/NotificationDispatcher.m: Fixed retain counting scheme so that [-retainCount] returns the correct value. * src/Proxy.m: Fixed retain counting scheme so that [-retainCount] returns the correct value. * src/TcpPort.m: Modified to expect to find gdomap in the Tools directory of the new GNUstep directory standard. * src/include/NSBundle.h: Removed unneeded retsain count variable. * src/include/NSData.h: Conform to NSCoding protocol. * src/include/NSDate.h: Added two OPENSTEP methods. Fri Oct 24 14:36:23 1997 Adam Fedor * Removed unused files. * checks/beh.m, checks/float.c: Removed * examples/nx-client.m, examples/nx-server.m, examples/port-client.m, examples/port-server.m: Likewise. * src/AutoreleasePool.m, src/AutoreleaseStack.m, src/BinaryTreeEltNode.m, src/ConstantString.m, src/EltNodeCollector.m, src/LinkedListEltNode.m, src/Makefile.sed.nt, src/MethodSignature.m, src/NXConnection.m, src/NXProtocolChecker.m, src/NXProxy.m, src/NotificationQueue.m, src/ObjectRetaining.m, src/ProtocolEnforcer.m, src/RBTreeEltNode.m, src/ReleasePool.m, src/RetainingNotifier.m, src/Ring.m, src/RunLoop.m, src/SocketPort.m, src/SunRpcPort.m, src/Thread.m, src/Tree.m, src/TreeNode.m, src/argframe.m, src/data.m, src/eltfuncs.m, src/gnu4next.m, src/gnu4nextrt.m, src/o_vprintf.c, src/vfscanf.c: Likewise. * src/include/AutoreleasePool.h, src/include/AutoreleaseStack.h, src/include/BinaryTreeEltNode.h, src/include/LinkedListEltNode.h, src/include/RBTreeEltNode.h, src/include/SmallInt.h, src/include/SocketPort.h, src/include/abort.h, src/include/allocs.h, src/include/atoz.h, src/include/bitops.h, src/include/data.h, src/include/magic.h, src/include/minmax.h, src/include/number.h: Likewise. Fri Oct 24 20:16:14 1997 Yoo C. Chung * src/StdioStream.m ([StdioStream -dealloc]): Check fp before closing. Wed Oct 22 19:54:07 1997 Yoo C. Chung * src/NSTimeZone.m ([NSTimeZone +initialize]): Fallback time zone now only set to UTC. (NSConcreteTimeZoneDetail): Changed method. ([NSConcreteTimeZoneDetail -timeZoneDetailForDate:]): New method. ([NSConcreteTimeZoneDetail -timeZoneName]): Likewise. ([NSConcreteTimeZoneDetail -timeZoneDetailArray]): Likewise. ([NSTimeZone +timeZoneWithName:]): Updated for changed methods in NSTimeZoneDetail. ([NSInternalTimeTransition -description]): Print class name. ([NSConcreteTimeZone -description]): Likewise. ([NSConcreteAbsoluteTimeZone -description]): Likewise. ([NSConcreteTimeZoneDetail -description]): Likewise. Mon Oct 20 09:51:53 1997 Adam Fedor * Version: Update ftp sites. * checks/Philosopher.h: Removed. * checks/Philosopher.m: Likewise. * checks/basic-old.m: Likewise. * checks/nsarchiving.m: Likewise. * src/Foundation/NSUser.h: Likewise. * src/Foundation/x-basics.h.in: Likewise. * src/Foundation/x-callbacks.h.in: Likewise. * checks/Makefile (HDRS): Add oldserver.h. * doc/Makefile: Add other texi files. * NSCharacterSets/Makefile (DIST_FILES): Remove Makefile.preamble. * NSTimeZones/Makefile (DIST_FILES): Likewise. * NSCharacterSets/Makefile.postamble (copy-dist): Correct copy. * NSTimeZones/Makefile.postamble (copy-dist): Correct dist files. Sat Oct 18 12:27:56 1997 Scott Christley * Get NSTimeZone to work in GNUstep directory structure. * src/NSTimeZone.m (+getAbbreviationFile): New method. (+getRegionsFiles, +getLocalTimeFile): New methods. (+getTimeZoneFile:): New method. (TIME_ZONE_DIR, ABBREV_DICT, REGIONS_FILE, LOCAL_TIME_FILE, ZONES_DIR): Correct paths. (+initialize): Use private method to get resource file name. (+timeZoneWithName:, +abbreviationMap, +timeZoneArray): Likewise. * checks/create-abbrevs.m: New file. * checks/create-regions.m: New file. * checks/nstimezone.m: New file. * checks/Makefile: Add new checks. * src/NSBundle.m (+pathForResource:ofType:inRootPath:inDirectory:withVersion:): If no extension then look for file without extension before calling _bundle_path_for_name() which does not handle the case where the resource name contains a directory path within it. * src/NSBundle.m (+pathForGNUstepResource:ofType:InDirectory:): New method. * src/include/NSBundle.h (+pathForGNUstepResource:ofType:InDirectory:): New method. Fri Oct 17 12:44:18 1997 Scott Christley * src/NotificationDispatcher.m (-init): Make the key callbacks be NSObject for the notification name map table so that isEqual: is used for comparison. Fri Oct 17 09:16:36 1997 Adam Fedor * checks/Makefile.postamble: Add English.lproj dir to copy-dist. * src/NSCalendarDate.m (-descriptionWithCalendarFormat:locale): Use VSPRINTF_LENGTH macro to return string length. * src/NSData.m ([NSMutableDataMalloc -setCapacity:): Use realloc instead of objc_realloc. * src/NSHost.m (-_initWithHostEntry:): Use memcpy instead of memmove. * src/UnixFileHandle.m (getAddr): Remove uneeded htonl. Changes from Richard Frith-Macdonald . * src/NSTimeZone.m: Reformat with better spacing. ([NSTimeZone +initialize]): Find local time zone. Changes from Yoo C. Chung . Thu Oct 16 16:14:31 1997 Scott Christley * checks/Makefile: Add variables to create bundle example. * checks/NXStringTable.example: Move to English.lproj subdir. * checks/nsarray.m: Turn off behaviour debugging. * checks/nsdictionary.m: Add isEqual check. * checks/values.m: Add isEqual check. * src/Collection.m (isEqual:): Don't require that the classes be the same. * src/NSDictionary.m: Fix implementation by creating NSDictionaryNonCore and NSMutableDictionaryNonCore classes; move implemented methods to non-core classes. * src/include/NSDictionary.h: Likewise. * src/NSGDictionary.m: Add behaviour from non-core classes. * src/ObjCRuntime.m (NSClassFromString): Use objc_lookup_class instead of objc_get_class so that the program will not abort if the class is not found. * src/NSTimeZone.M (TIME_ZONE_DIR): Eliminate reference to obsolete GNUSTEP_INSTALL_DIR macro. * src/NSZone.m: Use default zone if zone is NULL. * src/include/NSZone.h: Likewise. * src/behavior.m (behavior_class_add_class): Add debug message. * src/Makefile: Define macros for the target directory and library combo that the library is compiled for. * src/NSBundle.m (gnustep_target_dir, library_combo): New variables. (bundle_object_name): Use the target directory and library combo when determine where the executable file is located. (+_bundleResourcePathsWithRootPath:subPath:): Don't search directory specified by GNUSTEP_LIBRARY_PATH environment variable. * src/NSCharacterSet.m (+_bitmapForSet:number:): Rewrite to search the user, local, and system directories based upon environment variable values. * src/NSData.m (getBytes:range:): Fix range check. (subdataWithRange:, replaceBytesInRange:withBytes:): Likewise. (resetBytesInRange:): Likewise. Wed Oct 1 14:44:17 1997 Adam Fedor * src/NSConnection.m ([-registerName:]): Remove duplicate method. * src/NSDistantObject.m ([-encodeWithCoder:]): Likewise. * src/Proxy.m: ([NSObject -selectorTypeForProxy]): Likewise. * Makefile: Add new subproject. * NSTimeZones: New directory. * NSTimeZones/Makefile: New file. * NSTimeZones/Makefile.postamble: Likewise. * NSTimeZones/NSTimeZones.tar: Likewise. Tue Sep 30 08:57:44 1997 Adam Fedor * src/NSData.m: Remove obsolete includes. * src/NSMutableData.m: Remove file. * src/NSSerializer.m: Remove references to obsolete data classes. Sun Sep 28 21:15:00 1997 Richard Frith-Macdonald * checks/nsdata.m: Added a whole lot of trivial checks. * checks/oldserver.h: Added include file for oldserver.m, oldclient.m * src/Coder.m: ([-initForWritingWithMutableData:]) added code to wrap the NSMutableData object inside a MemoryStream since NSMutableData no longer conforms to the MemoryStreaming protocol. ([-initForReadingWithData:]) added code to wrap the NSData object inside a MemoryStream. ([+unarchiveObjectWithData:]) added code to wrap the NSData object inside a MemoryStream. ([-classForPortCoder:]) changed to [-classForPortCoder] to conform to OpenStep spec. * src/Makefile.in: Removed NSGData.[hm] and NSHData.[hm] * src/MemoryStream.m: Rewritten to use NSData and NSMutableData objects to hold the memory. * src/NSAttributedString.m: ([-classForPortCoder:]) changed to [-classForPortCoder] to conform to OpenStep spec. * src/NSData.m: Extensively rewritten to have the OPENSTEP class cluster architecture. Should support the full OPENSTEP api and have shared memory support and static buffer support as extensions. * src/NSDate.m: ([-classForPortCoder:]) changed to [-classForPortCoder] to conform to OpenStep spec. * src/NSDistantObject.m: ([-classForPortCoder:]) changed to [-classForPortCoder] to conform to OpenStep spec. * src/NSGArchiver.m: ([-archiverData]) modified to cope with changes to NSData and NSMutableData. * src/NSGAttributedString.m: ([-classForPortCoder:]) changed to [-classForPortCoder] to conform to OpenStep spec. * src/NSGCString.m: ([-classForPortCoder:]) changed to [-classForPortCoder] to conform to OpenStep spec. * src/NSGString.m: ([-classForPortCoder:]) changed to [-classForPortCoder] to conform to OpenStep spec. * src/NSPortCoder.m: ([-classForPortCoder:]) changed to [-classForPortCoder] to conform to OpenStep spec. ([-isByCopy]) changed to [-isBycopy] to conform to OpenStep. * src/NSString.m: ([-classForPortCoder:]) changed to [-classForPortCoder] to conform to OpenStep spec. * src/Port.m: ([-classForPortCoder:]) changed to [-classForPortCoder] to conform to OpenStep spec. * src/StdioStream.m: ([-initWithFilename:fmode:]) fixed excessive releases of string. ([-initWithFileDescriptor:fmode:]) fixed excessive releases of string. ([-close]) clear file pointer when it is closed to prevent attempted operations on bad pointer. * src/TcpPort.m: ([-classForPortCoder:]) changed to [-classForPortCoder] to conform to OpenStep spec. Also multiple changes to deal with the rewrite of MemoryStream. * src/UdpPort.m: ([-classForPortCoder:]) changed to [-classForPortCoder] to conform to OpenStep spec. * src/UnixFileHandle.m: Numerous changes improving logging and tidying stuff. failed initialisers should now all return nil rather than raising exceptions. * src/include/MemoryStream.h: Changed this class to use NSData and NSMutableData to hold its contents. Added methods to initialise with a data object so we can wrap an NSData or NSMutableData inside a MemoryStream to give it Streaming behaviour. * src/include/NSData.h: Added some extension methods for creating data objects with static buffers or shared memory buffers. * src/include/NSDistantObject.m: ([-classForPortCoder:]) changed to [-classForPortCoder] to conform to OpenStep spec. * src/include/NSObject.m: ([-classForPortCoder:]) changed to [-classForPortCoder] to conform to OpenStep spec. * src/include/NSPortCoder.m: ([-classForPortCoder:]) changed to [-classForPortCoder], and ([-isByCopy]) changed to [-isBycopy] to conform to OpenStep spec. Fri Sep 26 20:43:12 1997 Adam Fedor * Fix Makefiles so snapshots and releases work again * Makefile: Include missing DIST_FILES * Makefile.postamble: Correct csnap projects. * NSCharacterSets/Makefile: Include missing DIST_FILES. * admin/Makefile: Likewise. * admin/Makefile: Correct snap target. * checks/Makefile: Include missing DIST_FILES. * checks/Makefile.postamble: New file. * examples/Makefile: Include missing DIST_FILES. * examples/Makefile.postamble: New file. * doc/Makefile.postamble: New file. * src/Makefile: Include missing DIST_FILES. * ssrc/Makefile.postamble: Fix AUTHORS depend, copy-dist. * STATUS: Update. * README.foundation: Remove obsolete file. Sat Sep 23 10:18:41 2017 Scott Christley * Convert to GNUstep makefile package. * Makefile: New file. * Makefile.postamble: New file. * config.mak.in: New file. * Makefile.in: Delete. * Makefile.sed.nt: Delete. * Makeconf: Delete. * configure.in (AC_OUTPUT): No longer create the makefiles. * NSCharacterSets/Makefile: New file. * NSCharacterSets/Makefile.postamble: New file. * NSCharacterSets/Makefile.in: Delete. * admin/Makefile: New file. * admin/Makefile.postamble: New file. * admin/Makefile.in: Delete * checks/Makefile: New file. * checks/Makefile.preamble: New file. * checks/Makefile.in: Delete. * checks/Makefile.sed.nt: Delete. * examples/Makefile: New file. * examples/Makefile.preamble: New file. * examples/Makefile.in: Delete. * src/Makefile: New file. * src/Makefile.preamble: New file. * src/Makefile.postamble: New file. * src/Makefile.in: Delete * The installation of the header files was modified slightly to correspond with the GNUstep makefile package. All OpenStep headers go into Foundation while the gnustep-base specific headers go into gnustep/base. * checks/coder.m: Correct header directory. * checks/cstream.m: Likewise. * checks/oldserver.m: Likewise. * checks/string.m: Likewise. * src/include/Connection.h: Likewise. * src/include/NSConnection.h: Likewise. * src/include/NSPortCoder.h: Likewise. * src/include/Notification.h: Likewise. * src/include/NotificationDispatcher.h: Likewise. Mon Sep 22 17:14:32 1997 Adam Fedor * checks/NSData-test.m: Change main to return int. * checks/coder.m: Check for nil names -- Solaris can't print NULL strings. * checks/nsattributedstring.m: Add test to main. * checks/values.m: Remove exception handlers. * doc/coding-standards.texi: New file. * doc/Makefile.in: Add new texi file, CODING-STANDARDS target.. * src/Collection.m ([ConstantCollection -_collectionReleaseContents]): Release only if count > 0. * src/Set.m ([Set dealoc]): Set contents_hash to 0 and call super. * src/Set.m ([Set count]): If !contents_hash return 0; * src/Makefile.in: remove extra Collection.m. * src/NSArray.m ([NSArray -initWithObjects:rest:]): REALLOC before overflow of array. * src/NSConcreteValue.m ([NSConcreteValue -initValue:withObjCType:]): Change exceptions to NSLog and return nil. Fri Sep 22 09:50:52 2017 Scott Christley * src/NSArray (initWithObjects:rest:): Fix count. Tue Sep 16 15:50:39 1997 Adam Fedor * src/Dictionary.m ([Dictionary -descriptionWithIndent:]): Rewrite to pretty-print description. * src/NSDictionary.m ([NSDictionary -description]): Remove redundant method implementation. ([NSDictionary -descriptionWithIndent:]): Likewise. * src/NSArray.m ([NSArray -descriptionWithIndent:]): Implement. * src/NSCTemplateValue ([NSCTemplateValue description]): Add semicolon to last value. * src/NSValue: ([NSValue valueFromString:]): New method. * src/NSNumber: ([NSValue valueFromString:]): Likewise. * src/include/NSValue.h: Define new method. * src/NSCharacterSet.m ([NSCharacterSet -_bitmapForSet:]): Fix test path name. * src/NSString ([NSString initWithFormat:arguments:]): Take care of formatted string case "%*s". ([NSString -stringByAppendingPathComponent:]): Exception only if string starts with '/'. ([NSString -stringByAppendingPathExtension:]): Likewise. Mon Sep 15 21:27:00 1997 Richard Frith-Macdonald * src/NSHData.m: Fixed a couple of bugs occurring when allocation of shared memory segments failed. Also added class methods to query and set the size of the blocks in which shared memory is allocated. * src/include/NSHData.h: Added class methods for query and set of size of shared memory allocation blocks. Sat Sep 13 10:05:57 1997 Scott Christley * The GNU tools for building a DLL on Windows only allow functions and not data to be exported; therefore, all global variables were moved into a separate file, externs.m, and added to the import library for the DLL so that those variables would be accessible outside of the DLL. * configure.in (PIPE): Make the -pipe a configure option. (DLLTOOL): Add support for building DLLs. (disable-static): New configure option to disable the building of the static library when building a shared library. (pcthread, pthread, m): Add checks for pcthread and math libraries. (sys/stat.h, sys/vfs.h, sys/statfs.h, statvfs): Add checks for filesystem related headers and functions. (getcwd): Remove duplicate check. * src/win32-entry.c: Rename to win32-entry.m * src/externs.m: New file. * src/libgnustep-base.def: New file. * src/Connection.m: Move all global variables to externs.m. * src/NSArchive.m: Likewise. * src/NSBundle.m: Likewise. Comment out code that would not compile on WIN32. * src/NSException.m: Likewise. (dealloc): Release instance variables. * src/NSFileManager.m: Likewise. Add WIN32 specific code. * src/NSHashTable.m: Likewise. * src/NSMapTable.m: Likewise. * src/NSThread.m: Likewise. (-init): Set the thread data first. * src/NSUserDefaults.m: Likewise. * src/Stream.m: Likewise. * src/TcpPort.m: Likewise. * src/o_cbs_char_p.m: Likewise. * src/o_cbs_id.m: Likewise. * src/o_cbs_int.m: Likewise. * src/o_cbs_int_p.m: Likewise. * src/o_cbs_void_p.m: Likewise. * checks/Makefile.in: Do not link with math library. * checks/NSData-test.m: Correct directory for include files. * checks/diningPhilosophers.m (WIN32): Check different macro. * checks/nsattributedstring.m (main): New function. * checks/nsbundle.m: Do not include for MINGW32. * src/Makefile.in: Add support for building a DLL. Break out the single install target into multiple targets. * src/NSCalendarDate.m (-descriptionWithCalendarFormat:locale:): Add character string month names. (short_month, long_month): New static arrays. * src/NSDate.m (+timeIntervalSinceReferenceDate): Also test _WIN32. * src/NSCharacterSet.m (NSCharacterSet_PATH): Don't specify full path, just bundle directory. * src/NSDictionary.m (-initWithContentsOfFile:): Make sure the returned object is an NSDictionary. * src/NSObject.m (initialize): Create global lock. (-performSelector:, -performSelector:WithObject:) (-performSelector:withObject:withObject:): New methods. * src/include/NSObject.h: Add prototype for global lock. (-performSelector:, -performSelector:WithObject:) (-performSelector:withObject:withObject:): New methods. * src/NSProcessInfo.m (_gnu_process_args): Check if NULL. For MINGW32, have NSProcessInfo access the global variables directly. * src/NSString.m: Add support for different path components that are supported on WIN32. (rangeOfCharacterFromSet:options:mask:): Correct assert. (-componentsSeparatedByString:): Correct calculation of search range. * src/NSUser.m: Check _WIN32 macro as well. * src/Time.m: Likewise. * src/RunLoop.m (_AIX): Include header file. UNIX is vastly different from WIN32 so separate the functionality into different methods. Move all global variables to externs.m. (-acceptWIN32InputForMode:beforeDate:): New method. (-acceptUNIXInputForMode:beforeDate:): New method. (-acceptInputForMode:beforeDate:): Call the appropriate method depending upon whether a UNIX or WIN32 system. * src/StdioStream.m: Comment out code that would not compile on WIN32. * src/include/StdioStream.h (-rewindStream): Add prototype. * src/find_exec.c: Handle the different path separator in the PATH environment variable and the different path component which is supported on WIN32. Also add common WIN32 extensions to the filename when searching for the executed file. * src/include/NSDate.h (-initWithTimeIntervalSince1970:): ADd missing method prototype. * src/include/NSHashTable.h: Move typedefs that were in NSHashTable.m to here so that externs.m has access to them. * src/include/NSMapTable.h: Move typedefs that were in NSMapTable.m to here so that externs.m has access to them. * src/include/UdpPort.h (WIN32): Use __WIN32__ macro instead. * src/include/fake-main.h: Do not redefine main on MINGW32. * src/include/preface.h.in: Add WIN32 specific definition. Fri Sep 12 12:27:00 1997 Richard Frith-Macdonald * src/NSString.m: Added [-classForPortCoder:]) method for NXConstantString to prevent minor DO memory leak. Fri Sep 12 6:15:00 1997 Richard Frith-Macdonald * src/NSAttributedString.m: Added the [-classForPortCoder:] and [-replacementObjectForPortCoder:] methods to ensure that strings are always sent over DO bycopy. * src/NSDistantObject.m: Fixed the types of the parameters to a few methods to avoid compiler warnings. * src/NSGAttributedString.m: Added the [-classForPortCoder:] and [-replacementObjectForPortCoder:] methods to ensure that strings are always sent over DO bycopy. * src/NSGCString.m: Added the [-classForPortCoder:] and [-replacementObjectForPortCoder:] methods to ensure that strings are always sent over DO bycopy. * src/NSGString.m: Added the [-classForPortCoder:] and [-replacementObjectForPortCoder:] methods to ensure that strings are always sent over DO bycopy. * src/NSHData.m: Added the [-classForPortCoder:] and [-replacementObjectForPortCoder:] methods to ensure that data objects are always sent over DO bycopy. * src/NSProxy.m: Commented out a couple of methods whose OPENSTEP style implementation was incomplete so that the old (working) GNUstep implementation is used. * src/NSRunLoop.m: Moved some code around to fix problems with earlier patch being applied in wrong place. Wed Sep 10 18:03:22 1997 Scott Christley * config.guess: Update. * config.sub: Add mingw32. * src/NSArray.m (-initWithObjects:rest:): The first object is allowed to be nil and the count needs to be reduced by one before calling -initWithObjects:count: Tue Sep 9 10:15:00 1997 Richard Frith-Macdonald * src/NSConnection.m: Made numerous changes to fix memory leak with ports never being released and to fix problems in port invalidation associated with that. Also added code to cope with odd cases like when a remote application dires while we are waiting for a response from it. * src/NSPort.m: Added [-release] method which ensures that ports are invlidated before they are finally deallocated. * src/NSPortCoder.m: Catch exceptions during attempt to write data. * src/NSRunLoop.m: Fixed this so that a count is kept of the number of times a port has been added to the run loop as per the OPENSTEP documentation. * src/TcpPort.m: Fixed a minor retain/release problem. * src/UnixFileHandle.m: Added loads of checks so that attempts to use a file handle which has been closed will fail/generate an exception rather than crashing things! Also modified for changes to NSRunLoop. * src/include/NSRunLoop.h: Modified the interface for adding watchers for events with a count of the number of times they have been added. * src/include/Port.h: Removed [-isValid] - now in NSPort. Tue Aug 26 15:47:54 1997 Adam Fedor * src/NSCTemplateValue.m ([NSCTemplateValue -description]): New method. * src/NSConcreteValue.m ([NSConcreteValue -description]): Likewise. * src/NSNumber.m ([NSNumber -description]): use -stringValue. Fri Aug 29 13:25:51 1997 Adam Fedor * src/Makefile.in: Add LIBS macro. * src/UnixFileHandle.m: Add include for Solaris. * src/NSHData.m: Include errno.h Thu Aug 28 16:15:00 1997 Richard Frith-Macdonald * configure.in: Added check for presence of inet_aton(). * src/Array.m: Added NSSerializer.m * src/NSConnection.m: ([-_initCollectionWithCoder:]): Removed redundant OBJC_MALLOC() which was causing a memory leak. * src/Collection.m: ([-_decodeContentsWithCoder:]): Added code to release newly decoded contents to avoid massive memory leak. * src/Dictionary.m: Restructured deallocation process so that the dictionary gets deallocated properly rather than just it's contents being released. * src/Makefile.in: Added NSDebug.m and NSDebug.h * src/NSAllocateObject.m: Minor modification to permit counting of the number of instances of any object allocated. * src/NSDeallocateObject.m: Minor modification to permit counting of the number of instances of any object deallocated. * src/Debug.m: Added functions for monitoring allocation and deallocation of objects. Also an implementation of strerror() for systems which don't have it. * src/NSHost.m: minor portability fixes. * src/NSPort.m: ([-isValid]): implemented this method. * src/NSSerializer.m: Misc tidying up and minor fixes. * src/Port.m: Removed retain/release methods - these are handled by NSObject. * src/StdioStream.m: Moved implementation of strerror() to NSDebug.m. * src/TcpPort.m: Various alterations to try to ensure that ports are automatically retained and released correctly. * src/UnixFileHandle.m: Various alterations to try to ensure that things are always released correctly. * src/include/NSDebug.h: Interface for debugging facilities. * src/include/NSPort.h: Added variable to handle invalidation. * src/include/NSSerialization.h: Fixed some errors introduced in last change. * src/include/Port.h: Avoid use of bitfields - some compiler versions seem to mess up. * src/include/config.h.in: Added some constants for NSHData and UnixFileHandle. Tue Aug 19 09:45:00 1997 Richard Frith-Macdonald * src/Dictionary.m: Added [-description] to perform OpenStep style description of dictionary contents (for property-list strings). * src/Makefile.in: Added NSSerializer.m * src/NSConnection.m: Implemented [+defaultConnection] method. * src/NSHData.m: Fixed bug in resizing buffer - when going from malloced-memory to shared-memory the buffer contents were not being copied! * src/NSSerializer.m: Implementation of the NSSerializer and NSDeserializer classes for handling property-lists. * src/include/NSConnection.h: Added [-makeNewConnection:sender:]. * src/include/NSDictionary.h: Added [+dictionaryWithObjectsAndKeys:]. * src/include/NSSerialisation.h: Added interface definitions for the NSSerializer and NSDeserializer clases. * src/proplist.l: Fixed pattern definition for matching NSData items and relaxed rules a little to permit newlines. Also fixed severe memory leaks. * src/proplist.y: Fixed excessive number of autoreleases and restructured slightly so that temporary objects are released immediately rather than being autoreleased at the end of the parse - should avoid out-of-memory problems when parsing huge property-lists. Thu Aug 14 14:00:00 1997 Richard Frith-Macdonald * checks/Makefile.in: Renamed client and server to oldclient and oldserver. Created new versions for OpenStep D.O. Added nsdata and nshost. * checks/NSData-test.m: Updated in line with current NSRange code. * checks/client.m: Revised version for OPENSTEP D.O. * checks/nsarchiver.m: Added a couple of checks to do with allocation. * checks/nsarray.m: Added some retain count checks. * checks/nsdata.m: Test memory mapped file initialisation. * checks/nshost.m: Basic tests for nshost class. * checks/nstimer.m: Changed to use NSRunLoop. * checks/oldclient.m: Old version for GNU D.O. * checks/oldserver.h: Old version for GNU D.O. * checks/oldserver.m: Old version for GNU D.O. * checks/server.h: Revised version for OPENSTEP D.O. * checks/server.m: Revised version for OPENSTEP D.O. * checks/tcpport-client.m: Modified for changed tcpport. * checks/tcpport-server.m: Modified for changed tcpport. * configure.in: Added checks for mapped file and shared memory support. * examples/first-server.m: Include NSRunLoop.h rather than RunLoop.h. * examples/second-client.m: Include NSRunLoop.h rather than RunLoop.h. * src/ConnectedCoder.m: ([ConnectedEncoder -dismiss]): Changed the method used to send an encoded packet. * src/Connection.m: ([Connection -_service_forwardForProxy:]): Fixed another memory leak. * src/Dictionary.m: Added [-allKeys] and [-allValues] * src/Invocation.m: Added methods to encode bycopy over OPENSTEP D.O. * src/Makefile.in: Updated for new OPENSTEP D.O. classes etc. * src/NSConnection.m: New implementation for OPENSTEP D.O. * src/NSData.m: Altered to use NSHData as default concrete class and added serialization stuff from libFoundation. * src/NSDate.m: Added methods to ensure that NSDate objects are sent over the wire bycopy. * src/NSDistantObject: New implementation of this OPENSTEP class based on code from Proxy.m * src/NSFileHandle.m: Changed notification names for GNUstep extensions to have a GS prefix rather than an NS prefix. * src/NSGArchiver.m: Changed to work using NSHData objects. * src/NSHData.m: New version of NSData which supports memory mapped files and shared memory for large objects. * src/NSHost.m: A few minor changes to get this to compile without warnings under Linux. * src/NSPort.m: Implementation of this OPENSTEP class as a base class for real port objects. * src/NSPortCoder.m: New implementation of this OPENSTEP class based on the code from ConnectedCoder.m * src/NSProxy.m: New implementation of this class. * src/NSRange.m: (NSMakeRange()): added check for possible integer overflow. * src/NSRunLoop.m: Complete implementation of OPENSTEP API based on the code from RunLoop.m with some rewriting and lots of additions. * src/NSTimer.m: Altered to use NSRunLoop instead of RunLoop * src/Port.m: Changed to use timeouts when sending packets, use the OpenStep notification names, and be encoded bycopy with NSConnection. * src/RunLoop.m: removed this file - NSRunLoop does everything. * src/TcpPort.m: Alterations for revised version of nameserver protocol and to perform timeouts when sending data. * src/UnixFileHandle.m: Updated for changes in notification names and NSRunLoop class. * src/gdomap.c: Improved startup time, changed nameserver protocol to permit 4-byte port IDs (eg mach ports) and to permit the nameserver to be used by non-Distributed-Objects applications. * src/gdomap.c: Imroved nameserver protocol. * src/include/DistributedObjects.h: New header file to contain interface information which is only for internal used by the distributed objects system. * src/include/NSConnection.h: New interface definition file. * src/include/NSData.h: Corrected a few methods to conform to OpenStep. * src/include/NSDictionary.h: Changed methods to require NSObject keys rather than NSStrings. * src/include/NSDistantObject.h: New interface definition file. * src/include/NSFileHandle.h: Changed notification names for extensions. * src/include/NSHData.h: New interface definition file. * src/include/NSPort.h: New interface definition file. * src/include/NSPortCoder.h: New interface definition file. * src/include/NSProxy.h: New interface definition file. * src/include/NSRunLoop.h: Complete interface for NSRunLoop class. * src/include/NSSerialization.h: Fixed typos in method names. * src/include/Port.h: Changed Port to inherit from NSPort and added a timeout to the method for sending data. * src/include/RunLoop.h: Removed RunLoop stuff and changed it to use NSRunLoop instead. * src/include/UnixFileHandle.h: Changed gnustep extension notification names and altered class to work with new NSRunLoop. * src/include/byte_order.h: Incorporated this file from libFoundation. * src/mframe.m: (mframe_do_call()): modified this to tell the decoder function when it has finished so that the decoder can cleanup safely. Thu Aug 28 16:36:03 1997 Adam Fedor * src/NSUser.m (NSUserName): Check for login_name in other places (bug submitted by Manuel Guesdon . Tue Jul 15 13:55:19 1997 Gregor Hoffleit * configure.in: Check for getcwd and pthread library. * src/find_exec.c: Use getcwd if available. Fri Jul 11 13:55:19 1997 Richard Frith-Macdonald * checks/Makefile.in: Added nsfilehandle.m and improved 'clean' * checks/nsfilehandle.m: Rudimentary tests for NSFileHandle class. * src/LinkedList.m ([LinkedList -removeObject:]): Clear the pointer to the list in the removed list element so it know it is no longer in a list. * src/Makefile.in: Added NSFileHandle, UnixFileHandle and NSNotificationQueue. Fixed link libraries for gdomap. * src/NSDate.m: Added code to ensure that NSDate objects are always sent over the wire bycopy. * src/NSFileHandle.m: Implemented this OPENSTEP class in full. * src/NSFileManager.m ([NSFileManager -fileAttributesAtPath:traverseLink:): Fixed to return full list of attributes. ([NSFileManager -findNextFile): Fixed retain/release problem. * src/NSNotificationQueue.m: Imported class from libFoundation and modified for gstep-base with a few bug fixes and thread stuff. * src/NSPipe.m: Implemented this OPENSTEP class in full. * src/NSThread.m: Modified to ensure that a threads dictionary persists until the end of the thread! * src/NSNotificationDispatcher.m: Modified to avoid multiple identical notification observer requests and fixed posting of notifications so that observer requests can be safely removed by notification handlers. * src/RunLoop.m: Modifications for NSNotificationQueue, per-thread default run-loops, and safer file descriptor watching. * src/TcpPort.m: Added include for solaris. * src/UnixFileHandle.m: Wrote this class as a concrete implementation of NSFileHandle. * src/gdomap.c: Modified to make autolaunch of this daemon work more reliably. Also modified to make probes for other servers take place asynchronously. * src/gdomap.h: Tidied comments up a bit. * src/include/NSFileHandle.h: Added this OPENSTEP include file. * src/include/NSNotificationQueue.h: Added this from libFoundation. * src/include/UnixFileHandle.h: Added header file for UnixFileHandle. * src/mframe.m: Hacked this about to get all return types working for DO under linux on i386 family. Requires more work and compiler or Objective-C runtime support for a more general solution. Mon Jul 7 02:40:45 1997 Geoffrey Berry * src/NSString.m ([NSString -componentsSeparatedByString:]): Fixed calculation of new search range. Mon Jun 9 16:05:26 1997 ANOQ of the sun * src/NSAttributedString.m: New file. * src/NSGAttributedString.m: New file. * src/include/NSAttributedString.m: New file. * src/include/NSGAttributedString.m: New file. * src/Makefile.in: Add new files into lists. * checks/nsattributedstring.m: New file. * checks/Makefile.in: Add new file into list. Wed Jun 4 01:04:50 1997 Yoo C. Chung * src/include/preface.h.in: Include . * src/include/NSDate.h (NSTimeZone): Added new method -abbreviationMap. * src/NSCalendarDate.m: Adjust for time zone detail. ([NSCalendarDate -initWithYear:month:day:hour:minute:second:timeZone:]): Set time zone detail properly. ([NSCalendarDate -descriptionWithCalendarFormat:locale:]): Add case for '%Z'. ([NSCalendarDate -initWithString:calendarFormat:locale:]): Use local time zone, not default time zone detail. ([NSCalendarDate -initWithTimeIntervalSinceReferenceDate:]): Adjust for time zone detail. * src/tzfile.h: New file. * configure.in: Add check for endianness and int size. * src/NSTimeZone.m: New implementation. * src/include/NSDate.h (NSTimeZone): Remove unnecessary method declarations. (NSTimeZoneDetail): Likewise. Sun June 02 22:14:21 1997 Stevo Crvenkovski * src/NSGCString.m ([NSGCString -isEqualToString]): C string implementation from old NSString.m moved here and changed to check for class. * src/NSGCString.m ([NSGCString -setString]): Changed to avoid compiler warning. * src/NSGSequence.m ([NSGSequence -compare]): Changed for speed. * src/NSString.m ([NSString -isEqualToString]): New implementation, mutch faster. * src/NSString.m ([NSString -commonPrefixWithString]): Implemented recognition of composed characters. * src/NSString.m ([NXConstantString -characterAtIndex]): Method implemented. Thu May 15 08:59:13 1997 Yoo C. Chung * configure.in: Add check for getcwd(). * src/NSString.m ([NSString +initialize]): Removed casts for register_printf_function. (handle_printf_atsign): Set argument types for GNU libc. Sun May 21 23:12:24 1997 Stevo Crvenkovski * src/NSGSequence.m ([NSGSequence -decompose]): Reorganized code and changed to handle empty strings. * src/NSGSequence.m ([NSGSequence -order]): Added code to handle case when consecutive nonspacing characters have same canonical ordering priority. * src/NSString.m ([NSString -rangeOfComposedCharacterSequenceAtIndex:]): Changed to recognize end of string when last character is nonspacing. * src/NSString.m ([NSString -compare:options:range:]): Handle empty strings. * src/NSString.m ([NSString -hash]): Unicode version implemented and commented out for more testing. * src/NSString.m ([NSString -_normalizedString]): New private method for Unicode. * src/NSString.h ([NSString -_normalizedString]): New private method for Unicode declared. Tue May 20 09:29:47 1997 Adam Fedor * configure.in (VSPRINTF_RETURNS_LENGTH): Define as actual value of variable.. * checks/Makefile.in (LDFLAGS): Include DYNAMIC_LDFLAGS (BUNDLE_NAME.bundle): Add new Resources directory. * checks/nsbundle.m: Remove obsolete NSArgv. * src/MemoryStream.m ([MemoryStream -writeFormat:arguments]): Make sure buffer has at least 128 bytes free space. * src/NSBundle.m ([NSBundle -load]): New method. ([NSBundle -principalClass]): Use it. ([NSBundle +_bundleResourcePathsWithRootPath:subPath:]): New class method (was an instance method). Add search in GNUSTEP_LIBRARY_PATH. ([NSBundle +pathForResource:ofType:inRootPath:inDirectory:withVersion:]): New generalized search method. ([NSBundle +pathForResource:ofType:inDirectory:withVersion:]): Use it. ([NSBundle +pathForResource:ofType:inDirectory:]): Likewise. ([NSBundle -pathForResource:ofType:]): Likewise. ([NSBundle -pathForResource:ofType:inDirectory:]): Likewise. * src/include/NSBundle.h: New method definitions. * src/BinaryCStream.m: Include sys/types.h for SunOS4 definitions. * src/NSData.m: Include unistd.h for SunOS4 definitions. * src/StdioStream.m: Likewise. * src/Time.m: Likewise. Wen May 14 01:07:16 1997 Stevo Crvenkovski * src/NSGCString.m ([NSGCString -initWithCharactersNoCopy:length:freeWhenDone:]): Changed to invoke instance of NSGString. * src/NSGString.m ([NSGString -initWithCStringNoCopy:length:freeWhenDone:]): Changed to invoke instance of NSGCString. * src/NSGString.m ([NSGString -initWithCStringNoCopy:length:]): Method removed - it is in NSString. Sun May 11 10:12:11 1997 Stevo Crvenkovski * src/NSGCString.m ([NSGCString -fastestEncoding:]): Method implemented. * src/NSGCString.m ([NSGCString -smallestEncoding:]): Method implemented. * src/NSGCString.m ([NSGMutableCString -setString:]): C string implementation moved here from old version of NSString. * src/NSGString.m ([NSGString -fastestEncoding:]): Method implemented. * src/NSGString.m ([NSGString -smallestEncoding:]): Method implemented. * src/NSString.m ([NSString -initWithData:encoding:]): Method implemented. * src/NSString.m ([NSString -canBeConvertedToEncoding:]): Method implemented. * src/NSString.m ([NSString -dataUsingEncoding:]): Method implemented. * src/NSString.m ([NSString -dataUsingEncoding: allowLossyConversion]): partial implementation of method. * src/NSString.m ([NSString -fastestEncoding:]): Method implemented. * src/NSString.m ([NSString -smallestEncoding:]): Method implemented. * src/NSString.m ([NSString -stringByExpandingTildeInPath:]): changed for Unicode. * src/NSString.m ([NSString -writeToFile: atomically:useAuxiliaryFile:]): Method implemented. * src/NSString.m ([NXConstantString -fastestEncoding:]): Method implemented. * src/NSString.m ([NXConstantString -smallestEncoding:]): Method implemented. * src/Unicode.m (ustrtostr): changed to detect end of string. * src/Unicode.m (encode_strtoustr): New function. * src/Unicode.m (encode_ustrtostr): New function. Tue May 13 23:36:59 1997 Yoo C. Chung * src/NSString.m ([NSString -initWithFormat:arguments:]): Skip arguments dealt with in vsprintf(). Sun May 11 10:12:11 1997 Stevo Crvenkovski * src/NSString.m ([NSString -stringByAppendingString]): Changed to avoid calling wrong subclass. ([NSString -capitalizedString]): Likewise. ([NSString -lowercaseString]): Likewise. ([NSString -uppercaseString]): Likewise. Mon May 12 11:15:00 1997 Richard Frith-Macdonald * src/Collection.m ([Collection -copyAs:]): Modified so that copied objects are released once the new collection has retained them. This ensures that when the new collection is deallocated, the copied objects it contains are deallocated as well. * src/NSArray.m ([NSArray -initWithArray:]): Free temporary C array opf objects when we are done with it - fixes memory leak. ([NSArray -copy:]) Added method to ensure copyWithZone: is called. ([NSArray -sortUsingSelector:]) Added method. * src/NSDate.m ([NSDate -copyWithZone:]): Sometimes just retain a date. * src/NSObject.m ([NSObject -retainCount]): Take autorelease stuff into account in determining retain count for an object. Added new function 'extraRefCount()' to do what -retainCount used to. Modified -release and -autorelease to use extraRefCount(). * src/include/NSArray.h: Added -sortUsingSelector: Thu May 8 02:10:35 1997 Yoo C. Chung * src/NSString.m: Removed the redefinition of HAVE_REGISTER_PRINTF_FUNCTION. * src/NSZone.m (BUFFER): Reduced buffer size to 4. * src/NSAssertionHandler.m: Include "NSObjCRuntime.h". Use NSLog() to log errors. Reason for exception now identical to log messages. * configure.in: AC_TYPE_SIZE_T, AC_C_INLINE added. * src/include/NSZone.h: Removed inline keywords for functions that are potentially fluid. * src/NSThread.m ([NSThread +detachNewThreadSelector:toTarget:withObject:]): Post NSBecomingMultiThreaded. * src/StdioStream.m: Define _REENTRANT. ([StdioStream -initWithFilename:fmode:]): Use NSLog() to log errors. ([StdioStream -initWithFileDescriptor:fmode:]): Likewise. * src/NSThread.m: Removed [-exceptionHandler] and [-setExceptionHandler]. * src/include/NSThread.h: Likewise. * src/NSException.m: Use member variables directly to obtain and set exception handlers. * src/Makefile.in (FILE_AUTHORS): Added new person. * src/include/NSPage.h: Changed e-mail address. Thu May 8 15:45:00 1997 Richard Frith-Macdonald * src/Proxy.m: (+newForRemoteTarget:connection:) When an existing proxy is substituted for a newly allocated one we must retain it. * src/Proxy.m: (+newWithCoder:) When an object is substituted for a local proxy we must retain it. * src/Connection.m: (forwardForProxy:selector:argframe:) Ensure that objects created by the decoder are autoreleased. * src/Connection.m: (_service_forwardForProxy:) Ensure that objects created by the decoder are autoreleased. * src/Connection.m: (_getReceivedReplyRmcWithSequenceNumber:) Ensure that a newly allocated NSdate objects is released on return from this method. Fixes a memory leak. * src/NSGCString.m: Added an implementation of dealloc which will cause the string contents to be released correctly - fixing a major memory leak. * src/NSString.m (handle_printf_atsign()) Modified so that the '%@' format prints an objects description as it should according to the OpenStep spec. * src/NSString.m (- initWithFormat:arguments:) Modified so that the '%@' format prints an objects description as it should according to the OpenStep spec. * src/NSString.m (- componentsSeparatedByString:) Fixed to produce the final component of the string. * src/NSString.m (- rangeOfString:options:range:) Return a range of length 0 if passed an empty string. * src/NSString.m (- lastPathComponent) Do autorelease for newly created substrings. * src/NSString.m (- pathExtention) Do autorelease for newly created substrings. * src/NSString.m (- stringByAppendingPathComponent:) Added code to handle empty or illegal path components. * src/NSString.m (- stringByAppendingPathExtension:) Added code to handle empty or illegal path extensions. * src/NSString.m (- stringByDeletingLastPathComponent:) Fixed some special cases - autorelease for newly created substrings. * src/NSString.m (- stringByExpandingTildeInPath:) Do autorelease for newly created substrings. * src/NSString.m (- stringByAbbreviatingWithTildeInPath:) Do autorelease for newly created substrings. Wed May 7 15:45:00 1997 Richard Frith-Macdonald * checks/server.m: Removed line which released object which should already have been autoreleased by D.O. mechanism. * src/Coder.m: ([Coder -init]): Modified so that subclasses can be initialised using 'init'. ([Coder -initForReadingWithData:]) Check to see if 'self' has been autoreleased. If it has - be graceful and don't release self again but autorelease the newly created object. I know that this should not be necessary, but it's defensive programming. * src/Makefile: Changed 'make distclean' to remove links to the header files directory so that it's easy to make a clean setup for generating patches. * src/NSArchiver.m: ([NSArchiver -init]): Modified to say that the subclass should handle this. ([NSArchiver +archivedDataWithRootObject:]): Added a release to fix memory leak. * src/NSGArchiver.m: Added implementation of init method. ([NSGArchiver -archiverData]): Addep partial implementation of this method - only works if the archiver was initialised with an NSMutableData object, returns nul otherwise. This probably covers pretty much all the cases where you would want to use this method. * src/NSObject.m: ([NSObject -returnCount]): Fixed this to return zero for the cases where the object is not in the retain count map. * src/include/NSRunLoop.h: Added protocol declarations etc so that you don't need to include RunLoop.h Tue May 6 14:50:35 1997 John Stevens * src/Array.m ([Array -appendObject:]): Check for nil object. ([Array -insetObject:atIndex:]): Likewise. * src/NSArray.m ([NSArray -initWithObjects:rest:]): Good varargs implementation. * src/NSData.m: ([NSData -getBytes:range:]): Check range. ([NData -replaceBytesInRange:withByte:]): Likewise. ([NSData -resetBytesInTange:]): Likewise. Mon May 5 16:00:00 1997 Richard Frith-Macdonald * src/Connection.m: ([Connection -forwardForProxy:selector:argFrame:]): Added code to autorelease newly created objects to avoid memory leak. ([Connection -_service_forwardForProxy:]): Added code to autorelease newly created objects to avoid memory leak. ([Connection -_getReceivedReplyRmcWithSequenceNumber:]): Release locally created NSDate object before returning from method. * src/NSGString.m: ([NSGCString -dealloc:]): Added implementation so that allocated memory can be freed. ([NSGCString -initWithCoder:]): Set flag to say that contents should be freed when object is deallocated. * src/NSGSequence.m: Added +sequenceWithCharactersNoCopy:length:freeWhenDone:. Added -dealloc so that Sequence contents can be freed. ([NSGSequence -initWithCharactersNoCopy:length:freeWhenDone:]): Modified to release sequence contents if necessary (when the designated initialiser is called more than once). ([NSGSequence -decompose]): Fixed memory leak in this method. ([NSGSequence -lowercase]): Fixed memory leak in this method. ([NSGSequence -uppercase]): Fixed memory leak in this method. * src/NSGString.m: Added -dealloc so that string contents can be freed. ([NSGString -encodeWithCoder]): Fixed to encode array of unichar. ([NSGString -initWithCoder]): Fixed to expect encoded array of unichar. * src/NSGMutableString.m: ([NSGMutableString -insertString:atIndex:]): Fixed memory leak. ([NSGMutableString -encodeWithCoder:]): Encode array of unichar. ([NSGMutableString -initWithCoder]): Expect encoded array of unichar. * src/NSString.m: ([NSString -compare:options:range]): Fixed a memory leak. ([NSString -commonPrefixWithString:options:]): Fixed a memory leak. * src/Proxy.m: ([Proxy +newForRemoteTarget:connection:]): When we return an existing Proxy, retain it. ([Proxy +newWithCoder:connection:]): When we return a local object, retain it. * src/RunLoop.m: ([RunLoop -removeReadDescriptor:forMode:]): free enumeration state on return. ([RunLoop -removeWriteDescriptor:forMode:]): free enumeration state on return. ([RunLoop -acceptInputForMode:beforeDate:]): free enumeration states when done with them. * src/include/NSGSequence.h: Added class method +sequenceWithCharactersNoCopy:length:freeWhenDone:. * src/NSDate.m: Added implementations for methods - -copyWithZone:, -encodeWithCoder: -initWithCoder:. * src/include/NSDate.h: Added protocol conformance for NScopying and NSCoding. Sat May 3 12:28:48 1997 Andrew McCallum * src/Makefile.in (GNUSTEP_OTHER_SRCFILES): Add gdomap.c and gdomap.h. * checks/NSData-test.m: New file from John Stevens . * src/Makefile.in (GNUSTEP_HEADERS): Add include/NSConnection.h. * doc/news.texi: Fix typo. * doc/install.texi: Fix typo. * Makefile.in (DIST_FILES): Add config.sub. * src/NSBundle.m: Temporarily comment out some code with #if 0/1 so it will compile. Get Adam Fedor or someone to fix it. * src/NSCharacterSet.m: Likewise. * src/include/NSConnection.h: Include some files. * src/Makefile.in (GNUSTEP_HEADERS): Add NSDistantObject.h. * src/include/NSDistantObject.h: New file. * src/gdomap.c: Delete duplicate copy inside file. * src/TcpPort.m: #include . Define GDOMAP to be 0 for now; have Richard Frith-Macdonald verify that it works for me. (tryWrite): Change type of IFUN to match declaration of signal(). Cast second argument to signal() to avoid warning. ([TcpInPort +newForReceivingFromPortNumber:]): Use P->_PORT_SOCKET not P->_SOCKET, which doesn't exist. Likewise in several other methods. * src/NSString.m: Remove some duplicate methods. * src/NSHost.m: Don't include . Include . * src/Connection.m: Include for delegate method declaration. ([Connection +newForInPort:outPort:ancestorConnection:]): Cast NEWCONN to avoid warning. * src/Makefile.in (GNUSTEP_OTHER_SRCFILES): Move NSHost.m temporarily here until its debugged. (GNUSTEP_MFILES): Temporarily remove NSHost.m. * src/NSDate.m ([NSDate -timeIntervalSince1970]): Remove duplicate method definition. * src/NSArchiver.m ([NSArchiver -init]): New method. (Need for it reported by Richard Frith-Macdonald .) * src/NSArchiver.m ([NSArchiver -encodeClassName:intoClassName:]): Fix typo in method name. * src/include/NSArchiver.h: Fix typo in method name. * src/TcpPort.m (nameServer): Remove the ntohs() conversion of NUM. (Reported by Richard Frith-Macdonald >) * src/NSCharacterSet.m ([NSCharacterSet_PATH]): Value of global variable changed to absolute path. (Reported by Richard Frith-Macdonald .) * checks/Makefile.in (SRCS): Added NSData-test.m. * src/Decoder.m ([Decoder -decodeObjectAt:anObjPtr:name]) [CODER_OBJECT_REPEATED]: Retain the object before returning it by reference. (Reported by Richard Frith-Macdonald .) * src/NSHashTable.m (NSNonRetainedObjectHashCallBacks): Renamed from NSNonRetainedObjectsHashCallBacks to conform to spec. * src/include/NSHashTable.h: Likewise. * src/Makefile.in (UNICODE_HEADERS): New variable. (DIST_FILES): Add UNICODE_HEADERS. (copy-dist): Create directory for unicode. * examples/Makefile.in (RCS_FILES): Added custom-zone.m. * examples/custom-zone.m: New file. * src/NSBundle.m ([NSBundle +pathForResource:ofType:inDirectory:]): Change it from an instance method to a class method, in order to conform to spec. * src/include/NSBundle.h ([NSBundle +pathForResource:ofType:inDirectory:]): Likewise. * src/NSCharacterSet.m ([NSCharacterSet +_bitmapForSet:number:]): Revert last change. * src/Makefile.in (GNUSTEP_HEADERS): Added include/NSHost.h. (GNUSTEP_MFILES): Added NSHost.m. * src/NSCharacterSet.m ([NSCharacterSet +_bitmapForSet:number:]): Use NSBundle's pathForResource:ofType:inDirectory method properly. (Reported by Stevo Crvenkovski .) Fri Apr 25 01:30:00 1997 Richard Frith-Macdonald * src/NSBundle.m: Added missing methods to conform to OpenStep spec, also added [+ pathForResource:ofType:inDirectory:] * src/include/NSBundle.h: Added missing methods to conform to OpenStep spec. Thu Apr 24 10:30:00 1997 Richard Frith-Macdonald * src/Makefile.in: Added stuff to build and install the name server (gdomap). * src/RunLoop.m: Minor change to ensure that repeated timers are not lost. * src/TcpPort.m: Major changes to support use of a name server for handling TCP port numbers and fix a few bugs. * src/gdomap.c: This is the name server source. * src/gdomap.h: This is the name server header file. * src/include/NSRunLoop.h: Added methods for monitoring file descriptors. Sat Mar 29 00:43:18 1997 Yoo C. Chung * src/NSZone.m: New e-mail address. Default default zone alignment problems fixed. Sun Mar 23 19:55:19 1997 Mark Kettenis * src/Makefile.in: Update config.h.in in $(srcdir)/src/include. * configure.in: Look for config.guess in $(srcdir). Sat Mar 22 18:25:43 1997 Mark Kettenis * src/NSDate.m ([NSDate +timeIntervalSinceReferenceDate]): Don't use struct timezone. ([NSDate -timeIntervalSince1970]): New method. ([NSDate -isEqual:]): Correct bug if other specifies a later date. Sun Mar 23 22:14:21 1997 Stevo Crvenkovski * src/NSGString.m: New file Initial implementation of Unicode * src/include/NSGString.h : New file Interface for NSGString * src/NSGSequence.m: New file - class that deals with Unicode composite character sequences * src/include/NSGSequence.h : New file Interface for NSGSequence * src/Unicode.m: New file - functions for Unicode * src/include/Unicode.h : New file * src/Makefile.in: Added NSGString.m, NSGString.h, NSGSequence.m, NSGSequence.h, Unicode.m, Unicode.h * src/NSGCString.m ([NSGCString -length]): Method implemented. ([NSGCString -characterAtIndex]): Changed to work with encodings ([NSGCString -_baseLength]): private method for composite character sequences. ([NSGCString -initWithString:]): CString implementation moved here from NSString.m * src/NSString.m : Changed NSString_concrete_class to NSGString and NSMutableString_concrete_class to NSGMutableCString ([NSString +stringWithCharacters]): Method implemented. ([NSString -initWithCharacters:length:]): Method implemented. ([NSString -stringByAppendingString]): changed for Unicode. ([NSString -rangeOfString]): split method into 8 private _search* methods and implemented full Unicode ([NSString -compare:options:range:]): changed for Unicode. ([NSString -isEqualToString]): changed for Unicode ([NSString -description]): changed. ([NSString -commonPrefixWithString]): changed for Unicode ([NSString -capitalizedString]): changed for Unicode ([NSString -lowercaseString]): changed for Unicode ([NSString -uppercaseString]): changed for Unicode ([NSString -getCString]): changed for Unicode ([NSString -defaultCStringEncoding]): method implemented ([NSString -_baseLength]): private method for composite sequences. ([NSString -stringWithFormat:]): null terminate buffer. *src/unicode : New directory - temporary holds data for unicode functions. *src/unicode/caseconv.h : New file *src/unicode/cop.h : New file *src/unicode/cyrillic.h : New file *src/unicode/decomp.h : New file *src/unicode/nextstep.h : New file Fri Feb 14 08:51:39 1997 Yoo C. Chung * src/NSZone.m: Use [NSString -cStringNoCopy]. Wed Feb 12 13:51:42 1997 Yoo C. Chung * src/NSZone.m (frealloc): memcpy() with proper size. * examples/custom-zone.m (custom_recycle): Release zone name. * src/NSZone.m (frealloc): Moved assignment out of a critical block. Tue Feb 11 22:55:05 1997 Yoo C. Chung * examples/custom-zone.m: New file. Sun Feb 9 20:28:00 1997 Yoo C. Chung * src/NSZone.m (NSZoneRegisterRegion): New function. (NSDeregisterZone): New function. * src/include/NSZone.h: Added 'NSZoneRegisterRegion' and 'NSDeregisterZone'. Thu Mar 6 08:57:29 1997 Scott Christley * src/NSString.m (-substringToIndex:): Should return characters upto but not including the one at index. (lastPathComponent, stringByDeletingLastPathComponent): Modify for -substringToIndex: change. (stringByDeletingPathExtension): Likewise. Tue Mar 4 10:47:18 1997 Scott Christley * src/NSBundle.m: Don't look in gnustep installation library directory; remove previous patch. * src/NSCharacter.m: Create bundle with path instead of using main bundle. * src/NSString.m (-stringByAppendingPathComponent:): Don't even check the length; only care if we found the string at the very last position. (-stringByAppendingPathExtension:): Likewise. * src/include/preface.h.in: Include NSObjCRuntime so that NSLog() is declared. * src/include/NSString.h (+stringWithContentsOfFile:): Add missing declaration. Thu Feb 27 13:46:10 1997 Scott Christley * configure.in: Fill out description of parameter. * src/Makefile.in (GNUSTEP_INSTALL_LIBDIR): Use quotes. * src/NSBundle.m: Add gnustep installation library directory to the directories searched. * src/NSCharacterSet.m (NSCharacterSet_PATH): Don't specify full path, just bundle directory. * src/NSRange.m (NSMakeRange): Correct prototype. * src/include/NSRange.h (NSMakeRange): Likewise. * src/NSString.m (stringByAppendingExtension:): The length will actually be zero if the period isn't found. (stringByAppendingPathComponent:): Likewise. Tue Jan 21 17:09:09 CST 1997 Jeremy Bettis * src/NSGCString.m: Add -appendString:. * src/include/NSString.h: Add +string. * src/NSString.m: (handle_printf_atsign) Take the description of the object before the cStringNoCopy. ([NSString +allocWithZone:],[NSMutableString +allocWithZone:]) Only return the concrete class if [self class] == NSString to allow subclassing. Tue Mar 4 10:51:22 1997 Andrew McCallum * src/NSConnection.m: New file. * src/include/NSConnection.h: Add copyright and fix method declaration. * src/Connection.m ([Connection -registerName:]): New method. ([Connection +newForInPort:outPort:ancestorConnection:]): Ask the delegate for permission to create the new connection. We were already doing it GNUstep-style. Do it OpenStep-style also. * src/NSGArchiver.m ([NSGArchiver -archiverData]): New method. No implementation. The above was actually checked in May 3 1997. * src/Connection.m ([Connection -forwardForProxy:selector:argFrame:]): In nested function decoder(), always set IP to -1 after sending it -dismiss, i.e. in both cases. Fix the assertion at the bottom so that IP is allowed to be nil, which will be the case when mframe_build_return() never calls decoder(), which will happen when we are returning void. * src/Decoder.m ([Decoder -finishDecodingInterconnectedObjects]): Comment fixes. * src/Proxy.m ([Proxy -awakeAfterUsingCoder:]): New method. Needed otherwise we get an infinite loop with Decoder trying to send this message to a Proxy. Mon Mar 3 14:41:01 1997 Andrew McCallum * doc/install.texi: Describe what happens when libieee.a isn't available. * configure.in: Remove obsolete AC_C_CROSS. * doc/Makefile.in (TEXI_FILES): Added gnustep-zones.texi. * src/NSHost.m, src/include/NSHost.h: New files from Luke Howard . Tue Feb 25 17:12:52 1997 Scott Christley * configure.in: Add macro to determine host, build, and target. (whole_archive, no_whole_archive): Optional linker variables for specifying when the linker should include the whole archive. * configure: Regenerate for configure.in changes. * Makefile.in: Force targets. * config.sub: New file. * NSCharacterSets/Makefile.in: Use configure datadir variable. Install character set files in NSCharacterSets subdirectory within GNUstep library install dir. * checks/heap.m: random is rand on _WIN32. * checks/nscharacterset.m: New file * checks/Makefile.in: Add nscharacterset.m. Surround gnustep-base library with new linker variables. * checks/release.m: No malloc.h on _WIN32. * examples/Makefile.in: Surround gnustep-base library with new linker variables. * doc/Makefile.in: Use configure infodir variable. * src/NSFileManager.m: New file. * src/include/NSFileManager.h: New file. * src/Makefile.in: Add NSFileManager files. (GNUSTEP_INSTALL_LIBDIR): New definition. Use configure libdir and includedir variables. Use the LN_S variable for soft links. Slightly modify creation of gnustep/base for platforms which don't support soft links. (install:): Install only the NEXTSTEP_HEADERS into objc directory and eliminate out-dated README file link. (uninstall:): Remove only NEXTSTEP_HEADERS out of objc directory. * src/NSCharacterSets.m (NSCharacterSet_PATH): Search for character set files in NSCharacterSets subdirectory within GNUstep library installation directory. * src/NSDate.m (-initWithTimeIntervalSince1970:): New method. (-timeIntervalSince1970): New method. * src/include/NSDate.h (-initWithTimeIntervalSince1970:): New method. (-timeIntervalSince1970): New method. * src/NSDictionary.m: Changed key datatype from NSString to NSObject to correspond with OpenStep specification. * src/NSGDictionary.m: Likewise. * src/include/NSDictionary.h: Likewise. (+dictionaryWithObjectsAndKeys:,...): Define method. * src/NSNumber.m (+numberWithLong:): Use correct class. * src/NSString.m (-description:): Just return self. (+stringWithContentsOfFile:): New method. (-componentsSeparatedByString:): Fix range calculation and make sure last component is added. (-appendString:): Don't attempt append if nil string. * src/NSUserDefaults.m (__changePersitentDomain:) Corrected spelling of method. * src/TcpPort.m (_socket): Rename to _port_socket to avoid conflict with hidden system variables. * src/include/TcpPort.h (_socket): Likewise. * src/UdpPort.m (_socket): Likewise. * src/include/UdpPort.h (_socket): Likewise. * src/include/NSObject.h: Include fake-main.h. Thu Feb 6 09:20:05 1997 Yoo C. Chung * src/NSZone.m (fcheck): Implemented. (fstats): Likewise. (ncheck): Likewise. (nstats): Likewise. * src/include/NSZone.h: New declarations of 'NSZoneRegisterChunk' and 'NSZoneChunkOverhead'. Include instead of . * src/NSZone.m: Removed 'outmemstr'. Better reasons given when raising exceptions. (frecycle): Use objc_free(). (nrecycle): Likewise. (NSCreateZone): Check allocation of 'zone'. (default_check): New function. (default_stats): Likewise. (fcheck): Likewise. (fstats): Likewise. (ncheck): Likewise. (nstats): Likewise. (NSZoneChunkOverhead): Likewise. (NSZoneRegisterChunk): Likewise. (NSZoneCheck): Likewise. (NSZoneStats): Likewise. (default_zone): Set the zone name to "default". Wed Feb 5 21:29:23 1997 Yoo C. Chung * src/include/NSZone.h (struct _NSZoneStats): New structure. (struct _NSZone): Added 'check' and 'stats'. (NSZoneCheck): New declaration. (NSZoneStats): Likewise. Tue Feb 4 22:39:50 1997 Yoo C. Chung * src/NSZone.m (nmalloc): Return NULL when size is 0. Tue Feb 4 09:16:05 1997 Yoo C. Chung * src/NSZone.m (NSSetDefaultMallocZone): New function. (get_chunk): Use objc_malloc() to get more memory. (nmalloc): Likewise. (NSCreateZone): Likewise. (NSSetZoneName): Removed locks. * src/NSAutoreleasePool.m ([NSAutoreleasePool -dealloc]): Don't check whether we're releasing an already deallocated object. * src/include/NSZone.h (struct _NSZone): Removed mutex. Removed NSZoneMemInUse(). Added NSSetDefaultMallocZone(). * src/NSZone.m: Changed comments. Uses objc_malloc() and friends for default zone. Moved mutex out of NSZone structure. Use mutex functions even in single threaded case. (NSZoneMemInUse): Removed. Fri Jan 24 19:12:18 1997 Yoo C. Chung * src/NSZone.m: Spell checked comments. Tue Jan 21 13:31:11 1997 Yoo C. Chung * src/NSZone.m (default_recycle): New function. (nrealloc): Likewise. (nfree): Likewise. (default_zone): Set common.recycle to default_recycle. (NSCreateZone): Set realloc and free for nonfreeable zone. * src/include/NSThread.h: Add comments. * src/NSThread.m ([NSThread -setExceptionHandler:]): Add comments. ([NSThread -exceptionHandler]): Likewise. ([NSThread +detachNewThreadSelector:toTarget:withObject:]): Set entered_multi_threaded_state to YES. Tue Jan 21 11:18:32 1997 Yoo C. Chung * checks/thread-except.m: New file. * checks/Makefile.in (SRCS): Added thread-except.m. * src/NSAssertionHandler.m ([NSAssertionHandler +currentHandler]): Handle multiple threads. * src/NSException.m: Removed e_handlers. ([NSException -raise]): Support multiple threads. (_NSAddHandler): Likewise. (_NSRemoveHandler): Likewise. * src/NSThread.m ([NSThread -init]): Init _exception_handler. ([NSThread -exceptionHandler]): New method. ([NSThread -setExceptionHandler:]): Likewise. * src/include/NSThread.h (NSThread): Added _exception_handler and new methods exceptionHandler and setExceptionHandler. Mon Jan 20 09:46:00 1997 Yoo C. Chung * src/NSException.m: Use linked list instead of NSArray. Fit lines within 80 columns. * src/NSZone.m (nmalloc): Use CHUNKSIZE to get new block size instead of SIZE. Mon Jan 20 00:15:39 1997 Yoo C. Chung * src/NSAllocateObject.m: Include NSZone.h. * src/NSZone.m: Changed ffree_NSZone and nfree_NSZone to ffree_zone and nfree_zone. Changed lock functions return types to ints. (become_threaded): Set mutex functions. (NSZoneMemInUse): Properly check buffer. (nmalloc): Removed unnecessary declaration of block. (NSCreateZone): Moved assignment of block out of exception handled area. (NSCreateZone): Fixed typo (objc_mutex_deallocate instead of objc_mutex_dealloc). (NSZoneMemInUse): Consider cases when memory is in buffer. * src/NSData.m ([NSData -description]): Frees malloced memory. * src/NSPage.m (NSAllocateMemoryPages): Return NULL if we fail to allocate memory. * src/NSObject.m (NSShouldRetainWithZone): Check match for NSDefaultMallocZone(). Fri Jan 17 20:08:00 1997 Yoo C. Chung * src/o_x_bas.m.in (o_@XX@_zone): Use NSZoneFromPointer(). (_o_@XX@_alloc_with_zone): Remove unnecessary assignment. * src/o_array.m (o_array_alloc): Use NSDefaultMallocZone(). * src/o_hash.m (o_hash_alloc): Likewise. (o_hash_copy): Likewise. * src/o_list.m (o_list_alloc): Likewise. (o_list_copy): Likewise. * src/include/o_array.h (_o_array): Remove zone. It's just a waste of space when we have a very fast NSZoneFromPointer(). * src/include/o_hash.h (_o_hash): Likewise. * src/include/o_list.h (_o_list): Likewise. * src/include/o_map.h (_o_map): Likewise. * src/include/NSZone.h: New implementation. * src/include/NSPage.h: New file. * src/include/NSException.h (NS_HANDLER): Separate declaration and assignment of localException. This is to shut up gcc when we don't use localException. * src/StdioStream.m ([StdioStream -dealloc]): Removed call to fclose(). * src/NSZone.m: New implementation. * src/NSDeallocateObject.m: Simplified. * src/NSAutoreleasePool.m: Included NSZone.h. ([NSAutoreleasePool -dealloc]): Use NSZoneMemInUse(). * src/Makefile.in (GNUSTEP_HEADERS): Added NSPage.h. Sun Jan 12 13:46:38 1997 Andrew McCallum * Version (SUBMINOR_VERSION): Version 0.2.12. There seems to be a problem with Richard's and my patches to distributed objects, but many other bug fixes have been added, NSZone has a complete re-write, -awakeAfterUsingCoder: is now called, and NSString is all cleaned up and ready to go. Richard and I will work on fixing D.O. for the next release. * examples/second-client.m: Include instead of . * examples/second-server.m: Likewise. * examples/first-client.m: Likewise. * examples/first-server.m: Likewise. Finish code necessary for versioning in CStreams and Coders. Test this code by actually making a new format for BinaryCStream; files created with the new format should be, on average, 4/5 the size of the previous ones, and it should be faster. This is now the default format, but files created with the old format should still be readable. * src/BinaryCStream.m (PRE_SIZEOF_PREFIX_FORMAT_VERSION): New macro for old version number. (CURRENT_FORMAT_VERSION): New macro. (DEFAULT_FORMAT_VERSION): Changed from 0 to 1. ([BinaryCStream -_initForReadingFromPostSignatureStream: withFormatVersion:]): New method. ([BinaryCStream -initForWritingToStream:swithFormatVersion:]): New method. (WRITE_SIGNED_TYPE0): Renamed from WRITE_SIGNED_TYPE. (WRITE_SIGNED_TYPE1): New macro. (WRITE_SIGNED_TYPE): New macro for choosing between them. (READ_SIGNED_TYPE0): Renamed from READ_SIGNED_TYPE. (READ_SIGNED_TYPE1): New macro. (READ_SIGNED_TYPE): New macro for choosing between them. (WRITE_UNSIGNED_TYPE0, WRITE_UNSIGNED_TYPE1, WRITE_SIGNED_UNTYPE, READ_UNSIGNED_TYPE0, READ_UNSIGNED_TYPE1, READ_UNSIGNED_TYPE): Likewise. ([BinaryCStream -encodeValueOfCType:at:withName:name]): Don't use `unsigned' as part of the argument to the *_UNSIGNED_TYPE macros, because the macros now include that themselves. * src/CStream.m ([CStream -_initForReadingFromPostSignatureStream: withFormatVersion:]): New method. ([CStream +cStreamReadingFromStream:s]): Use it. ([CStream -initForReadingFromStream:swithFormatVersion:]): Likewise. * src/include/BinaryCStream.h (BinaryCStream): Declare new ivars for holding sizeof C types. * src/include/CStream.h: Declare designated method for reading. * src/include/NSProcessInfo.h: Include Sat Jan 11 16:34:57 1997 Andrew McCallum * src/NSZone.m (NSCreateZone): Call initialize(), so that we won't crash if someone tries to create an object before main() and before initialize() gets called as a constructor. (NSDefaultMallocZone): Likewise. (initialize): Use a static variable to return immediately if we've been run already. * checks/string.m (main): Use NSDefaultMallocZone() instead of NS_NO_ZONE. Thu Jan 9 10:45:10 1997 Andrew McCallum * checks/client.m: Include instead of . (main): Use class NSString instead of String. * checks/server.m: Include instead of . * src/objc/NXStringTable.h (STRVAL): Make it a macro instead of an inline function to avoid warning. * src/NSPage.m (NSLogPageSize): Use NSPageSize() instead of ns_page_size(). (NSRoundDownToMultipleOfPageSize): Likewise. (NSRoundUpToMultipleOfPageSize): Likewise. * src/NSString.m ([NSString -copy]): Use NSDefaultMallocZone() instead of NS_NO_ZONE. * src/NSCharacterSet.m ([NSCharacterSet +_bitmapForSet:number:]): Remove last parameter from calls to [NSBundle pathForResource...]. The method doesn't exist. * src/NSBundle.m: Rearrange #include's a little. * src/Connection.m ([Connection -_getReceivedReplyRmcWithSequenceNumber:]): Break if the RunLoop returns NO. (Reported by Richard Frith-Macdonald .) * src/NSDictionary.m ([NSDictionary +dictionaryWithContentsOfFile:]): Method implemented. (From Scott Christley.) * src/NSString.m ([NSString -initWithFormat:arguments:]): Increase BUFFER_EXTRA by a factor of 500. * src/Foundation/NSZone.h (ZoneLock): Don't prepend OBJC_MUTEX_T with an underscore. * src/mframe.m (mframe_build_return): Change the way values of type smaller than int are returned---don't offset into the int. (Recommended by Richard Frith-Macdonald .) Thu Jan 9 17:06:00 1996 Richard frith-Macdonald * src/NSTimer.m ([NSTimer -compare:]): Added an implementation of 'compare:' which compares timers by fire date. This is required for the timers to be kept in the correct order by the Heap in Runloop. Fixes a problem where a timer could be delayed indefinately. Wed Dec 04 12:39:24 1996 Scott Christley * src/Makefile.sed.nt: remove Foundation directory if it exists before installing header files. Don't regenerate lex.sf.m. * src/NSSet.m (-unionSet:): Implement method. (-intersectSet:, -minusSet:): Implement methods. * src/NSString.m (-initWithContentsOfFile:): Use Win32 specific functions for file operations. * src/md5.c: Include config header file. * src/include/config-win32.h: vsprintf returns length on Win32. * src/NSUser.m (NSHomeDirectoryForUser, NSUserName): Implement Win32 specific versions. Thu Nov 21 12:00:44 1996 Scott Christley * src/include/NSDictionary.h (+dictionaryWithContentsOfFile:): New method. * src/proplist.l (COMMENT, LINE_COMMENT): Added lexical rules for traditional C comments and ObjC line comments. Add carriage return '\r' as part of whitespace rules. * src/lex.pl.m: Regenerated with proplist.l changes. * src/proplist.tab.m: Likewise. * src/NSArray.m (-sortedArrayUsingSelector:): Implemented. (-sortedArrayUsingFunction:context:): Implemented. (-sortUsingFunction:context:): Implemented. * checks/nsarray.m: Add tests for sorting methods. Tue Nov 19 09:06:00 1996 Richard Frith-Macdonald * src/ConnectedCoder.m: Release packet after invoking initialisation method of super which retains it. To fix memory leaks. * src/Connection.m (+rootProxyAtName:onHost:): Return nil if we can't create port. (-forwardForProxy:selector:argFrame:): Modified to cooperate better with mframe_build_return() so that the created decoder is released reliably. Fixes a memory leak. (-_getReceivedReplyRmcWithSequenceNumber:): Added code to release allocated NSDate object on exit - fixes a memory leak. * src/Decoder.m (-_coderCreateReferenceForObject:): Changed code to release dummy object after insertion in array (which retains it). fixes memory leak. * src/Encoder.m (-initForWritingToStream:withFormatVersion: cStreamClass:cStreamFormatVersion:): Release stream after invoking initialisation method of super which retains it. To fix memory leaks. * src/KeyedCollection.m (-dealloc): Added call to NSDeallocateObject() to ensure that the memory used by the enumerator is released. * src/RunLoop.m: Changed code to get timers to work correctly and enabled timer support by default. Fixed all the cases I could spot where the '_current_mode' could be left in the wrong state. Modified so that the object listening on a file descriptor need not be the same as the object speaking on it. Added code to release the enumerator state information for Bags after use - fixes memory leak. * src/mframe.m (mframe_build_return): Modified to cooperate better with [Connection -forwardForProxy:selector:argFrame:]. Mon Jan 6 16:06:21 1997 Andrew McCallum * src/NSDictionary.m ([NSDictionary -initWithContentsOfFile:]): Implemented. (By David Wetzel .) * src/NSAssertionHandler.m [NSAssertionHandler -handleFailureInMethod:object:file: lineNumber:description:]: Use the FORMAT argument! (Reported by Wolfgang Baron .) * src/NSString.m ([NSString -hasPrefix:]): Fix logic to return correct value. (Reported by David Wetzel .) * src/NSString.m ([NSString -description]): Free DEST to prevent memory leak! (Reported by Wolfgang Baron .) * src/NSException.m (_NSUncaughtExceptionHandler): Don't declare it static. (Reported by John Hethcox .) * src/BinaryCStream.m (BITSPERBYTE): If it hasn't been defined after #include's guess that it's 8. * checks/nsscanner.m: Removed RCS keyword. Sat Nov 16 23:39:11 1996 Yoo C. Chung * src/NSPage.m (NSLogPageSize): Fix logic to return correct value. Wed Nov 13 16:27:39 1996 Adam Fedor * aclocal.m4 (OBJC_SYS_DYNAMIC_FLAGS): Check if executable needs dynamic ldflags. * checks/Makefile.in (LDFLAGS): Include dynamic ldflags. (BUNDLE_NAME.bundle): Add new Resources directory. * configure.in: Provide platform definition. Check DIR definitions. * src/Makefile.in (DEFS): Use platform definition. * src/NSBundle.m: Rewrite of NSBundle class to cache bundles and update searching of resources. _bundles and _releasedBundles are static NSMapTables for caching bundles. (bundle_object_name): Use executable name, if provided. (_bundle_resource_path): Use NSString methods. (_bundle_path_for_name): New function. ([NSBundle -_bundleClasses]): New private method. ([NSBundle +mainBundle]): Use NSString methods. ([NSBundle +bundleForClass]): New search process using map tables. ([NSBundle -initWithPath]): Likewise. ([NSBundle -release]): New method. ([NSBundle -retain]): New method. ([NSBundle -retainCount]): New method. ([NSBundle -dealloc]): Release new ivars. ([NSBundle -classNamed:]): Search from new _bundleClasses ivar. ([NSBundle -principalClass:]): New loading protocol. ([NSBundle -_bundleResourcePathsWithDirectory:]): New method. ([NSBundle -pathForResource:ofType:inDirectory:]): New search protocol. ([NSBundle -pathsForResourcesOfType:inDirectory:]): New method. ([NSBundle -localizedStringForKey:value:table:]): Implement. ([NSBundle -resourcePath]): New method. ([NSBundle -infoDictionary]): New method. ([NSBundle -bundleVersion]): Removed. ([NSBundle -setBundleVersion:]): Removed. * NSBundle.h: Add new ivars. Add new OpenStep methods, remove obsolete methods. New localization macros. Wed Nov 13 14:10:00 1996 Richard Frith-Macdonald * src/Connection.m ([Connection +rootProxyAtName:onHost:]): Return nil if we fail to create a port for talking to a remote server. ([Connection forwardForProxy:selector:argFrame:]): Changes to ensure that ConnectedDecoder is correctly dismissed in the case where a DO method returns an object but does not have any parameter values returned. * src/mframe.m (mframe_build_return()): Cooperate with [Connection forwardForProxy:selector:argFrame:] so that it's callback function is called to tell it dismiss the ConnectedDecoder. * src/RunLoop.m ([RunLoop -limitDateForMode:]): Various changes to get timeouts working reliably. Ensure that _current_mode is restored correctly on exit. * src/RunLoop.m ([RunLoop -acceptInputForMode:beforeDate:]): Ensure that _current_mode is restored correctly on exit. Wed Nov 6 11:59:08 1996 Adam Fedor * src/NSLog.m: New file * src/Makefile.in (GNUSTEP_MFILES): Add NSLog.m * src/include/NSObjCRuntime.h: Add NSLog definitions. Mon Nov 4 12:30:05 1996 Adam Fedor * src/objc-load.c: Include . Sat Sep 21 15:18:47 1996 Yoo C. Chung * src/NSZone.m: Use constructor attribute with initialize(). Thu Sep 19 22:09:08 1996 Yoo C. Chung * src/DelegatePool.m: Use NSDefaultMallocZone() instead of NS_NOZONE. * src/NSProcessInfo.m: Likewise. * src/NSObject.m: Use NSDefaultMallocZone() instead of NS_NOZONE. Use NSZoneFromPointer() instead of NSZoneFromPtr(). * src/NSProcessInfo.m: Use NSDefaultMallocZone() instead of 0. And cosmetic changes. * src/NSHashTable.m: Use NSDefaultMallocZone() instead of 0. * src/NSMapTable.m: Likewise. * src/o_map.m: Likewise. * src/NSPage.m: Use valloc() in NSAllocateMemoryPages(). Cosmetic style changes. * src/NSZone.m: Complete rewrite. * src/include/NSZone.h: Extensive modifications. Thu Dec 5 17:20:58 1996 Nick Christopher * NSString.m [NSString -componentsSeparatedByString]: Didn't handle strings with separators longer than a single character and in other cases. * stringsfile.l: The definition of LABEL needed expanding. Sun Jan 5 17:41:37 1997 Andrew McCallum Further changes for the NSString implementation. * src/NSGCString.m ([NSGMutableCString -insertString:atIndex:]): Use -cStringNoCopy instead of the removed method -_cStringContents. * src/include/Stream.h (StreamException): Change type to NSString from id . * src/include/NSUser.h (NSUserName, NSHomeDirectory, NSDirectoryForUser): Change the return types from (char*) to (NSString*). * src/include/NSUserDefaults.h (NSUserName, NSHomeDirectory, NSDirectoryForUser): Declare them unconditionally; before it was conditioned on NEXT_FOUNDATION. * src/include/NSArray.h: Don't include * src/include/Streaming.h: Likewise. * src/include/Port.h: Likewise. * src/include/Coder.h: Likewise. Changes to send -awakeAfterUsingDecoder, and to do the proper object substitution if necessary. * src/Decoder.m ([Decoder +readSignatureFromCStream:csgetClassname: nameformatVersion:version]): Better commented. ([Decoder -_coderSubstituteObject:atReference:]): New method. ([Decoder -_coderPushRootObjectTable]): Better commented. ([Decoder -finishDecodingInterconnectedObjects]): Implement an approach to root-object-based -awakeAfterUsingCoder. ([Decoder -decodeObjectAt:anObjPtr:name]): Send -awakeAfterUsingCoder: here. First see if the object actually responds to it, then send it and make the object substitution if necessary. Also make the appropriate substitution in Decoder's internal tables matching references numbers to objects. * src/Encoder.m (DEFAULT_DEFAULT_FORMAT_VERSION): Renamed from DEFAULT_FORMAT_VERSION, for clarity with variable by the same old name. * checks/fref.m: Add comment and move around headers for easier reading. * src/include/NSAutoreleasePool.h (init_autorelease_thread_vars): Make it a macro instead of a static inline function. This avoids the warning with not optimizing. * checks/Makefile.in (CFLAGS): Remove -O, for easier debugging. (SRCS): Added awake.m. * checks/awake.m: New file, testing -awakeAfterUsingCoder:. Sun Nov 24 09:20:47 1996 Andrew McCallum * src/NSString.m: Fixed `Caveats' comment. ([NSString -commonPrefixWithString:options:]): Method implemeneted. ([NSString -capitalizedString]): Method implemented. ([NSString -lowercaseString]): Method implemented. ([NSString -uppercaseString]): Method implemented. ([NSString -stringByExpandingTildeInPath]): Method implemented. ([NSString -stringByAbbreviatingWithTildeInPath]): Method implemented. ([NSString -stringByStandardizingPath]): Method implemented. ([NSString -_cStringContents]): Method removed. All callers changed to use -cStringNoCopy. ([NSString -objectAtIndex:]): Method removed. * src/include/NSString.h: Moved non-OpenStep methods aside, put some under STRICT_OPENSTEP, others under NO_GNUSTEP. Reordered declarations to match. [NSString -_cStringContents]: Method removed. * src/ostream.m: Don't use old String methods; use NSString methods. * src/include/NSString.h: Don't include and . [!NO_GNUSTEP]: Declare -cStringNoCopy. * src/UdpPort.m: Don't include * src/TextCStream.m ([TextCStream -decodeName:name]): Don't use the non-existant +stringWithCStringNoCopy:. * src/Stream.m ([Stream -readLine]): Likewise. * src/MemoryStream.m ([MemoryStream -readLine]): Likewise. * src/NSString.m ([NSString -cStringNoCopy]): New method. * src/NSGCString.m ([NSGCString -emptyCopy]): Method removed. It was part of the Collecting protocol. ([NSGMutableCString -emptyCopy:]): Likewise. * src/*.m, src/include/*.h: Substitute (NSString*) for (id ). * src/Makefile.in (GNU_MFILES): Remove CString.m, ConstantString.m, MutableString.m, MutableCString.m, String.m. (GNU_HEADERS): Remove include/String.h. * src/NSString.m: Don't include . ([NSString +initialize]): Don't use static variable to prevent getting run twice. Mon Nov 18 11:30:39 1996 Andrew McCallum * STATUS: Removed classes NSBTreeBlock, NSBTreeCursor, NSByteStore, and NSByteStoreFile since they are no longer part of the OpenStep standard. Sat Nov 2 15:39:56 1996 Andrew McCallum * src/Decoder.m ([Decoder -_coderCreateReferenceForInterconnectedObject:]): Autorelease the placeholder object to prevent memory leak. * src/Connection.m ([Connection -forwardForProxy:selector:argFrame:]): Add an assertion that we processed all arguments and dismissed the ConnectedCoder. Thu Oct 31 11:54:42 1996 Andrew McCallum * Version (SUBMINOR_VERSION): Version 0.2.11. * src/Makefile.in (DIST_FILES): Remove include/config-win32.sed. * src/NSString.m (HAVE_REGISTER_PRINTF_FUNCTION): Move definition below #include's. * checks/nsnotification.m ([Observer -gotNotificationFoo:]): Don't use %@ inside printf(). ([Observer -gotNotificationFooNoObject:]): Likewise. * checks/nshashtable.m (main): Avoid adding 0 to the hashtable, because that is currently the o_hash_not_an_element_marker. * src/BinaryCStream.m ([BinaryCStream -encodeValueOfCType:at:withName:name]): Use intermediate float value. ([BinaryCStream -decodeValueOfCType:at:withName:]): Likewise. * src/stringsfile.y: Remove duplicated content. * src/stringsfile.l: Likewise. * src/StdioStream.m: Fix typo. That's HAVE_STRERROR, not HAS_STRERROR. * src/BinaryCStream.m ([BinaryCStream -decodeValueOfCType:at:withName:]): Don't make float and double `volatile'. It conflicts with memcpy. ([BinaryCStream -encodeValueOfCType:at:withName:name]): Likewise. * src/Makefile.in (DEFS): Add comment. * src/NSDictionary.m: Include Foundation/NSException.h to get NSInvalidArgumentException. * src/NSCalendarDate.m ([NSCalendarDate -descriptionWithCalendarFormat:locale:]): Remove unused variables MS and DS. Avoid warning by not trying to sprintf() a zero-length string. * src/include/NSZone.h: Include gnustep/base/config.h instead of preface.h; otherwise we get a dependancy loop on the definition on NSZone. * src/o_array.m: Include gnustep/base/preface.h first. * src/Makefile.in (HEADERS_INSTALL): Added include/config.h. (install): Don't install include/config.h specially, it's now done with the rest of the HEADERS_INSTALL files. (ALL_CPPFLAGS): Don't pass `-include include/config.h' since include/preface.h now does that. * src/include/preface.h.in: Include , and do it first. * src/NSUser.m (NSUserName): Make is work for SOLARIS. (Reported by M. Decugis .) * src/NSUserDefaults.m ([NSUserDefaults -initWithUser:]): Don't try to append to a immutable string! ([NSUserDefautls +standardUserDefaults]): When creating a new defaults, return it, not nil! (Reported by M. Decugis .) * src/BinaryCStream.m ([BinaryCStream -encodeValueOfCType:at:withName:name]): Use memcpy() instead of assignment to get the floats and doubles from the `at:' argument. ([BinaryCStream -decodeValueOfCType:at:withName:]): Likewise, for setting the values. (Reported by M. Decugis .) * src/NSPage.m (getpagesize) [__SOLARIS__]: Define as macro making proper sysconf call. (Reported by M. Decugis .) (NSPageSize): Remove the dependancy on __mach__ to a #define above. * configure.in: Use config/config.vsprintf.c to define VSPRINTF_RETURNS_LENGTH. Deal with different systems for which vsprintf() returns either the length or the char*. * Makefile.in (DIST_FILES): Added config/config.vsprintf.c. * config/config.vsprintf.c: New file. * src/include/preface.h.in (VSPRINTF_LENGTH): New macro; definition depends on VSPRINTF_RETURNS_LENGTH. * src/MemoryStream.m ([MemoryStream -writeFormat:arguments:]): Use VSPRINTF_LENGTH. * src/NSString.m ([NSString -initWithFormat:arguments:]): Likewise. * src/String.m ([String -initWithFormat:arguments:]): Likewise. ([String -initWithCFormat:arguments:]): Likewise. * acconfig.h: Add VS_PRINTF_RETURNS_LENGTH. * src/RunLoop.m ([RunLoop -limitDateForMode:]): Bracket timer firing with a retain/release of the MIN_TIMER. (Reported by Richard Frith-Macdonald .) * Heap.m: Fix index comparisons. (From Richard Frith-Macdonald .) * src/include/RunLoop.h (RunLoop _mode_2_fd_speakers): New ivar. ([RunLoop]): Added new methods for notification of readiness of file descriptors for reading and writing. Done by Richard Frith-Macdonald . * src/RunLoop.m: Added implementation of new methods for notification of readiness of file descriptors for reading and writing. Done by Richard Frith-Macdonald . * examples/first-server.m: Added test of RunLoop FD listening. Done by Richard Frith-Macdonald . * src/mframe.m (method_types_get_next_argument): Do weird argframe workaround not just on m68k, but on all NeXT systems. (Reported by Richard Frith-Macdonald .) * src/RunLoop.m ([RunLoop -acceptInputForMode:beforeDate:]): Fix assignment of TIMEOUT.TV_USEC. (Reported by Richard Frith-Macdonald .) Wed Oct 23 11:19:05 1996 Scott Christley * src/Makefile.sed.nt: Link with ObjC runtime DLL library when making gnustep-base a DLL. * src/NSProcessInfo.m (main): Initialize network library for Win32. * src/RunLoop.m (-acceptInputForMode:beforeDate:): When determining which ports are ready for reading, don't assume that file descriptor for FD_ISSET is an integer. Maintain list of ports we are listening to so that we check those exact ports when determining which are ready for reading. * src/TcpPort.m (invalidate): Use closesocket function on Win32. (_getPacketSize:andReplyPort:fromSocket:inPort:): Use recv instead of read for Win32 as read doesn't work for sockets. (_fillFromSocket:): Likewise. (_writeToSocket:withReplySockaddr:): Use send instead of write for Win32 as write doesn't work for sockets. * src/behavior.m: Don't directly access the ObjC runtime uninstalled dtable variable, use the public function instead. * src/objc-load.m: Likewise. * checks/Makefile.sed.nt: Add specific targets for tcpport-server and tcpport-client. Remove unneeded definitions. Tue Oct 15 15:29:07 1996 Adam Fedor * src/objc-load.c: Use gnu names for objc_load_modules and objc_unload_modules functions as defined in header. * src/include/objc-load.h (objc_load_modules, objc_unload_modules): Use Class not Class*. Fri Oct 18 10:45:10 1996 Scott Christley * Makefile.sed.nt: Always force gnustep/base target. * src/NSDate.m (+timeIntervalSinceReferenceDate): Use native Win32 functions to obtain current time. * src/Time.m (gettimeofday): Win32 implementation, not year 2000 compliant so don't use it. * src/include/NSZone.h: Include preface.c so that NSZone gets configuration settings. Wed Oct 16 10:01:23 1996 Scott Christley * checks/nsdate.m: New file. * src/NSCalendarDate.m: New file. * checks/Makefile.in: Add test program for NSDate classes. * src/Makefile.in (GNUSTEP_MFILES: Add NSCalendarDate.m. * src/NSDate.m: Eliminate use of NSConcreteDate. Utilize the NSCalendarDate class for implementing some methods. * src/include/NSDate.h: Add NSCalendarDate interface. Tue Oct 1 12:56:09 1996 Nicholas Christopher * NSString.m: Implemented -initWithContentsOfFile: and -propertyListFromStringsFileFormat:. * stringsfile.l, stringsfile.y: New files. Fri Oct 25 20:22:37 1996 Andrew McCallum * src/StdioStream.m (strerror) [!HAS_STRERROR]: New function from Richard Frith-Macdonald . * configure.in: Check for strerror(). Fri Sep 27 10:33:07 1996 Adam Fedor * aclocal.m4 (OBJC_CON_AUTOLOAD): New macro. Explicit check for constructor loading. (OBJC_SYS_AUTOLOAD): Insert '_cv' in cache variable name to get it to cache correctly. (OBJC_SYS_DYNAMIC_LINKER): Use headers to determine linker. Check for libraries separately. (OBJC_SYS_DYNAMIC_FLAGS): Check to see if '-shared' load flag works (for DEC Alpha). Thu Sep 26 12:39:18 1996 Adam Fedor * src/ostream.m (ostream_close_memory): Change to OSTREAM_SAVEBUFFER constant. Wed Sep 25 18:32:14 1996 Scott Christley * src/include/config-win32.sed: Delete file. * src/include/config-win32.h: Changes for new config.h.in. * configure.bat: Changes for new config.h.in. * src/Makefile.sed.nt: Changes for new config.h.in. Make sure preface.h is created before creating gnustep/base directory. * src/NSUserDefaults.m: Don't include header file for Win32. * src/Time.m: Specialized time routines for Win32. * src/Makefile.in (distclean): Remove generated files. * admin/example.patch: Remove CVS keywords. * src/NXStringTable.m: Likewise. * src/dld-load.h: Likewise. * src/hpux-load.h: Likewise. * src/include/objc-load.h: Likewise. * src/null-load.h: Likewise. * src/objc/NXStringTable.h: Likewise. * src/simple-load.h: Likewise. Fri Oct 25 18:42:45 1996 Andrew McCallum * src/NSSet.m ([NSSet -anyObject]): Implemented. * src/NSDictionary.m ([NSDictionary +dictionaryWithObjectsAndKeys:]): New method. Wed Sep 25 08:47:33 1996 Andrew McCallum * Version (SUBMINOR_VERSION): Version 0.2.10. * src/NSString.m ([NSString -initWithFormat:arguments:]): Fix bug whereby multiple %@'s in the same format string created incorrect output. * examples/second-client.m: Don't pass %@ directives to printf(); use %s and -cStringNoCopy instead. * examples/second-server.m: Likewise. * doc/install.texi: Add the installation step. Tue Sep 24 11:20:06 1996 Andrew McCallum * Makefile.in (mostlyclean, clean, distclean, maintainer-clean): Reverse order of subdir-cleaning and topdir-cleaning so that we don't force the Makefile to automatically run ./configure for us, (which sometimes happens in the wrong way). * src/NSString.m ([NSString -copy]): New method. Now -copy sent to strings should work. (Added temporarily until this problem is fixed by me overhaul of the string classes to separate Core and NonCore methods.) * checks/string.m (main): Add tests for -copy and -mutableCopy. * src/ostream.m (ostream_open_memory): Cast (const char*) to (char*) when passing to MemoryStream -init... method. * examples/second-client.m (main): Rename `exception' to `localException'. (Reported by Erich Stefan Boleyn .) * admin/HOWTO-patches: Update from libobjects terminology to gstep-base terminology. * doc/install.texi: Mention specification of the GNU runtime in the GNUstep-specific instructions. * configure.in: Warn the user that GNUstep doesn't work with the NeXT Objective C runtime. * src/BinaryCStream.m: Check HAVE_VALUES_H before trying to include ; use if we don't. * configure.in: Add check for needed by BinaryCStream.m. (Reported by Gregor Hoffleit .) * src/NSUserDefaults.m: Don't try to include NeXT's headers; just include GNUstep headers. * src/include/NSUserDefaults.h: Likewise. (Reported by Gregor Hoffleit .) * src/ostream.m (ostream_close_memory): Send -setFreeWhenDone:NO to the MemoryStream, not -release. * src/MemoryStream.m ([MemoryStream -setFreeWhenDone:]): New method. * src/include/MemoryStream.h: Declare new method. (Reported by Adam Fedor .) * aclocal.m4: Do forgotten renames of ac_cv_sys_dld and ac_cv_sys_autoload to objc_cv_sys_dld and objc_cv_sys_autoload. (Reported by Nick Christopher .) * src/include/objc-gnu2next.h: Don't include gnustep/base/objc-malloc.h. * src/NSSet.m ([NSMutableSet -addObjectsFromArray:]): Implemented. Wed Sep 18 09:11:44 1996 Andrew McCallum * Version (SUBMINOR_VERSION): Version 0.2.9. * src/NSString.m (HAVE_REGISTER_PRINTF_FUNCTION): Temporarily set this to 0 until I figure out when register_printf_function's output handler function takes `va_list' and when it takes `void**'. * src/TcpPort.m: Use new ivar name eof_position, not old eofPosition. * src/include/NSZone.h: Don't include gnustep/base/config.h. Tue Sep 17 16:44:15 1996 Andrew McCallum * src/ostream.m (ostream_open_memory): Use new MemoryStream method to specify that buffer should not be deallocated when MemoryStream is deallocated. Don't do the extra retain that was the previous workaround. * src/MemoryStream.m: Rename all uses of ivar eof_position. ([MemoryStream -_initOnMallocBuffer:freeWhenDone:size: eofPosition:prefix:position:]): Method name changed to include freeWhenDone:. Set new ivar. ([MemoryStream -_initOnMallocBuffer:size: eofPosition:prefix:position:]): New method (with old name) that calls above method with `YES' for freeWhenDone:. * src/include/MemoryStream.h: Declare new method. (MemoryStream free_when_done): New ivar. (MemoryStream eof_position): Ivar renamed from eofPosition, to conform to GNU coding standards. * src/Makefile.in (GNU_MFILES): Rename objc_streams.m to ostream.h. (GNU_HEADERS): Rename objc_streams.h to ostream.h. * src/ostream.m: File renamed from src/objc_streams.m. Fix copyright date, and make minor formatting changes. * src/ostream.h: File renamed from src/objc_streams.h. Fix copyright date, and make minor formatting changes. * src/MemoryStream.m (MEMORY_CHECK): Macro deleted. objc_malloc() and friends take care of raising the correct exception. All calls removed. Tue Sep 17 11:43:23 1996 Adam Fedor * src/Makefile.in (GNU_MFILES): Add new file. (GNU_HEADERS): Likewise. * src/MemoryStream.m ([MemoryStream -initWithSize:prefix:position:]): Add error checking. ([MemoryStream -writeBytes:length:]): Likewise. ([MemoryStream -setStreamBufferCapacity:]): Likewise. * src/StdioStream.m ([StdioStream -initWithFilename:fmode]): Add error checking. ([StdioStream -initWithFileDescriptor:fmode]): Likewise. ([StdioStream -writeBytes:length:]): Likewise. ([StdioStream -readBytes:length:]): Likewise. * src/Stream.m ([Stream -writeFormat:]): Implement. ([Stream -setStreamPosition:]): Likewise. * src/MemoryStream.m ([MemoryStream -writeFormat:arguments:]): Implement instead of writeFormat:. ([MemoryStream -setStreamPosition:seekMode:]): Implement instead of -setStreamPostion:. * src/StdioStream.m ([StdioStream -writeFormat:arguments:]): Implement instead of writeFormat:. ([StdioStream -setStreamPosition:seekMode:]): Implement instead of -setStreamPostion:. * src/objc_streams.m: New file. * src/base/objc_streams.h: New file. * src/base/Stream.h: Declare new exception. * src/Stream.m: Define it. * src/base/Streaming.h: Add new enum type. Add -setStreamPostion:seeMode: to protocol. Tue Sep 17 10:33:31 1996 Andrew McCallum * doc/install.texi: Fix typo in use of @code{}. * src/md5.c: Don't include config.h. * Makefile.in (DIST_FILES): Added contents of RCS_FILES. Added acconfig.h. (RCS_FILES): Variable removed. * doc/gnustep-faq.texi: Cause the time stamp to be updated automatically by Emacs. * src/NSScanner.m ([NSScanner -scanRadixUnsignedInt:]): New method. ([NSScanner -_scanInt:]): Deal with overflow better. (?) ([NSScanner -scanLongLong:]): Likewise. * src/include/NSScanner.h: Declare new method. * checks/nsscanner.m: Test new method, -scanRadixUnsignedInt:. Changes from Eric Norum . * src/NSObject.m ([NSObject -doesNotRecognizeSelector:]): Raise NSInvalidArgumentException, not NSGenericException. (Reported by Jeremy Bettis .) Mon Sep 16 20:11:54 CDT 1996 Jeremy Bettis * src/HashTable.m ([HashTable -isKey]): Updated isKey to use the new hash_value_for_key function in the runtime, and thereby allow for nulls in HashTables. Mon Sep 16 15:08:42 1996 Andrew McCallum * aclocal.m4 (DYNAMIC_LINKER): Put double quotes around some $-variable dereferences. (Reported by Richard Frith-Macdonald .) * src/o_vscanf.c: Include . (Reported by Richard Frith-Macdonald .) * src/include/preface.h.in: Don't include gnustep/base/config.h. Note, this file used to define NeXT_runtime and NeXT_cc. These macros will no longer be available to library users. * src/include/config.h.in: File removed. It is not automatically generated by autoheader in src/Makefile. * src/o_vscanf.c: Don't include no-longer-existant gnustep/base/objc-malloc.h. (Reported by Adam Fedor.) * src/Makefile.in (include/config.h.in): New dependancy. (include/config.h): New dependancy. (ALL_CPPFLAGS): Added -include argument to have gcc look at include/config.h. It is no longer included in include/preface.h because other packages that use the installed Base Library may have their own ideas about these macro values. * acconfig.h: New file, needed for autoheader. * configure.in: Use AC_CONFIG_HEADER to put config macros in a file instead of on gcc's command line. Use AC_DEFINE_UNQUOTED to set NeXT_runtime and NeXT_cc instead of using AC_SUBST. * make-dist-diff (diff): Add -N flag so new files will get created. Sat Sep 7 13:37:32 1996 Andrew McCallum * Version (SUBMINOR_VERSION): Version 0.2.8. Beginning of changes related to use of new Objective C runtime. * Makefile.in (DIST_FILES): Remove gcc-objc.patch. Add gcc-2.7.2-objc.diff and gcc-2.7.2.1-objc.diff. * configure.in: Insert -lobjc before rest of LIBS, not after. * src/include/NSThread.h: Remove underscore from front of objc_thread type. * src/NSObject.m: Remove underscores from front of objc_mutex types. ([NSObject -error:]): Use objc_verror(), not _objc_error. * doc/install.texi: Refine instructions for installing pthreads. Wow, is it yucky. * configure.in: Remove check for sel_types_match. That patch was added long ago. * src/include/preface.h.in (OBJC_STRINGIFY): New macro. * src/include/preface.h.in: Don't include objc-malloc.h. * src/Foundation/NSLock.h: Remove underscore from before objc_mutex_t. * src/include/preface.h.in (OBJC_MALLOC): Macro moved here from src/include/objc-malloc.h. (OBJC_VALLOC): Likewise. (OBJC_ATOMIC_MALLOC): Likewise. (OBJC_REALLOC): Likewise. (OBJC_CALLOC): Likewise. (OBJC_FREE): Likewise. * src/mframe.m: Don't include objc-malloc.h. * src/RNGAdditiveCongruential.m: Likewise. * src/NSAutoreleasePool.m: Likewise. * src/MemoryStream.m: Likewise. * src/AutoreleasePool.m: Likewise. * src/Makefile.in (GNU_MFILES): Remove objc-malloc.m. (GNU_HEADERS): Remove include/objc-malloc.h. * src/mframe.m (mframe_build_return): In accordance with Objective C runtime change, use objc_malloc as a function, not a function pointer. * src/behavior.m (behavior_class_add_methods): Likewise. * src/Storage.m ([Storage -initCount:elementSize:description:]): Likewise. ([Storage -shallowCopy]): Likewise. ([Storage -read:]): Likewise. * src/Storage.m ([Storage -initCount:elementSize:description:]): Likewise. * src/NSMutableData.m ([NSMutableData -initWithCapacity:]): Likewise. * src/NSGData.m ([NSGMutableData -initWithCapacity:]): Likewise. * src/NSData.m ([NSMutableData -initWithCapacity:]): Likewise. * src/NSAutoreleasePool.m ([NSAutoreleasePool -init]): Likewise. ([NSAutoreleasePool -addObject:]): Likewise. * src/MemoryStream.m ([MemoryStream -readLine]): Likewise. * src/Invocation.m ([Invocation -initWithCoder:]): Likewise. * src/o_vscanf.c (STRING_ARG): Likewise. (STRING_ADD_CHAR): Likewise, with objc_realloc. * src/NSZone.m: Likewise. * src/Storage.m: Likewise. * src/MemoryStream.m ([MemoryStream -writeBytes:length:]): Likewise. * doc/install.texi: Update instructions for new Objective C runtime patches and for new pthreads. * RELEASE-NOTES: Talk about need for new Objective C runtime to compile this release. End of changes related to use of new Objective C runtime. * config.guess: New version from FSF. * doc/Makefile.in: Added some pattern rules, but commented them out for now. * src/NSGCString.m ([NSGCString -substringFromRange:]): Don't always return a mutable string class; return the same mutable/immutable string class as self. This also simplies the code. * src/NSGCString.m ([NSGCString -substringFromRange:]): New method, overrides superclass method with more efficient implementation. (From Eric Norum.) * src/NSScanner.m: Now that NSCharacterSet's does its own caching, simplify this code. (Changes from Eric Norum .) * src/NSCharacterSet.m (NSCharacterSet_PATH): New macro, replacing BITMAP_PATH. Value partially determined by GNUSTEP_INSTALL_PREFIX. * configure.in: Use AC_CHECKING instead of `echo', so ./configure obeys --quiet and --silent. * src/Makefile.in (DEFS): Add definition of GNUSTEP_INSTALL_PREFIX, equal to $(prefix). This is needed by NSCharacterSet, so it knows where to find the char set data files. Thu Aug 1 10:42:19 1996 Adam Fedor * src/NSCharacterSet.m ([NSCharacterSet -_bitmapForSet:number:]): Retain cached set. Wed Sep 4 11:29:31 1996 Andrew McCallum * doc/gnustep-faq.texi (Why don't we separate the OpenStep standard classes from the GNU-specific classes?): New Q/A pair. (Where can I get a copy?): Removed reference to Rochester's FTP site, which will no longer be used, now that I'm at CMU. Mon Sep 2 10:00:05 1996 Andrew McCallum * Version (SUBMINOR_VERSION): Version 0.2.7. * checks/nsbundle.m: Use new exception variable name. * checks/values.m: Likewise. * src/NSString.m ([NSString -substringFromRange:]): Implement it using CString's for now so we can get it working; (we'll fix everything for Unichar's in the next release). * checks/nsscanner.m: New file from Eric Norum. * Version: Remove spaces around `=' so file can be read by sh. (VERSION): Use curly braces for sh. * src/NSString.m ([NSString -substringFromRange:]): Fix bug in references to string length. * src/NSGArray.m: Declare NonCore classes. * src/NSCharacterSet.m ([NSCharacterSet +_bitmapForSet:number:]): Add an abort() after raising the exception, to avoid gcc warning. * Makefile.in (clean): Fix dependancies so we actually clean-top, not mostlyclean-top. (distclean): Analogously. (maintainer-clean): Analogously. Tue Aug 27 13:38:14 1996 Adam Fedor * src/Connection.m ([Connection -_service_forwardForProxy]): Use new exception variable name. * src/NSCharacterSet.m: ([NSCharacterSet -_bitmapForSet:number:]): Likewise Sat Aug 24 16:41:01 1996 Adam Fedor * src/include/NSException.h (NS_HANDLER): Change local exception variable name. Wed Jul 17 16:04:29 1996 Adam Fedor * NSCharacterSet.m: Cache standard character sets. ([NSCharacterSet +initialize]): New method. ([NSCharacterSet _bitmapForSet:number:]): Return set from cache if available, otherwise find bitmap file and add to cache. All callers changed. Mon Sep 2 09:23:46 1996 Andrew McCallum * src/NSString.m ([NSString -substringFromRange:]): Raise correct exceptions. * src/Makefile.in (install): Make a soft link from `$(includedir)/gnustep/base' to `$(includedir)/objc' the same way we do for `$(includedir)/Foundation'. * src/NSString.m ([NSString -getCharacters:range:]): Fix bug in buffer index. (Reported by Eric Norum .) ([NSString -rangeOfString:aStringoptions:maskrange:aRange]): Implemented. (By Eric Norum.) * src/NSUser.m: Include . Sun Aug 25 16:12:49 1996 Andrew McCallum * checks/Makefile.in (SRCS): Added nsscanner.m from Eric Norum. * src/NSScanner.m: Fix indentation. ([NSScanner +scannerWithString:]): Rewrite to avoid unnecessary local variable. ([NSScanner -initWithString:]): Call [super init]. ([NSScanner -_scanCharactersFromSet:intoString:]): Method renamed to put underscore at the beginning, not in the middle of the method name. All callers changed. ([NSScanner -_skipToNextField]): Likewise. ([NSScanner +localizedScannerWithString:]): New method, unimplemented. ([NSScanner -scanDouble:]): Initialize `unichar c' to avoid warning. ([NSScanner -scanLongLong:]): Don't compare with -(LONG_LONG_MIN), this number is out of range since, in two-complement arithmetic, we have one more negative number than positive numbers. * src/include/NSScanner.h: Include . Fix indentation. Standarize #define wrapper symbol. * src/NSScanner.m, src/include/NSScanner.h: New files from Eric Norum. Sun Aug 11 10:54:49 1996 Andrew McCallum * src/NSUser.m (NSHomeDirectory): Use NSHomeDirectoryForUser instead of the HOME environment variable. * src/NSUserDefaults.m: #include to get declarations for NSUser* functions. (NSUserName): Function removed; it can already be found in NSUser.m. (NSHomeDirectory): Likewise. (NSHomeDirectoryForUser): Likewise. * doc/Makefile.in: Fix typo: properly comment out section. * doc/gnustep-faq.texi: English fixes, and move NSScanner to `implemented' list. * doc/install.texi: English fixes, and mention --enable-shared with Base Library configure directions. * README.foundation: Add note about making a soft link, instead of adding #ifdef's to the code. * NSBundle.README: Change name from libobjects to GNUstep Base Library. * README.first: Likewise. Wed Aug 7 09:06:10 1996 Andrew McCallum * src/mframe.m (mframe_build_return): Remove comment about users responsibility to free returned char*'s; it's no longer true. Mon Aug 5 11:25:30 1996 Andrew McCallum * src/include/NSArray.h: Remove declaration of NonCore classes; just the category is sufficient. Mon Sep 2 09:11:34 1996 Andrew McCallum * src/mframe.m: Use gcc's __builtin_return smarts to find location of `char' and `short' return values; don't use my (possibly wrong) guesses. (retframe_char): New nested function. (retframe_short): New nested function. (mframe_do_call) [_C_CHR, _C_UCHR]: Use retframe_char. [_C_SHT, _C_USHT]: Use retframe_short. * src/NSObject.m ([NSObject -isKindOfClass:]): Fix formatting. Fri Aug 30 17:00:29 1996 Andrew McCallum * src/Dictionary.m ([Dictionary -removeObject:]): Implemented method. (Needs testing!) Thu Jul 11 21:12:41 1996 Andrew McCallum * Version (SUBMINOR_VERSION): Version 0.2.6. Tue Jun 25 12:56:01 1996 Scott Christley * NSCharacterSets/Makefile.in: Remove Makefile when distclean. * admin/Makefile.in: Likewise. * checks/Makefile.in: Change realclean target to maintainer-clean. * doc/Makefile.in: Likewise. * examples/Makefile.in: Likewise. * Makefile.in: Clean the subdirectories first before the top level directory to avoid configuration loop. * checks/Makefile.sed.nt: Change name of runtime initialization routine to use standard "_init_runtime" suffix. * checks/nsarchiver.m: Likewise. * checks/nsarray.m: Likewise. * src/win32-entry.c: Likewise. * src/Makefile.in: Likewise. Clean additional files. * src/NSDate.m: Use __WIN32__ macro instead of WIN32. * src/NSTime.m: Implement Win32 specific time routines. * src/include/config-win32.h: Likewise. Fri Jun 21 16:45:31 1996 Scott Christley * configure.bat: New filenames for Win32 configuration. * src/Makefile.in: (DIST_FILES): Add Win32 configuration files: src/include/config-win32.sed, src/include/config-win32.h. * src/BinaryCStream.m: Rename WIN32 to __WIN32__ to conform to ANSI specifications. Perform any WIN32 customization. * src/NSBundle.m: Likewise. * src/NSPage.m: Likewise. * src/NSProcessInfo.m: Likewise. * src/NSUser.m: Likewise. * src/NSRunLoop.m: Likewise. * src/TcpPort.m: Likewise. * src/UdpPort.m: Likewise. * src/find_exec.c: Likewise. * src/include/TcpPort.h: Likewise. * src/include/Time.h: Likewise. * src/include/config-nt.sed: Renamed to config-win32.sed. * src/include/config-nt.h: Renamed to config-win32.h Thu Jul 11 08:20:34 1996 Andrew McCallum * src/NSAutoreleasePool.m ([NSAutoreleasePool -dealloc]): Remove untrue assertion that SELF be this thread's current pool. (Reported by Adam Fedor.) * checks/Makefile.in (LIBS): Remove -lmcheck. * Version (SUBMINOR_VERSION): Version 0.2.5. * doc/news.texi: Fix typo, replace @ with @@ in email address. * Version (SUBMINOR_VERSION): Version 0.2.4. * src/NSString.m (PRINTF_ATSIGN_VA_LIST): Reverse sense of test. This macro should be defined if libc version is *less than* 5.2. * examples/dictionary.m: Long-overdue update for new collection heirarchy. * examples/textcoding.m (main): Fix typo in comment. * examples/second-server.m: Add comments. * examples/second-client.m (main): To avoid warnings: make SERVER static; get rid of unused variable. * examples/Makefile.in (CFLAGS): Added -Wno-format so we don't get complains about the %@ printf directive. * doc/news.texi: Add news about NSUserDefaults, thread-safety, @%, and NSPage. * doc/readme.texi: Update description of classes, although the list is still incomplete. Wed Jul 10 16:28:14 1996 Andrew McCallum * doc/gnustep-faq.texi: New Q/A about mixing Objective C and C++. Include base-desc.texi for description of Base Library. Update "state of development for Base Library. Correct description of NeXT's archiving. Add ocbi.com ftp site. * doc/base-desc.texi: Improve list of example classes. * doc/announce.texi: Fix comments about NeXT's cc. * doc/machines.texi: Label as out-of-date. * doc/advertisement.texi: Comment out inclusion of machines.texi. * src/NSUserDefaults.m: Fix source to avoid warnings. * src/NSUserDefaults.m: New file from Georg Tuparev. * src/include/NSUserDefaults.h: Likewise. * src/NSUserDefaults.m, src/include/NSUserDefaults.h: Fix formatting to conform to GNU standards. * src/Makefile.in (GNUSTEP_MFILES): Added NSUserDefaults.m. (GNUSTEP_HEADERS): Added include/NSUserDefaults.h. Tue Jul 9 20:05:16 1996 Andrew McCallum * doc/install.texi: Enumerate the steps, and various other corrections. * src/RunLoop.m ([RunLoop -acceptInputForMode:beforeDate:]): Free fd_2_object before returning in case where select() returned 0. (Reported by Marc Decugis .) Mon Jul 8 21:55:11 1996 Andrew McCallum * Version (SUBMINOR_VERSION): Version 0.2.3. * src/Invocation.m ([ArgframeInvocation -dealloc]): Release arguments depending on ARGS_RETAINED, not RETURN_RETAINED. * checks/release.m: New file. * checks/Makefile.in (SRCS): Added release.m. * src/o_map.m (o_map_remove_node): Function renamed from o_map_remove_node_from_its_map(). Free the node after removing it! Otherwise, memory leaks and leaks! * src/NSObject.m (NSDecrementExtraRefCountWasZero): Call renamed function for removing node. * src/NSAutoreleasePool.m (push_pool_to_cache): Avoid unnecessary test. (pop_pool_from_cache): Don't bother conditionally initializing the cache; it will always be initialized when we are here. ([NSAutoreleasePool -dealloc]): Add assertion. ([NSAutoreleasePool -reallyDealloc]): New method. Tue May 28 15:39:36 1996 Adam Fedor * checks/nsmaptable.m: Check for nil map element. * src/Invocation [Invocation -dealloc]: Release return_value only if return_retained. [ArgframeInvocation -dealloc]: Likewise. Sat Jul 6 09:03:25 1996 Andrew McCallum * Version (SUBMINOR_VERSION): gnustep-base version 0.2.2. * doc/install.texi: Describe installation of pthreads. * src/NSObject.m ([NSObject +initialize]): Use o_map_with_callbacks(), instead of the short-cut function o_map_of_non_owned_void_p_to_int(). * src/RunLoop.m ([RunLoop -acceptInputForMode:beforeDate:]): Add comment about arbitrary fd port limit. Fix this eventually. * checks/tcpport-client.m (main): When argc == 1, pass nil for hostname instead of @"localhost". * checks/string.m (main): Add test of copyWithZone. * src/TcpPort.m ([TcpOutPacket -_writeToSocket:withReplySockaddr:]): Use memcpy() instead of cast; some systems have trouble with the cast due to alignment issues. (Reported by Marc Decugis .) ([TcpInPacket +_getPacketSize:andReplyPort:fromSocket:inPort:]): Likewise. * configure.in: Clean up echo'ed message for shared library flags. * gcc-objc.patch: New objc runtime patch from Scott Christley. * Makefile.in (DIST_FILES): Include gcc-objc.patch instead of objc.patch. * doc/install.texi: Update instructions for new objc runtime patch. * src/Foundation/NSAutoreleasePool.h: Include for memset(). A first attempt at making NotificationDispatcher thread-safe. * src/NotificationDispatcher.m ([NotificationDispatcher -init]): Create _LOCK. ([NotificationDispatcher -dealloc]): New method. ([NotificationDispatcher -_addObserver:notificationRequest:name:object:]): Use _LOCK to provide thread-safety. Lock around all access to ivars. ([NotificationDispatcher -removeObserver:]): Likewise. ([NotificationDispatcher -removeObserver:name:object:]): Likewise. ([NotificationDispatcher -postNotification:]): Likewise. All Notification postings are serialized. If this weren't true, the user would have to worry about all kinds of thread-safety issues in unpredictable ways, because there is no way to tell what other objects have asked for notification postings. * src/include/NotificationDispatcher.h (NotificationDispatcher _lock): New ivar. Fix error that occurs when using a TcpOutPort that was created with a default hostname. * src/TcpPort.m ([TcpInPort +newForReceivingFromPortNumber:]): Terminate the hostname at the first dot before looking up with gethostbyname(). If gethostbyname() fails, don't try again with "localhost"; signal an error instead. ([TcpOutPort +newForSendingToPortNumber:onHost:]): When HOSTNAME is empty or nil, don't use "localhost", look up the name of the local machine, and use that. Before this change we could easily get "Can't change reply port of an out port once set" errors. Fri Jul 5 08:59:26 1996 Andrew McCallum Use more-efficient o_map instead NSMapTable for retain counts. * src/NSObject.m (retain_counts): Make it an o_map instead of NSMapTable; (o_map is more efficient). (NSIncrementExtraRefCount): Use o_map interface. (NSDecrementExtraRefCountWasZero): Likewise. ([NSObject +initialize]): Likewise. ([NSObject -retainCount]): Likewise. * src/o_map.m (o_map_node_for_key): New function, non-static, for efficient implementation of NSObject retain count management. (o_map_remove_node_from_its_map): Likewise. Thu Jul 4 21:00:42 1996 Andrew McCallum Make -retain/-release counts thread-safe. * src/NSObject.m (retain_counts_gate): New static variable, mutex for protecting RETAIN_COUNTS. (NSIncrementExtraRefCount): Use it. (NSDecrementExtraRefCountWasZero): Likewise. ([NSObject -retainCount]): Likewise. ([NSObject +initialize]): Allocate RETAIN_COUNTS_GATE. Tue Jun 11 14:50:20 1996 Andrew McCallum Make NSAutoreleasePool thread-safe. * src/include/NSAutoreleasePool.h (struct autorelease_thread_vars): New structure declared. (struct autorelease_cache): Structure declaration removed. (init_autorelease_thread_vars): New static inline function. * src/NSAutoreleasePool.m (ARP_THREAD_VARS): New macro for accessing NSAutoreleasePool's per-thread variables. (current_pool): Static variable removed. (total_autoreleased_objects_count): Likewise. (autorelease_pool_cache): Likewise. (autorelease_pool_size): Likewise. (autorelease_pool_count): Likewise. (push_pool_to_cache): Add (struct autorelease_thread_vars*) argument. All callers changed. (pop_pool_from_cache): Likewise. (push_pool_to_cache): Likewise. (init_pool_cache): New function. ([NSAutoreleasePool +initialize]): Don't initialize the autorelease_pool_cache here. ([NSAutoreleasePool +init]): Use per-thread variables. ([NSAutoreleasePool -autoreleaseCountForObject:]): Likewise. ([NSAutoreleasePool -currentPool:]): Likewise. ([NSAutoreleasePool +currentPool:]): Likewise. ([NSAutoreleasePool -addObject:]): Likewise. ([NSAutoreleasePool +addObject:]): Likewise. ([NSAutoreleasePool -dealloc:]): Likewise. ([NSAutoreleasePool +totalAutoreleasedObjects:]): Likewise. This return value is now only a per-thread count. ([NSAutoreleasePool +resetTotalAutoreleasedObjects:]): Likewise. * src/include/NSThread.h: Make the ivars @public, not @private, so NSAutoreleasePool can efficiently access the _autorelease_vars ivar. (_autorelease_vars): New ivar. * src/NSThread.m ([NSThread -init]): Instead of creating an NSMutableDictionary here, just set the ivar `_thread_dictionary' to nil, and create it later, only on demand. Use `init_autorelease_thread_vars()' to initialize `_autorelease_vars'. ([NSThread -threadDictionary]): If `_thread_dictionary' is nil, create it. * checks/string.m (print_string): Use -cStringNoCopy instead of -cString. (main): Test the use of the `%@' printf format directive. Implement handling of `%@' for non-GNU libc systems. * src/NSString.m: Include . (PRINTF_ATSIGN_VA_LIST): Make it an expression that depends on the libc version, not a boolean constant. ([NSString -initWithFormat:arguments:]): Implement the `%@' printf directive in the case where the available libc doesn't have `register_printf_function()'. It does not currently handle format width specifiers, etc. Mon Jun 10 23:22:58 1996 Andrew McCallum * src/gnustep/base/preface.h.in: Fix comment. Mon Jun 3 12:07:16 1996 Andrew McCallum * src/Makefile.in (gnustep/base): Remove `gnustep' and `base' before trying to recreate them. Fri May 31 10:06:05 1996 Andrew McCallum * src/Makefile.in (gnustep/base): Make a link for `Foundation' when building in a separate directory. * doc/install.texi: Mention making a link from thread.h to thr.h. * src/StdioStream.m ([StdioStream -readBytes:length:]): Don't assert that we get as many bytes as we asked for. * checks/Makefile.in (ALL_CPPFLAGS): Look in ../src/srcdir-include. * examples/Makefile.in (ALL_CPPFLAGS): Likewise. * src/NSLock.m: Include . Fix typo. * src/proplist.l (unescstr): Bug fix from Nathan Urban . This is a feeble attempt to use the correct flags for making a shared library. Other than the GNU-standard flags, so far I've just taken care of the Solaris case. * src/Makefile.in (CFLAGS_SHAREDLIB_GNU): New variable. (CFLAGS_SHAREDLIB_SOLARIS): New variable. (CFLAGS_SHAREDLIB): New variable set from configure. (lib$(LIBRARY_NAME).so.$(VERSION)): Use it. * configure.in (CFLAGS_SHAREDLIB): Figure this out, and AC_SUBST it. * src/Makefile.in (maintainer-clean): Remove *_bas and *_cbs files. (GNU_MFILES): Fix typo. * src/NSProcessInfo.m (__gnustep_base_subinit_args__): No longer declared static; (avoids warning). * src/Makefile.in: Rename all `o-*' files to `o_*', and prepend `o_' to some related files. * src/o-*, src/include/o-*: Rename to `o_'. * src/NSString.m ([NSString -initWithFormat:arguments:]): Increase bsprintf buffer size, and assert that we haven't overrun the buffer. * src/Makefile.in (GNU_OTHER_SRCFILES): Added win32-entry.c and win32-def.top. * src/NSObject.m: Don't declare `errno'. * src/NSAutoreleasePool.m: Don't include . * src/BinaryCStream.m (WRITE_SIGNED_TYPE): Avoid alignment errors by using memcpy() instead of trying to assign to (_TYPE*)(BUFFER+1). (WRITE_UNSIGNED_TYPE): Likewise. Fri May 31 08:20:09 1996 Adam Fedor * src/NSProcessInfo.m (main): Pass `env' variable to gnustep_base_user_main. Tue May 28 09:37:19 1996 Andrew McCallum * src/include/NSPathUtilities.h: New file. * src/Makefile.in (GNUSTEP_HEADERS): Added include/NSPathUtilities.h. * src/NSUser.m: New file. * src/Makefile.in (GNUSTEP_MFILES): Added NSUser.m. * src/NSPage.m: New file. * src/include/NSZone.h (NSPageSize, NSLogPageSize, NSRoundUpToMultipleOfPageSize, NSRoundDownToMultipleOfPageSize, NSRealMemoryAvailable, NSAllocateMemoryPages, NSDeallocateMemoryPages, NSCopyMemoryPages): New functions declared; they are implemented in NSPage.m. * src/Makefile.in (ALL_INCLUDE_FLAGS): Undo last change, except use name `srcdir-include' instead of `include'. This should allow building is a separate directory than the source, yet still avoid confusion between and on win32 systems. (gnustep/base:): Use `srcdir-include' instead of `include' for extra links needed when building in a separate directory than the source. * src/NSException.m (_NSAddHandler): When creating E_QUEUE, don't autorelease and then retain; instead just allocate it un-autoreleased. * checks/Makefile.in (SRCS): Added basic.m. * checks/basic.m: New file. * src/NSLock.m: Include first! Fix indentation. ([NSLock +initialize]): Method removed. ([NSLock -init]): Assert return value from objc_mutex_allocate(), don't just return nil. ([NSConditionLock -initWithCondition:]): Likewise. ([NSRecursiveLock -init]): Likewise. ([NSConditionLock +initialize]): Method removed. ([NSRecursiveLock +initialize]): Method removed. Mon May 27 09:57:34 1996 Andrew McCallum * Makefile.in (DIST_FILES): Added README.ucblib. * src/include/objc-gnu2next.h: Remove "Object (GNUExtentions)" Category. We no longer use Object; we use NSObject. Do our best to use "%@" (Objective-C String object printf-format tag) as little as possible, because, for now, it is not implemented on non-GNU-libc systems. * src/KeyedCollection.m ([ConstantKeyedCollection -description]): Instead of @%, use %s and [s cStringNoCopy]. * src/NSHashTable.m (NSStringFromHashTable): Likewise. (NSHashInsertKnownAbsent): Likewise. * src/NSMapTable.m (NSStringFromMapTable): Likewise. (NSMapInsertKnownAbsent): Likewise. * src/TextCStream.m ([TextCStream -encodeValueOfCType:at:withName:]): Likewise. ([TextCStream -encodeName:n]): Likewise. * src/o-hash.m (o_hash_description): Likewise. * src/x-bas.m.in (_o_@XX@_description): Likewise. * src/NSDictionary.m ([NSDictionary -descriptionWithIndent:]): Use -cStringNoCopy instead of -cString. * src/x-cbs.m.in: Prepend missing `o-' in #include. * src/x-bas.m.in: Likewise. Mon May 20 16:53:57 1996 Adam Fedor * src/include/NSGeometry.h: Include NSString functions only if compiling in Objective-C mode (using "#ifdef __OBJC__"). Tue May 14 20:03:55 1996 Scott Christley * INSTALL.WIN32: Correct grammatical errors. * Makefile.sed.nt: Sed script now handles install and all targets for top level Makefile. * checks/Makefile.sed.nt: Corrections to handle changes to checks/Makefile.in. * configure.bat: Corrections to handle the different directory structure for the header files. * src/BinaryCStream: Eliminate header files not needed on WIN32. * src/Makefile.in (ALL_INCLUDE_FLAGS): Eliminate -I./include flag. (FORCE): New Target. * src/Makefile.sed.nt: New file; somehow got lost. * src/RunLoop.m: Eliminate header files not needed on WIN32. * src/TcpPort.m: Likewise. * src/UdpPort.m: Likewise. * src/include/TcpPort.h: Likewise. * src/include/config-nt.h: New file, got lost during restructuring. * src/include/config-nt.sed: New file, got lost during restructuring. * src/libgnustep-base-entry.c: New file. * src/libgnustep-base.top: New file. Wed May 22 06:56:49 1996 Andrew McCallum * doc/install.texi: Say that the objc patch will be part of gcc 2.8.0. Mon May 13 09:03:55 1996 Andrew McCallum * src/Makefile.in (FILE_AUTHORS): Added "Scott Christley". * src/NSString.m ([NSString -description]): Fix warnings. * src/NSDictionary.m ([NSDictionary -description]): Fix warnings. * src/Makefile.in (GNU_OTHER_SRCFILES): Added proplist.l and proplist.y. (GNU_MFILES): Added lex.pl.m and proplist.tab.m. (YACC): New variable. (GNU_OTHER_SRCFILES): Added proplist., proplist.tab.h and proplist.y. (proplist.tab.m proplist.tab.h): New target. (lex.pl.m): New target. * proplist.y, proplist.l: New files from Nathan Urban. * src/NSData.m ([NSData -description]): Implemented by Nathan Urban. * src/NSArray.m ([NSArrayNonCore -description]): Likewise. * src/NSDictionary.m ([NSDictionary -description]): Likewise. * src/NSString.m ([NSString -description]): Likewise. ([NSString -propertyList]): Likewise. * src/NSThread.m (NSBecomingMultiThreaded, NSThreadExiting): Initialize the notification strings as static strings, not in +initialize. (thread_id_2_nsthread): Renamed from THREAD_LIST. Keep the collection of NSThread's as a maptable, not a NSArray that takes linear time to search! (thread_lock): Renamed from THREAD_LIST_LOCK. (entered_multi_threaded_state): Renamed from ENTERED_MULTI-THREADED_STATE. ([NSThread +initialize]): Don't initialize notification strings here. Don't autorelease the lock! ([NSThread -init]): Initialize _thread_autorelease_pool. Set our thread data to self, for easy, efficient access to this NSThread object later. Put ourselves in the thread collection here, not in +detach... ([NSThread +currentThread]): This will be called often and needs to be fast. Reimplemented so we don't have to acquire a lock and step through an NSArray of threads; instead, just look ourselves up with the objc_thread_get_data(), and furthermore, no lock required. ([NSThread +detachNewThreadSelector:toTarget:withObject:]): Avoid race condition, don't create new NSThread object here. ([NSThread +sleepUntilDate:]): Call -notImplemented:. ([NSThread +exit]): Properly post NSThreadExiting notification, making sure not to hold the lock while we do so. Get the NSThread object efficiently. ([NSThread -threadId]): Removed unnecessary private method. ([NSThread -setThreadId]): Likewise. * src/include/NSLock.h: Include renamed , not . * src/include/NSThread.h: Include renamed , not . Prepend ivars with underscore. Formatting cleanups. * src/Makefile.in (gnustep/base): Use -r test for file existance, not -e. (Reported by Adam Fedor .) * src/BinaryCStream.m: Include for byte-conversion; needed on Solaris. (Reported by Adam Fedor .) * src/Makefile.in (AUTHORS): Also search for "Rewritten by" string. Sun May 12 19:57:53 1996 Andrew McCallum * src/Coder.m ([Coder -encodeConditionalObject:]): Comment additions. ([Coder -decodeObject]): Likewise. * src/Coder.m: Remove many methods from (Coder NSCoderCompatibility), they are now included by adding the behavior from NSCoderNonCore. ([Coder +initialize]): Add behavior from NSCoderNonCore. ([Coder -encodeArrayOfObjCType:count:at:]): Method removed. ([Coder -decodeArrayOfObjCType:count:at:]): Method removed. ([Coder -encodeProperyList:]): Method removed. ([Coder -decodeProperyList:]): Method removed. ([Coder -encodePoint:]): Method removed. ([Coder -decodePoint:]): Method removed. ([Coder -encodeSize:]): Method removed. ([Coder -decodeSize:]): Method removed. ([Coder -encodeRect:]): Method removed. ([Coder -decodeRect:]): Method removed. ([Coder -encodeValuesOfObjCTypes:]): Method removed. ([Coder -decodeValuesOfObjCTypes:]): Method removed. Sat May 11 20:38:10 1996 Andrew McCallum * After consulting other developers, change "Gnustep" to "GNUstep" everywhere. * src/include/NSAutoreleasePool.h (struct autorelease_cache): New data type. * src/include/NSThread.h (NSThread _thread_autorelease_pool): New ivar. * src/NSThread.m: Preparation for thread-safety. ([NSThread -init]): Initialize new ivar. * src/NSAutoreleasePool.m: Comment changes, and preparation for thread-safety. Fri May 10 09:55:40 1996 Andrew McCallum * src/BinaryCStream.m: #include to get BITSPERBYTE on Solaris. (Reported by M. Decugis .) Wed May 8 10:53:07 1996 Andrew McCallum * src/objc-load.c (objc_load_module): Uncomment local vars when needed. (Provided by Bill Bumgarner .) * src/BinaryCStream.m (BITSPERBYTE): Define if not defined and on NeXT. (Provided by Bill Bumgarner .) Tue May 7 10:55:11 1996 Andrew McCallum * src/include/o-map.h: Prepend `o-' in #include. * src/include/o-list.h: Likewise. * src/include/o-hash.h: Likewise. * src/include/o-array.h: Likewise. * src/include/x-cbs.h.in: Likewise. * src/NSCoder.m: Separate implemented, non-core methods into separate class, in preparation for avoiding the duplication of these methods in Coder.m. ([NSCoder +initialize]): New method. (NSCoderNonCore): New class. * src/include/NSCoder.h: Declare new NSCoderNonCore class. * Makefile.in (snapshot-rtag): New target. (dist-rtag): New target. (rdiff): New target. Mon May 6 14:59:03 1996 Andrew McCallum * src/NSGArchiver.m ([NSGArchiver -encodeObjectReference:]): New method. * src/Decoder.m ([Decoder -decodeObjectAt:anObjPtr:name]): Move CREATE_REF_BEFORE_INIT assertion to inside conditional for FREF being true. * src/NSString.m (PRINTF_ATSIGN_VA_LIST): New macro, when 1, undoes previous changes. Previous changes cause crashes with my libc. * configure.in (shared): Prepend missing `lib'. (Reported by Randy Chapman .) * src/Makefile.in: It should now work again to build in a separate directory. Use ${OEXT}, not $(OEXT). (ALL_INCLUDE_FLAGS): Look in ./include, not $(srcdir). (GNU_HEADERS): Remove duplicate NS*.h files. (gnustep/base): Make soft links to the $(srcdir) include files inside ./include. (include/preface.h): Get preface.h.in from the $(srcdir)! * examples/Makefile.in (ALL_CPPFLAGS): Look for source include files in new place. * checks/Makefile.in (ALL_CPPFLAGS): Look for source include files in new place. * src/include/NSZone.h: use #include instead of #import. * doc/gnustep-faq.texi: Added "On what platforms will it run?" * src/NSArray.m ([NSMutableArray +initialize]): Add the NSArrayNonCore methods also. (Reported by Scott Christley.) * src/Makefile.in: Add `o-' prefix to object collection function files. * src/o-array.m, src/o-list.m, src/o-hash.m, src/o-map.m: Renamed from versions without `o-' prefix. This prevents aliasing with Array.m, etc, on systems without case-sensitive filenames. * src/include/o-array.h, src/include/o-hash.h, src/include/o-list.h, src/include/o-map.h: Likewise. * src/NSString.m: All uses of @"" were crashing in Linux libc-5.3.9. (arginfo_func): New function. (handle_printf_atsign): Get the string object without va_arg(). ([NSString +initialize]): Use new function. (Reported and fixed by Kai-Uwe Sattler .) Tue Apr 30 10:19:40 1996 Andrew McCallum * src/NSArray.m ([NSMutableArrayNonCore -removeObject:]): Replace with version that removes all objects equal to argument. ([NSMutableArrayNonCore -removeObjectIdenticalTo:]): Likewise. * checks/nsarray.m (main): Patched from Scott Christley. Fri Apr 19 18:11:30 1996 Andrew McCallum Make NSArchiver do object forward references the same way OpenStep does, so that -encodeConditionalObject: and -decodeObject will work as users expect. The OpenStep-style of forward referencing is actually broken in that it cannot handle cases in which -initWithCoder: deallocates self and substitutes another object for self---this is supposed to be allowed. The GNU-style of forward references robustly handles this case, as well as all the cases that OpenStep handles; the GNU code works through alternate methods: -encodeObjectReference: and -decodeObjectAt:withName:. It is recommended that programmers use the GNU archiving methods. Before these changes, the gnustep-base code that tried to handle the OpenStep-style `-encodeConditionalObject:' and `-decodeObject' did not have the same behavior as NeXT's implementation---in fact it did not do forward references at all. Users' OpenStep code that used the OpenStep methods would have failed badly. These changes implement the OpenStep-style forward references. Now NSArchiver implements OpenStep-style forward references, and Archiver implements GNU-style forward references. Be warned: by necessity, because of limitations of the OpenStep method interface, NSArchiver has the same bug as NeXT's NSArchiver. * src/NSGArchiver.m (USE_OPENSTEP_STYLE_FORWARD_REFERENCES): New macro. (NSGArchiverNullCStream): New class, interface and implementation. ([NSGArchiverNullCStream -encodeValueOfCType:at:withName:]): New method. ([NSGArchiverNullCStream -decodeValueOfCType:at:withName:]): New method. ([NSGArchiver -encodeRootObject:withName:]): New method. ([NSGArchiver -encodeConditionalObject:]): New method. ([NSGArchiver -_coderCreateReferenceForObject:]): New method. ([NSGArchiver -_coderCreateForwardReferenceForObject:]): New method. ([NSGArchiver -_coderForwardReferenceForObject:]): New method. ([NSGArchiver -_objectWillBeInProgress:]): New method. ([NSGArchiver -_objectNoLongerInProgress:]): New method. ([NSGArchiver -defaultDecoderClassname]): New method. ([NSGUnarchiver -_createReferenceBeforeInit]): New method. * src/NSArchiver.m ([NSUnarchiver +initialize]): Test self against NSUnarchiver class. * src/Encoder.m (debug_coder): Make it a static var instead of a #define. ([Encoder -_objectWillBeInProgress:]): New method. ([Encoder -_objectNoLongerInProgress:]): New method. Depending on whether we are doing GNU or OpenStep style forward references one of these two methods will create a backward reference to the object by calling -_coderInternalCreateReferenceForObject:. This will effect whether encoding make forward or backward references to objects in progress. GNU uses forward references, which is robust even when the object's -initWithCoder substitutes another object for self. ([Encoder -_encodeObject:withName:isBycopy:isForwardReference:]): Use new methods. Don't call -_coderInternalCreateReferenceForObject here, let one of the ...InProgress methods do it. * src/Decoder.m (debug_coder): Make it a static var instead of a #define. ([Decoder -_coderCreateReferenceForObject:]): Add a debugging message. ([Decoder -_coderCreateReferenceForInterconnectedObject:]): Autorelease the placeholder object. ([Decoder -_createReferenceBeforeInit]): New method. By default return NO, for the GNU-style forward references. ([Decoder -decodeObjectAt:anObjPtr:name]): [CODER_OBJECT]: Use new method; if it returns true, then we are using non-GNU, OpenStep-style forward references. In this case: (1) don't try to decode the object by sending +newWithCoder:, in fact, raise an error if the object wanted to be decoded that way; (2) call _coderInternalCreateReferenceForObject before sending -initWithCoder, not after; unfortunately this means that -initWithCoder methods cannot substitute another object for self. If it returns false, use the more robust GNU style forward references. The NSGUnarchiver overrides this method to use the OpenStep style. * src/include/Coder.h (Coder): Make ivars public, so NSGArchiver can get at them. (Encoder): Likewise. * src/TextCStream.m ([TextCStream -encodeValueOfCType:at:withName:]): If name is nil or zero-length, make it "Anonymous". (DECODE_ERROR): Add next stream contents to error message. * src/Coder.m: Include gnustep/base/Archiver.h. ([Coder +archivedDataWithRootObject:]): Use Archiver class, not NSArchiver, it matters because now the two classes handle forward references differently. * src/include/NSGArchiver.h: NSGUnarchiver inherits from NSUnarchiver, not NSArchiver! * checks/fref.m: Use Archiver, not NSArchiver, if GNU_ARCHIVING is true. (SELF_REF_DECODE_SUBSTITUTES): New macro. Thu Apr 18 08:31:53 1996 Andrew McCallum * checks/fref.m: Updated to work on NS3.3. * src/Makefile.in (Foundation): Fix dependancy to force proper handling after a cvs checkout. Wed Apr 17 08:56:09 1996 Andrew McCallum Major renaming! "GNU Objective C Class Library" -> "Gnustep Base Library" libobjects.a -> libgnustep-base.a libobjects.tar.gz -> gstep-base.tar.gz -> OBJECTS_* -> GNUSTEP_BASE_* objects_*() -> o_*() R. Andrew McCallum -> Andrew Kachites McCallum (my pre-marriage name) (my post-marriage name) ...and more... * examples/Makefile.in (EXEEXT): New variable. (OEXT): New variable. (LIBEXT): New variable. (SRCS): Remove port-{server,client}.m. * examples/dictionary.m: Warn user that the file hasn't been converted to new collection scheme, and comment out old code. * examples/second-server.m ([SecondServer -addRemoteObject:]): Don't free the string returned; mframe already does it! * examples/stdio-stream.m: Include Foundation/NSString.h. * Makefile.in: Include Makeconf. * checks/server.m: Include TcpPort.h, not SocketPort.h. * checks/client.m: Likewise. * checks/Makefile.in (../src/lib$(LIBRARY_NAME)$(LIBEXT)): New target. * doc/Makefile.in (TEXI_FILES): Rename libobjects.texi to gnustep-base.texi. Add base-desc.texi. * doc/base-desc.texi: New file. * src/include/*.h: Rename all #ifndef macro names to ...GNUSTEP_BASE_INCLUDE. * Rename all `objects_' to `o_'. This mostly affects Albin Jones' map tables, hash table, etc. * src/NSGSet.m ([NSGSet -isEqual:]): Call isEqualToSet: (in superclass). * checks/pipes.m: Include * src/objc/HashTable.h: Use preface.h instead of stdobjects.h. * src/CStream.m ([CStream -writeSignature]): Use new version macro names. * src/include/fake-main.h (main): Define as gnustep_base_user_main, not LibobjectsMain. * src/NSProcessInfo.m (__gnustep_base_subinit_args__): Renamed from libobjects... (main): Use gnustep_base_user_main, not LibobjectsMain. * checks/fref.m (test_fref): Make ARRAY a NSMutableArray, not a NSArray. ([SubFoo -encodeWithCoder:]): Add printf. ([Foo -encodeWithCoder:]): Likewise. * src/o_vscanf.c: Include objc-malloc.h from gnustep/base. * src/Makefile.in (Foundation): Add step to get rid of old Foundation directory that would come from a CVS checkout. * src/include/String.h: Don't include . Don't have String protocol inherit NSString protocol. We were having trouble with circular dependancies. * src/include/Streaming.h: Include String.h, not NSString.h. * src/include/preface.h.in: Use __preface_h_... instead of __stdobjects_h... for wrapper. Include files from gnustep/base. Include fake-main.h, instead of LibobjectsMain.h. * src/Makefile.in (include/preface.h): Make substitutions for macro name, as well as value. * Makeconf (LIBRARY_VAR): New variable. * src/Makefile.in (all): Add dependancy on `Foundation'. (Foundation): New target. * Change all #include to #include . * src/include/preface.h.in: All Makefile-maintained #defines, now have the macro name inserted by Makefile, not just the value. Comment out objects_version global variable and friends. (LAMBDA): Macro removed. (LAMBDA_VOID_PERFORM): Macro removed. (LAMBDA_ID_PERFORM): Macro removed. (LAMBDA_BOOL_PERFORM): Macro removed. * src/preface.m: Update names of global const char's. * Makefile.in: Remove/rename all mention of `objects'. * configure.in: Likewise. * examples/Makefile.in: Likewise. * checks/Makefile.in: Likewise. * Makeconf (LIBRARY_NAME): Remove `lib' prefix. * src/Makefile.in: Don't assume the `lib' prefix is included in $(LIBRARY_NAME). * Makeconf (PACKAGE_NAME): New variable. (LIBRARY_NAME): New variable. (rcs-list-locked): Target removed. * Version: Removed `OBJECTS_' prefix. * src/Makefile.in: Rename all occurrences of `objects/' to `include/'. Rename all occurrences of `Foundation/' to `include/'. Rename all occurrences of `libobjects' to `$(LIBRARY_NAME)'. Rename all occurrences of `OBJECTS_*VERSION' to `*VERSION'. (GNU_NEXT_INCLUDES): Renamed from OBJECTS_NEXT_INCLUDES. (gnustep/base): New target; make symbolic link to `include'. (all): Added dependancy on gnustep/base. (install): Put the include files in gnustep/base. Make a link from $(includedir)/Foundation to $(includedir)/gnustep/base. (installdirs): Make $(includedir)/gnustep/base, not objects and Foundation include directories. (GNU_MFILES): stdobjects.m renamed to preface.m. (GNU_HEADERS): LibobjectsMain.h renamed to fake-main.h. objects.h renamed to all.h. (HEADERS_INSTALL): stdobjects.h renamed to preface.h. (maintainer-clean): Likewise. (DIST_FILES): stdobjects.h.in renamed to preface.h.in. (RCS_FILES): Likewise. (include/preface.h): Target renamed from stdobjects.h. (preface$(OEXT)): Likewise. * src/preface.m: File renamed from stdobjects.m. * src/include/preface.h: File renamed from stdobjects.h. * src/include/fake-main.h: File renamed from LibobjectsMain.h. * src/include/all.h: File renamed from objects.h. * configure.in (AC_OUTPUT): do src/include/config.h, not src/objects/config.h. * src/objects/*, src/Foundation/*: Files moved to src/include. * src/Foundation/NSString.h: Insert contents of * src/Foundation/NSSet.h: Insert contents of * src/Foundation/NSDictionary.h: Insert contents of * src/Foundation/NSCoder.h: Insert contents of * src/Foundation/NSArray.h: Insert contents of Fix error in Decoder, that only affected TextCStream. * src/Decoder.m ([Decoder -decodeObjectAt:anObjPtr:name]): Decode the Unindent *before* decoding the fref; as does Encoder! Tue Apr 16 17:29:02 1996 Andrew McCallum * Version (OBJECTS_SUBMINOR_VERSION): Version 0.2.1. Last version before renaming from libobjects to gnustep-base. * checks/Makefile.in (CFLAGS): Add -Wno-format. (SRCS): Use new, more descriptive file names. * checks/prepend.m: Include NSValue.h * src/NotificationDispatcher.m ([NotificationDispatcher -_addObserver:notificationRequest:name:object:]): Don't release NR here. ([NotificationDispatcher -addInvocation:name:object:]): Release it here. ([NotificationDispatcher -addObserver:selector:name:object:]): Likewise. * src/TcpPort.m (debug_tcpport): Changed from 1 to 0; don't print debugging messages. * src/Proxy.m (debug_proxy): Likewise. * src/Connection.m (debug_connection): Likewise. * src/NSArray.m ([NSArrayNonCore -arrayByAddingObject:]): Autorelease the returned array. ([NSArrayNonCore -arrayByAddingObjectsFromArray:]): Likewise. ([NSArrayNonCore -subarrayWithRange:]): Likewise. * checks/nsarray.m (main): Removed several -autorelease calls that are repetative, now that NSArray autoreleases properly. The test still does not complete successfully. It tries to send -cString to an NSMutableArray. * src/objects/objc-malloc.h: Only declare "id MemoryExchaustedException" #ifdef __OBJC__. This allows to be included in non-ObjC files, i.e. C files. * src/NSZone.m: Include first. * checks/*.m: Many test??.m files renamed with descriptive names. * checks/nsarchiver.m (main): Add extra parens around assignment in while(). * checks/string.m (main): Comment out use of obsolete -withElementsCall:. * checks/nsbundle.m (main): Use object_get_class_name(), not -name. * src/Makefile.in (GNU_MFILES): Re-added Time.m. (o_vscanf$(OEXT), o_vscanf_pic$(OEXT)): New rules that turn off warnings for o_vscanf.c; it generates a bunch of unimportant ones. * src/Time.m ([Time +initialize]): Comment out day/month name handling that depends on old Collection heirarchy. ([Time +indexOfDayName:]): un-implemented. ([Time +nameOfDayIndex:]): Likewise. ([Time +indexOfMonthName:]): Likewise. ([Time +nameOfMonthIndex:]): Likewise. * checks/prepend.m: New file from test13.m. * checks/nxst.m: New file from test11.m. * checks/heap.m: New file from test04.m. * src/Heap.m ([Heap -heapifyFromIndex:]): Swap -compare: receiver and argument, so firstObject is minimum instead of maximum object. ([Heap -addObject:]): Likewise. Mon Apr 15 21:41:17 1996 Andrew McCallum * src/NSGDictionary.m ([NSGDictionaryObjectEnumerator -nextObject]): Return the key, not the object. ([NSGDictionary -objectForKey:]): Method moved from NSGMutableDictionary. ([NSGMutableDictionary +initialize]): Don't use static variable in test. * src/KeyedCollection.m ([KeyEnumerator -initWithCollection:]): New method. ([KeyEnumerator -nextObject]): New method. ([KeyEnumerator -dealloc]): New method. * doc/install.texi: Mention possible need for GNU make. Sun Apr 14 11:58:04 1996 Andrew McCallum Old archiving scheme didn't properly deal with the LinkedListNode's _linked_list ivar. * src/LinkedList.m ([LinkedList -encodeWithCoder:]): New method. ([LinkedList -initWithCoder:]): New method. ([LinkedList -_initCollectionWithCoder:]): Method removed. ([LinkedList -_encodeContentsWithCoder:]): Method removed. ([LinkedList -_decodeContentsWithCoder:]): Method removed. * src/Coder.m ([Coder -encodeConditionalObject:]): Don't use old, removed method name to see if object has already been encoded. Sat Apr 13 13:49:23 1996 Andrew McCallum * src/BinaryCStream.m (debug_binary_coder): Explicitly set to zero. * src/objects/CoderPrivate.h ([Coder (Private) -_coderReferenceForObject:): Renamed from old-xref-scheme "_coderHasObjectReference:. * checks/Makefile.in (SRCS): Added fref.m. Fix a bug with encoding an object whose encoding generates forward references to the object itself. * src/Encoder.m ([Encoder -_encodeObject:withName:isBycopy:isForwardReference:]): See if the object satisfies a forward reference *after* encoding it, not before. This is necessary because the encoding of subobjects may generate forward references to the object. (In a sense, this undoes the last change to this method, but it is significantly different in that we test whether the object is in the object_2_fref table *after* encoding the object; earlier we looked in the table before encoding the object.) As a consequence, the CODER_OBJECT_FORWARD_SATISFIER tag is no longer necessary; this was used to tag an object before it was encoded, but now we understand that we cannot know whether this object satisfies a forward reference until after it has been encoded. Thus, for all objects we encode an unsigned int after encoding the object itself. This unsigned int is either the forward reference number of zero, depending on whether this object satisfies any forward references. * src/Decoder.m ([Decoder -decodeObjectAt:withName:]): Allow for the case in which ANOBJPTR is NULL, and deal with it using a DUMMY_OBJECT local variable. Remove CODER_OBJECT_FORWARD_SATISFIER case. In the CODER_OBJECT case, decode the forward reference number, and deal with it appropriately. See the ChangeLog comments for the Encoder changes. * src/objects/CoderPrivate.h (CODER_OBJECT_FORWARD_SATISFIER): Enum constant removed; it is no longer needed. Note: decoders built after this change will not be able to read data files encoded before this change. * src/Encoder.m ([Encode -_encodeObject:withName:isBycopy:isForwardReference:]): If this object satisfies a forward reference, remove it from the object_2_fref table before encoding the object, since, in the process of encoding the object, we may generate more references to this object, and we don't want to interpret this as another forward reference satisfier; previously an object could get encoded as a forward reference satisfier more than once. Plug a memory leak in decoding. * src/Collection.m ([ConstantCollection -_decodeContentsWithCoder:]): Use alloca(), not objc_malloc(), plugging memory leak. Fri Apr 12 17:08:08 1996 Andrew McCallum * src/objects/Coder.h (Encoder fref_counter): New ivar for guaranteeing that forward references have unique names. Previous use of the MapTable count for this purpose didn't work because we occasionally removed elements from the table, and thus had aliased forward reference numbers. * src/Encoder.m ([Encoder -initForWritingToStream:withFormatVersion:cStreamClass :cStreamFormatVersion:]): Initialize new ivar. ([Encoder -_coderCreateForwardReferenceForObject:]): Use new ivar to `gensym' a new forward reference. * src/Decoder.m ([Decoder -_coderSatisfyForwardReference:withObject:]): Create fref_2_object with NSNonOwnedPointerMapValueCallBacks, not NSObjectMapValueCallBacks. * src/StdioStream.m ([StdioStream -writeBytes:length:]): Check for error condition, and report. Reporting scheme needs fixing. ([StdioStream -readBytes:length:]): Likewise. * src/LinkedList.m ([LinkedList -_decodeContentsWithCoder:]): Step through the new list, and send -setLinkedList:, otherwise the links don't properly know about their parent LinkedList. Wed Apr 10 12:37:35 1996 Andrew McCallum * src/Encoder.m ([Encoder -_coderCreateForwardReferenceForObject:]): Initialize the OBJECT_2_FREF ivar, if it hasn't been already. * configure.in: Init some emacs variables. * src/objc-malloc.m: New file, changed from objc-malloc.c. Raise a MemoryExhaustedException with NSException instead of calling objc_fatal. * src/Makefile.in (GNU_CFILES): Removed objc-malloc.c. (GNU_MFILES): Added objc-malloc.m. * src/objects/objc-malloc.h (MemoryExhaustedException): Declare this global variable; note that now objc-malloc.h cannot be included in .c files, only .m files. * src/NSRunLoop.m: New file. * src/Foundation/NSRunLoop.h: Declare classes NSDate and NSTimer. * src/Makefile.in (GNUSTEP_MFILES): Added NSRunLoop.m. (GNUSTEP_HEADERS): Added Foundation/NSRunLoop.h. * src/NSAutoreleasePool.m ([NSAutoreleasePool -dealloc]): When unintalling ourselves at the current pool, and setting our parent to be the current pool, be sure to set our parent's _CHILD ivar to nil. * src/mframe.m (mframe_do_call): Use sel_get_type() instead of class_get_instance_method() to get the selector type. For some reason the old scheme wasn't getting class methods properly; I should look at this again, though. Tue Apr 9 19:55:44 1996 Andrew McCallum * src/mframe.m (mframe_do_call): When getting the instance method, just use object->class_pointer, not object_get_class(),... because object_get_class() of a class will return the argument, not the metaclass---we want the metaclass. Mon Apr 8 13:19:17 1996 Andrew McCallum * src/TcpPort.m ([TcpInPort +newForReceivingFromPortNumber:]): Bind the socket with INADDR_ANY, (not the host's address), so that others can connect using any of the host's interfaces, including localhost. Add the host's address to _LISTENING_ADDRESS after the bind(). * src/NSDictionary.m ([NSDictionary -allKeysForObject:]): Ask SELF for objectForKey:, not K. (Reported by Robert Quillen ). Sun Mar 31 16:43:42 1996 Andrew McCallum Several small bug fixes. * src/Foundation/NSArray.h: Declare @class NSMutableArrayNonCore, not NSMutableArray. * checks/test02.m (main): Updated for new collection scheme. * src/MappedCollector.m ([MappedCollector -newEnumState]): New method. ([MappedCollector -freeEnumState:]): New method. * src/Random.m (ABS): Remove macro; now defined in objects/stdobjects.h. Separate the core and non-core methods of NSArray implementations to take advantage of the new behavior mechanisms, and to better make use of the non-core methods in the concrete implementation. * src/NSGArray.m ([NSGArray +initialize]): Add the NSArrayNonCore behavior, so we can, once and for all, avoid the need for those odd [super ...] calls, and can remove many methods. ([NSGArray -initWithObjects:count:]): Method removed. ([NSGArray -indexOfObject:]): Method removed. ([NSGArray -objectAtIndex:]): Method removed. ([NSGMutableArray +initialize]): Add the NSMutableArrayNonCore behavior, as above. ([NSGMutableArray -replaceObjectAtIndex:withObject:]): Method removed. * src/Foundation/NSGArray.h (NSGArray, NSGMutableArray): Add placeholder ivars so our instance size matches that of the behavior class that will be added. * src/NSArray.m: Divide methods between NSArray and NSArrayNonCore classes. Add NSArrayNonCore behavior to NSArray. Divide methods between NSMutableArray and NSMutableArrayNonCore classes. Add NSArrayNonCore behavior to NSArray. * src/Foundation/NSArray.h: Separate core and non-core methods. Declare with @class the new classes NSArrayNonCore and NSMutableArrayNonCore. Use the new behavior mechanisms to make it safe to subclass NSNotification. * src/Foundation/NSNotification.h: Include (NSNotification): Add placeholder ivars so our instance size matches that of the behavior class that will be added. * src/objects/Notification.h: Add #ifndef/#endif wrapper around header file. New behavior mechanisms for safe subclassing. * src/behavior.m (behavior_class_add_class): Function renamed from class_add_behavior. Add more explanation to NSCAssert(). (class_add_behavior): New function, calling above function. (behavior_class_add_category): New function. (behavior_class_add_methods): Function renamed from class_add_methods_if_not_there. * src/objects/behavior.h: Declare new function names. * src/behavior.m: Include . (class_add_behavior): Use NSCAssert() to make sure that we don't try to increase the instance size of a class that has been subclassed; (hopeless ivar layout confusion would result). * behavior.m: File renamed from behavior.c. * src/Makefile.in (GNU_CFILES): Removed behavior.c. (GNU_MFILES): Added behavior.m. Sat Mar 30 10:05:17 1996 Andrew McCallum * checks/nsdictionary.m (main): Use renamed method behavior_set_debug. * checks/nsarray.m (main): Use renamed method behavior_set_debug. * src/NSArray.m ([NSArray -lastObject]): Don't assert count; just return nil if it's empty. ([NSMutableArray -removeLastObject]): Don't assert count; raise NSRangeError if it's empty. Make NSAutoreleasePools co-exist with exceptions, safely and without leaks. (Also improve efficiency by using a linked list of arrays instead of realloc when more space is needed, and by using a cache of pools that helps avoid the allocation/deallocation of pools.) * src/NSAutoreleasePool.m: (push_pool_to_cache): New function. (pop_pool_from_cache): New function. ([NSAutoreleasePool +initialize]): New method. ([NSAutoreleasePool +allocWithZone:]): New method. ([NSAutoreleasePool -init]): Method overhauled to initialize new ivar for handling exceptions, _child; also use pool cache. (total_autoreleased_objects_count): New static variable. (BEGINNING_POOL_SIZE): Macro renamed from DEFAULT_SIZE. (autorelease_pool_cache, autorelease_pool_cache_size, autorelease_pool_cache_count): New static variables. ([NSAutoreleasePool -_setChildPool:]): New method, handling stack and dealing with exceptions. ([NSAutoreleasePool -addObject:]): Deal with linked list of arrays. ([NSAutoreleasePool -dealloc]): Deal with exceptions by releasing child pools. Place self into the pool cache instead of deallocating. ([NSAutoreleasePool +resetTotalAutoreleasedObjects]): New method. ([NSAutoreleasePool +totalAutoreleasedObjects]): New method. * src/Foundation/NSAutoreleasePool.h: Declare new ivars and methods. * src/NSArray.m ([NSArray -isEqualToArray:]): Fix typo; reverse test for returning NO. ([NSArray -arrayByAddingObject:]): New function, from Scott Christley. ([NSArray -arrayByAddingObjectsFromArray:]): Likewise. ([NSArray -subarrayWithRange:]): Implemented by Scott Christely. ([NSMutableArray -removeObjectIdenticalTo:]): Don't fail if the object is not present. Initial implementation by Scott Christley overhauled by McCallum. ([NSMutableArray -removeObject:]): Likewise. ([NSMutableArray -removeAllObjects]): Implemented by Scott Christley. ([NSMutableArray -setArray:]): New function, from Scott Christley. * src/Foundation/NSArray.h: Declare new methods. * src/objects/ArrayPrivate.h: Add new semantic to ivar _grow_factor: if it is less than 0, the array capacity grows by -_grow_factor, but never shrinks. (incrementCount): Use the ABS() of _grow_factor. (decrementCount): Only shrink the array capacity if _grow_factor is greater than 0. * src/objects/Array.h (Array _grow_factor): Change type of ivar from unsigned to int. * src/Array.m ([Array +defaultGrowFactor]): Return type changed to int. ([Array -growFactor]): Likewise. * src/objects/stdobjects.h.in (ABS): New macro, defined if not already defined. * src/objects/Array.h: Change return types of "grow factor" methods from unsigned to int. * src/IndexedCollection.m ([IndexedCollection -removeObject:]): Now removes *all* instances of ANOBJECT, not just one. ([IndexedCollection -replaceObject:withObject:]): Now replaces *all* instances of OLDOBJECT, not just one. * src/objects/IndexedCollecting.h (NO_INDEX): Change from UINT_MAX to NSNotFound, so that Array and NSArray can coexist. * checks/test01.m ([ConstantCollection -printCount]): Use object_get_class_name() instead of sending -name. Fri Mar 29 09:47:39 1996 Andrew McCallum Overhaul mframe functions. * src/mframe.m: Overhauled for memory management changes to fix leaks, various other fixes. (MFRAME_STRUCTURES_PASSED_BY_REFERENCE): Renamed from CONNECTION_STRUCTURES_PASSED_BY_REFERENCE. (mframe_dissect_call): Function renamed from dissect_method_call. Remove some redundant if()-else clauses. Clarify case in which OUT_PARAMETERS is true. Use switch statement instead of if-else's. (mframe_do_call): Function renamed from make_method_call. Get the local selector type from the target's Method, not from the selector type; this will more reliably give the correct type string. Don't bother to set OBJECT twice. Remove some redundant if()-else clauses. Use NSParameterAssert, not assert, so we can catch problems, (and not crash the D.O. server). Change the way memory management for decoded arguments is handled to remove memory leaks; use new scheme for DECODER functions that are responsonsible for making sure allocated memory is eventually freed. Use alloca() to allocate space for _C_PTR values, struct's and arrays. Overhaul the way floats and doubles are extracted from the RETFRAME; use functions with __builtin_return, instead of fishing around the RETFRAME. Use switch statement intead of if-else's. Separate cases for char's and short's. Change some local variable names for clarity. (mframe_build_return): Function renamed from dissect_method_return. Remove some redundant if()-else clauses. Use NSParameterAssert, not assert. Change the way memory management for decoded arguments is handled to remove memory leaks; use new scheme for DECODER functions that are responsonsible for making sure allocated memory is eventually freed. Use alloca() to allocate space for _C_PTR values, struct's and arrays. * src/objects/mframe.h: Declare new method names, and comment. * src/Connection.m ([Connection -forwardForProxy:selector:argFrame:]): Use new mframe interface. In the nested function DECODER, autorelease any char*'s that we decode, as required by the new memory reference scheme. ([Connection -_service_forwardForProxy:]): Likewise, for both. * src/Collection.m ([ConstantCollection -_collectionReleaseContents]): Use alloca() instead of malloc() and free(). Fixes to checks for testing new coding of float and double. * checks/server.m ([Server -returnFloat]): Append float const with `f'. Include for -connectionForProxy. * checks/client.m (main): Print the float and double before sending it. * checks/cstream.m (main): Decode the float and double. * src/BinaryCStream.m ([BinaryCStream -encodeValueOfCType:at:withName:]): Encode the exponent as a short, not an int. ([BinaryCStream -decodeValueOfCType:at:withName:]): Likewise, decoding. * src/BinaryCStream.m ([BinaryCStream -encodeValueOfCType:at:withName:]): [_C_CHARPTR]: Don't autorelease the malloc'ed pointer here; thus the behavior is analogous to decoding an object: it gives you a reference, it is the callers responsibility to free it. ([BinaryCStream -decodeValueOfCType:at:withName:]): [_C_DBL]: Fix typo. Use mantissa1, not mantissa2 twice. Fix the scheme for encoding and decoding floats and doubles. The old scheme sometimes lost precision, and it was also very inefficient. * src/BinaryCStream.m: Include (FLOAT_FACTOR): New macro. (WRITE_SIGNED_TYPE): Take new first argument, the pointer for the data. (READ_SIGNED_TYPE): Likewise. (WRITE_UNSIGNED_TYPE): Likewise. (READ_UNSIGNED_TYPE): Likewise. ([BinaryCStream -encodeValueOfCType:at:withName:]): [_C_FLT]: Use new scheme, based on frexp() to turn a float into a series of ints. [_C_DBL]: Likewise. ([BinaryCStream -decodeValueOfCType:at:withName:]): [_C_FLT]: Likewise to match. [_C_DBL]: Likewise. * src/RunLoop.m (debug_run_loop): Changed from 1 to 0; turn off debugging messages. Thu Mar 28 22:59:35 1996 Andrew McCallum * src/MallocAddress.m ([MallocAddress +autoreleaseMallocAddress:]): Fix typo in method name. * src/objects/MallocAddress.h: Fix typo. Tue Mar 26 14:23:13 1996 Andrew McCallum * src/MallocAddress.m ([MallocAddress +initialize]): Use NSNonRetainedObjectMapValueCallBacks, not NSObjectMapValueCallBacks, because otherwise the object will never get dealloc'ed. Send exceptions in the D.O. server back to the client. This is not finished. We still need to address some potential memory leaks. * examples/second-client.m (main): Add a call that causes an exception in the server, and catch the returned exception. * src/Connection.m: In all methods, use NSParameterAssert() instead of assert(), so that it raises an NSException, and doesn't abort(). ([Connection -forwardForProxy:selector:argFrame:]): Decode the flag that indicates whether the return packet hold an exception or the return values. If it holds an exception, decode it and raise it. ([Connection -_service_forwardForProxy:]): Surround the processing of the method request packet with NS_DURING...NS_ENDHANDLER. If an exception is raised, catch it, encode in in a specially flagged packet, and send the packet back to the client. * src/BinaryCStream.m ([BinaryCStream -decodeValueOfCType:at:withName:]): [_C_CHARPTR]: Autorelease the malloc'ed char pointer. Before memory was leaking. * src/Connection.m: Use NSException instead of sending -error: in all methods. * src/Proxy.m: Likewise. * src/NSString.m: Likewise. * src/NSObject.m: Likewise. * src/NSAutoreleasePool.m: Likewise. * src/Encoder.m: Likewise. * src/Decoder.m: Likewise. * src/BinaryCStream.m: Likewise. * src/OrderedCollection.m ([OrderedCollection -putObject:atIndex:]): Return type changed from id to void. Use NSException, not error:. Mon Mar 25 19:27:06 1996 Andrew McCallum Fixing miscellaneous bugs that showed up with -Wall. * src/NXStringTable_scan.l (string_buf_ptr): Init local variable. * src/NSBundle.m ([NSBundle +setSystemLanguages:]): Comment out unused variables. * src/NSData.m ([NSMutableData -resetBytesInRange:]): Cast to avoid warning. ([NSMutableData -initWithLength:]): Likewise. * src/NSValue.m ([NSValueDecoder -initValue:withObjCType:]): Return self. * src/objc-load.c (objc_load_module): Comment out unused variables. * src/UdpPort.m: Include for MAXHOSTNAMELEN. ([UdpInPort -newPacketReceivedBeforeDate:]): Return nil. Sun Mar 24 17:04:24 1996 Andrew McCallum Just a little futzing. * src/UdpPort.m (name_2_port_number): Function renamed from name_to_port_number, and changed to better use IPPORT_USERRESERVED. ([UdpInPort +newForReceivingFromPortNumber:]): Overhauled and commented. Fri Mar 22 08:39:03 1996 Andrew McCallum * src/NSObject.m ([NSObject +initialize]): Use NSNonOwnedPointerOrNullMapKeyCallBacks, not NSNonRetainedObjectsMapKeyCallBacks; keying on addresses, and avoiding a call to -isEqual, is better. Thu Mar 21 20:17:05 1996 Andrew McCallum * src/BinaryCStream.m ([BinaryCStream -encodeValueOfCType:at:withName:name]): [_C_CHARPTR]: Write the string with the host LENGTH, not the network LENGTH! * src/NSGSet.m ([NSGSet -isEqual:]): Make this just compare the id's, not call [super isEqual:]. I did this to prevent an infinite loop while running checks/nsarchiver.m, but I have a feeling that the bug might be in map.c, not here. Look at this again! * src/Set.m ([Set -nextObjectWithEnumState:]): Dereference ENUMSTATE; this change mirrors the earlier change to [NSGSet -nextObject]. * src/KeyedCollection.m ([ConstantKeyedCollection -_decodeContentsWithCoder:]): Reverse order of objects and keys, to match _encodeContentsWithCoder:. * src/Makefile.in (GNUSTEP_CFILES): Removed NSZone.c. (GNUSTEP_MFILES): Added NSZone.m. * NSZone.m: Renamed from NSZone.c. (NSZoneSetName, NSZoneName): New functions; unimplemented. * src/Foundation/NSZone.h: Declare new functions. * src/Makefile.in (objects/stdobjects.h): Create it in the build directory, not $(srcdir). (Reported by Albin Jones.) Thu Mar 21 13:13:35 EST 1996 Albin L. Jones * src/Foundation/NSGeometry.h: Added documentation commentary and reformatted things a little. Also separated the typedef's from the struct declarations in the definitions of NSPoint, NSSize, and NSRect. (This is for conformity to the GNU coding standards.) * src/NSGeometry.m: Added documentation commentary and reformatted things a little. Also added bits of code to guarantee that functions which return BOOL do so. * src/Foundation/NSHashTable.h: Added full documentation. * src/Foundation/NSMapTable.h: Ditto. * src/Foundation/NSRange.h: Separated the typedef from the struct declaration for NSRange. (This is for conformity to the GNU coding standards.) * src/Makefile.in: Added new files to GNU_MFILES, GNU_HEADERS; removed old files from GNU_CFILES, GNU_OTHER_SRCFILES, GNUSTEP_HEADERS, GNUSTEP_MFILES. Removed GNU_BASICS_CFILES, GNU_BASICS_HFILES, GNU_CALLBACKS_CFILES, GNU_CALLBACKS_HFILES; they are no longer needed. * src/Makefile.in (libobjects.so): Replaced dependency objects/stdobjects.h with $(HEADERS_INSTALL). * src/Makefile.in (libobjects.a): Ditto. * src/NSHashTable.m (_NSHT_extra_retain): Fixed annoying "Bus error" bug. * src/NSHashTable.m: Removed the usage of "allocs". Now uses zones only. * src/NSHashTable.m: Many other changes, none fundamental. More comments. * src/NSMapTable.m: Removed the usage of "allocs". Now uses zones only. * src/NSMapTable.m: Many other changes, none fundamental. More comments. * src/abort.c, src/allocs.c., src/atoz.m, src/objects/abort.h src/objects/allocs.h, src/objects/bitops.h, src/objects/minmax.h: Got rid of these, as they were no longer needed. * src/array.c: Became src/array.m. * src/data.c: Became src/data.m. * src/hash.c: Became src/hash.m. * src/list.c: Became src/list.m. * src/map.c: Became src/map.m. * src/callbacks-char_p.c: Became src/cbs-char-p.m. * src/callbacks-id.m: Became src/cbs-id.m. * src/callbacks-int_p.c: Became src/cbs-int-p.m. * src/callbacks-int.c: Became src/cbs-int.m. * src/callbacks-void_p.c: Became src/cbs-void-p.m. * src/callbacks.c: Became src/callbacks.m. * src/number.c: Became src/numbers.c. * src/x-basics.c.in: Became src/x-bas.m.in. * src/x-callbacks.c.in: Became src/x-cbs.m.in. * src/objects/magic.h, src/objects/number.h: Merged to form src/objects/numbers.h. * src/objects/x-basics.h.in: Became src/objects/x-bas.h.in. * src/objects/x-callbacks.h.in: Became src/objects/x-cbs.h.in. * src/array.m, hash.m, list.m, map.m: Removed usage of "allocs", changed to using zones only. Thu Mar 21 19:27:56 1996 Andrew McCallum * src/Makefile.in (CFLAGS): Added -Wno-implicit. * src/BinaryCStream.m: Overhauled to use htonl() and friends. New format is incompatible with the old. * checks/Makefile.in (SRCS): Add coder.m and cstream.m. Wed Mar 20 13:21:16 1996 Andrew McCallum * src/Makefile.in (CC): Added -pipe. Tue Mar 19 12:10:44 1996 Andrew McCallum * checks/server.m: Use new RunLoop mechanism, and new Array method names. ([Server -connection:didConnect:]): Clean up search for invalidated proxies. * checks/client.m: Use new RunLoop mechanism. * src/TcpPort.m (debug_tcp_port): Set to 1. ([TcpInPort -encodeWithCoder:]): Use encodeBytes:.., not encodeValue..; the data is already in network byte-order. ([TcpOutPort -encodeWithCoder:]): Likewise. ([TcpOutPort +newWithCoder:]): Likewise. ([TcpOutPort +newForSendingToSockaddr:withAcceptedSocket:pollingInPort:]): Set entirety of _REMOTE_IN_PORT_ADDRESS to zero. * src/Encoder.m ([Encoder -encodeBytes:count:withName:]): Update for new argument types. * src/Decoder.m ([Decoder -decodeBytes:count:withName:name]): Update for new argument types, and verify read count. * src/objects/Coding.h (Coding -encodeBytes:count:withName:): Use void*, not char* for bytes. (Coding -decodeBytes:count:withName:): Likewise, and pass COUNT, not pointer to COUNT. * src/Encoder.m ([Encoder -encodeBytes:count:withName:]): Method implemented; although it may need to change later. * src/Decoder.m ([Decoder -decodeBytes:count:withName:name]): Likewise. * src/RunLoop.m ([RunLoop -acceptInputForMode:beforeDate:]): If LIMIT_DATE is nil, poll the inputs, but don't wait if there is nothing available immediately. Check to make sure that the LIMIT_DATE hasn't already past; if it has, return immediately, before polling input sources. Mon Mar 18 13:31:38 1996 Andrew McCallum Miscellaneous small fixes, found with -Wall. * src/NSThread.m: Fix indentation. ([NSThread +currentThread]): Add parenthesis around assignment inside while. * src/NSString.m: Include . ([NSString -componentsSeparatedByString:]): Initialize ARRAY! * src/List.m: Include Use OBJC_MALLOC and friends, instead of NX_MALLOC. * src/Decoder.m ([Decoder -finishDecodingInterconnectedObjects]): Comment out temporarily unused AWAKE_SEL local variable. * src/Proxy.m: Raise NSExceptions instead of using -error:. Debug bug the occurs when a client disconnects from the server, and other clients have references to Proxy's of the disconnected client. * examples/second-server.m ([SecondServer -connectionBecameInvalid:]): Correctly detect proxies that should be removed from the array. * examples/second-client.m (main): Run RunLoop properly according to new style. * src/Proxy.m ([Proxy -encodeWithCoder:]): Add a more explanatory error message for the use of invalid Connections. ([Proxy +encodeObject:withConnectedCoder:]): Likewise. ([Proxy -forward::]): Likewise. * src/Connection.m ([Connection -_handleRmc:]): [METHOD_REQUEST]: Fix conditional for which we handle a request immediately. Before it inappropriately queued call backs from the server on which we were waiting, causing us to wait forever. * src/TcpPort.m ([TcpOutPort -encodeWithCoder:]): Add debugging message. ([TcpOutPort +newWithCoder:]): Add debugging message. * src/Proxy.m ([Proxy +encodeObject:withConnectedCoder:]): Assert that triangle connection proxy out port's are valid. Fix tricky autorelease bugs. * examples/second-server.m ([SecondServer -connectionBecameInvalid:]): Don't release REMOTES; it was already autoreleased. (main): Enable double release check with NSObject. * src/NSMapTable.m (NSAllMapTableKeys): Don't autorelease the return value; it was already autoreleased. Too many autoreleases were causing crashes. (NSAllMapTableValues): Likewise. * src/NSObject.m ([NSObject -autorelease]): Print retain and release counts in more helpful error message. * src/NSAutoreleasePool.m ([NSAutoreleasePool -dealloc]): Set CURRENT_POOL to PARENT, even if PARENT is nil. This is correct behavior. Old behavior could cause infinite loops in the PARENT pointers. Remove old vestiges of nil mode used when RunLoop modes were ignored. * src/RunLoop.m ([RunLoop -limitDateForMode:]): Assert mode. ([RunLoop -acceptInputForMode:beforeDate:]): Likewise. * src/NSTimer.m ([NSTimer +scheduledTimerWithTimeInterval:invocation:repeats:]): Add to RunLoopDefaultMode, not nil. ([NSTimer +scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:]): Likewise. * src/Connection.m ([Connection -_getReceivedReplyRmcWithSequenceNumber:]): Run the RunLoop in RunLoopConnectionReplyMode, not nil mode. Update Connection for new RunLoop/Port interaction/interface. * src/Connection.m ([Connection +newForInPort:outPort:ancestorConnection:]): Add the in port to the RunLoop in new RunLoop style. ([Connection -addToRunLoop:forMode:]): Method removed. ([Connection -removeFromRunLoop:forMode:]): Method removed. ([Connection -_getReceivedReplyRmcWithSequenceNumber:]): Use new class method for RunLoop. ([Connection -invalidate]): Remove comment about removing from RunLoop. RunLoop's now automatically remove invalid ports. (RunLoopConnectionReplyMode): New run loop mode string. * src/objects/Connection.h: Remove old methods. Add declaration of new RunLoop mode. Fix the relationship between RunLoop's and Port's. Maintain the fd_set, and information about which Port's are registered with which RunLoop's entirely in the RunLoop. Also implement multiple MODE's with RunLoop's---previously the MODE was ignored: * checks/tcpport-server.m (main): Add port to run loop using new scheme. * checks/tcpport-client.m (main): Likewise. * src/TcpPort.m: Removed methods for dealing remembering locally which RunLoop we've been added to; now the RunLoop manages this. ([TcpInPort +newForReceivingFromPortNumber:]): Don't initialize the the removed ivar ACTIVE_FD_SET. Likewise with _RUN_LOOPS. ([TcpInPort -newPacketReceivedBeforeDate:]): Don't use removed _RUN_LOOPS. ([TcpInPort -old_receivePacketWithTimeout:]): Remove old deprecated method. ([TcpInPort -invokeWithObject:]): Method removed. ([TcpInPort -newPacketReceivedBeforeDate:]): Overhauled to use new RunLoop mechanism. ([TcpInPort -getFds:count:]): New method, called by RunLoop. ([TcpInPort -readyForReadingOnFileDescriptor:]): Likewise. ([TcpInPort -_addClientOutPort:]): Updated for new scheme. ([TcpInPort -_connectedOutPortInvalidated:]): Likewise. ([TcpInPort -addToRunLoop:forMode:]): Method removed. ([TcpInPort -removeFromRunLoop:forMode:]): Method removed. ([TcpInPort -dealloc]): Don't release deleted ivar _RUN_LOOPS. * src/objects/TcpPort.h (TcpInPort _run_loops): Removed ivars. (TcpInPort _client_sock_2_out_port, _client_sock_2_packet): Prepended ivars with underscores. * src/RunLoop.m: Add new explanatory comment at beginning. ([RunLoop -init]): Initialize new ivars. ([RunLoop -currentMode]): New method. ([RunLoop -addFileDescriptor:object:forMode:]): Method replaces -addFileDescriptor:invocation:forMode:, and re-implemented. Not yet functional. ([RunLoop -removeFileDescriptor:forMode:]): Likewise. ([RunLoop -addPort:forMode:]): New method. ([RunLoop -removePort:forMode:]): New method. ([RunLoop -addTimer:forMode:]): Overhauled to do the right thing with the MODE argument. ([RunLoop -acceptInputForMode:beforeDate:]): Method overhauled to ask port objects for their FD's, create FD_2_OBJECT map table on the fly, and initialize FDS on the fly. Now properly removed invalidated ports from the MODE. ([RunLoop -runOnceBeforeDate:forMode:]): New method. ([RunLoop -runOnceBeforeDate:]): New method. ([RunLoop -runUntilDate:forMode:]): New method. ([RunLoop -runUntilDate:]): New method. ([RunLoop +runUntilDate:forMode:]): New method. ([RunLoop +runOnceBeforeDate:]): New method. ([RunLoop +runOnceBeforeDate:forMode:]): New method. ([RunLoop +currentMode]): New method. (RunLoopDefaultMode): New global variable. ([NSObject -performSelector:afterDelay:]): Not implemented. * src/objects/RunLoop.h: Many new methods declared. (RunLoop _mode_2_timers): New ivar. (RunLoop _mode_2_in_ports): New ivar. (RunLoop _mode_2_fd_listeners): New ivar. (RunLoopDefaultMode): New extern variable. * src/objects/RandomGenerating.h (RandomGenerating): Inherit from NSObject protocol. Remove methods +alloc and -init. * src/NSDate.m ([NSDate +distantFuture]): Increase efficiency by caching a single instance in a static variable. ([NSDate +distantPast]): Likewise. Fri Mar 15 19:13:57 1996 Scott Christley * checks/nsarray.m (main): Filled out tests for NSArray and NSMutableArray classes. Sun Mar 17 18:20:17 1996 Andrew McCallum Many miscellaneous small bug fixes, found with -Wall: * src/objects/objects.h: Don't include * src/mframe.m (dissect_method_return): Initialize RETFRAME to NULL to prevent warning. * src/UdpPort.m: Change references to non-existant UdpPacket class to UdpInPacket. * src/objects/UdpPort.h: Declare classes UdpInPacket and UdpOutPacket. * src/TcpPort.m (bzero): New macro, to memset(); for FD_ZERO(). * src/RunLoop.m: Remove references to NAN. Include for memset. (bzero): New macro, to memset(); for FD_ZERO(). * src/NSTimer.m: Remove references to NAN. * src/Proxy.m ([Proxy +newWithCoder:]): Remove unused variable. * src/NotificationDispatcher.m ([NotificationDispatcher -removeObserver:name:object:]): Remove unused variables. * src/NSNotificationCenter.m: Include * src/NSNotification.m: Include * src/NSInvocation.m ([NSInvocation -methodSignature]): Return nil. * src/NSDate.m ([NSDate -initWithString:]): Initialize theTime to 0, to prevent warning. * src/NSData.m ([NSData +_setConcreteClass:]): Include for memset(). * src/NSCountedSet.m ([NSCountedSet -countForObject:]): Return 0. * src/NSBundle.m: Minor comment format fix. * src/Invocation.m: Remove several unused local variables. ([MethodInvocation -invokeWithObject:]): Revert last change: call -invokeWithTarget:, not -subclassResponsibility. * src/NSAllocateObject.m: Include for memset(). * src/NSAutoreleasePool.m ([NSAutoreleasePool -parentAutoreleasePool]): Remove inclusion of eltfuncs.h and collhash.h. Miscellaneous archiving fixes. * src/NSArchiver.m ([NSArchiver +initialize]): Use ==, not = in if test. * src/Encoder.m ([Encoder -_coderCreateReferenceForObject:]): Return the xref! ([Encoder -_coderCreateReferenceForConstPtr:]): Likewise. * src/Coder.m: Return nil for several -notImplemented methods that are to return objects. * src/CStream.m ([CStream -initForWritingToStream:s]): Return the result. * src/TextCStream.m ([TextCStream -decodeName:name]): Pass correct value to debug message. * src/RawCStream.m ([RawCStream -encodeValueOfCType:at:withName:name]): Remove unused variable. ([RawCStream -decodeValueOfCType:at:withName:]): Likewise. Switch on *type, not unused variable. Miscellaneous fixes to collection classes. * src/MutableCString.m ([MutableCString -initWithCoder:]): Remove unused variable n. Return self, not n. * src/OrderedCollection.m ([OrderedCollection -replaceRange:withCollection:]): Return void. ([OrderedCollection -replaceRange:usingCollection:]): Likewise. * src/MappedCollector.m ([MappedCollector -initWithObjects:forKeys:count:]): Return self. * src/LinkedList.m ([LinkedList -initWithObjects:count:]): Return self. * src/KeyedCollection.m ([ConstantKeyedCollection -initWithObjects:forKeys:count:]): Return nil. ([ConstantKeyedCollection -objectAtKey:]): Likewise. ([ConstantKeyedCollection -keyOfObject:]): Likewise. ([ConstantKeyedCollection -withKeysInvoke:]): Return void. ([ConstantKeyedCollection -withKeysInvoke:whileTrue:]): Likewise. ([ConstantKeyedCollection -nextObjectAndKey:withEnumState:]): Return nil. ([ConstantKeyedCollection -copyValuesAs:]): Likewise. ([ConstantKeyedCollection -nextObjectAndKey:withEnumState:]): Likewise. * src/IndexedCollection.m ([ConstantIndexedCollection -prevObjectWithEnumState:]): Use assignment, not equality test for setting enumState to -1. * src/GapArray.m ([GapArray -empty]): Renamed from _collectionEmpty, and implemented to do entire job of emptying. * src/Dictionary.m ([Dictionary -newEnumState]): Removed useless cruft. * src/Collection.m ([ConstantCollection -detectObjectByInvoking:]): Set detectedObject to nil to avoid warning. ([ConstantCollection -maxObject]): Initialize MAX to nil. ([ConstantCollection -minObject]): Initialize MIN to nil. ([Collection -uniqueContents]): Iterate over CP, not SELF. * src/CircularArray.m ([CircularArray -empty]): Renamed from _collectionEmpty, and implemented to do entire job of emptying. * src/Array.m ([Array -empty]): Renamed from _empty, and implemented to do entire job of emptying. Fri Mar 15 13:10:34 1996 Andrew McCallum * doc/Makefile.in (GNUstep-FAQ.html): New target. (GNUstep-FAQ): Rules modified to handle @email{} and @url{}. Tue Mar 12 09:43:32 1996 Andrew McCallum * checks/tcpport-server.m, checks/tcpport-client.m: Method name changes. * checks/Makefile.in (SRCS): Add nstimer.m. * src/TcpPort.m ([TcpInPort +newForReceivingFromPortNumber:]): Initialize _run_loops. ([TcpInPort -addToRunLoop:forMode:]): Use new _run_loops Bag. ([TcpInPort -removeFromRunLoop:forMode:]): Likewise. ([TcpInPort -_connectedOutPortInvalidated:]): Likewise. ([TcpInPort -_addClientOutPort:]): Likewise. ([TcpInPort -dealloc]): Release _run_loops. ([TcpOutPort -outPacketClass]): Method renamed from -packetClass. ([TcpOutPort +outPacketClass]): Likewise. * src/objects/TcpPort.h (TcpInPort _run_loops): Make it a Bag. (TcpInPort _run_loop_modes): Remove ivar. * src/Port.m ([InPort -setReceivedPacketInvocation:]): Assert that _packet_invocation isn't already set. * src/RunLoop.m ([RunLoop -removeFileDescriptor:forMode:]): Add debugging message. * src/NSGSet.m ([NSGSet -member:]): Return value. * src/IndexedCollection.m ([ConstantIndexedCollection -firstObject]): Return nil if empty. ([ConstantIndexedCollection -lastObject]): Likewise. ([ConstantIndexedCollection -prevObjectWithEnumState:]): Use -1 to deal with reversals at extremes. ([ConstantIndexedCollection -nextObjectWithEnumState:]): Use [self count] to deal with reversals at extremes. * src/Connection.m (in_port_2_ancestor): New static variable. ([Connection +initialize]): Initialize it. ([Connection +newForInPort:outPort:ancestorConnection:]): Use new static variable to handle ancestor; (ignore ancestor argument; the method name will be changed later). Set the in-port's packet invocation to the Connection class. Don't call -addToRunLoop.. here, the mechanics of it were already done above. ([Connection -addToRunLoop:forMode:]): Mark it as not implemented, for now. ([Connection -runConnectionUntilDate:]): Don't add to run loop here. ([Connection +invokeWithObject:]): Make it a class method instead of an instance method; alter contents appropriately for this. ([Connection -portIsInvalid:]): Look at in_port_2_ancestor and remove ourselves if necessary. ([Connection -invalidate]): Don't remove ourselves from the run loop here, because we may not be the only one listening. This still needs fixing. * src/ConnectedCoder.m ([ConnectedEncoder -dismiss]): Fix typo in sendPacket: call. * src/IndexedCollection.m: Several minor fixes to return types and return values. Also: ([ReverseEnumerator -nextObject]): Pass pointer to enum_state. ([ConstantIndexedCollection -prevObjectWithEnumState:]): Method overhauled. ([ConstantIndexedCollection -nextObjectWithEnumState:]): Likewise. ([ConstantIndexedCollection -newEnumState]): New method. * src/Foundation/NSGSet.h: Remove #include of objects/elt.h. * src/Foundation/NSGDictionary.h: Likewise. * src/Foundation/NSGArray.h: Likewise. * src/NSGSet.m: Remove #include of objects/eltfuncs.h. * src/NSGDictionary.m: Likewise. * src/NSGCountedSet.m: Likewise. * src/AutoreleasePool.m: Remove #include of objects/collhash.h. * src/TcpPort.m: Updated to conform to new Port class. TcpPacket class split into TcpInPacket and TcpOutPacket. * src/objects/TcpPort.h: Declare new methods and classes. * src/RunLoop.m: Debugging messages conditioned on debug_run_loop. ([RunLoop -runOnceBeforeDate:forMode:]): New method. * src/objects/RunLoop.h: Declare new method. * src/Port.m ([Port +outPacketClass]): Method renamed from packetClass. ([Port -outPacketClass]): Likewise. ([InPort -setReceivedPacketInvocation:]): Method renamed from setPacketInvocation. ([OutPort -sendPacket:]): Method renamed from -sendPacket:withTimeout:. (OutPacket, InPacket): New classes, replacing Packet class. * src/objects/Port.h: Declare new methods and classes. * src/MemoryStream.m ([MemoryStream -initWithCapacity:prefix:]): New method. * src/objects/MemoryStream.h: Declare new method. * src/Connection.m: Remove old-style methods for getting incoming ConnectedCoders. Add new methods that use RunLoop. All callers changed. ([Connection -addToRunLoop:forMode:]): New method. ([Connection -removeFromRunLoop:forMode:]): New method. ([Connection -runConnectionUntilDate:]): New method. ([Connection -runConnection]): Method changed to call above method. ([Connection -_handleRmc:]): New method. ([Connection -_handleQueuedRmcRequests]): New method. ([Connection -_getReceivedReplyRmcFromQueueWithSequenceNumber:]): New method. ([Connection -_getReceivedReplyRmcWithSequenceNumber:]): New method. ([Connection -invokeWithObject:]): New method. ([Connection +newForInPort:outPort:ancestorConnection:]): Set reply_depth ivar. ([Connection -_encoderCreateReferenceForConstPtr:]): Return the xref! * src/objects/Connection.h: Declare new methods. Type arguments with InPort and OutPort, not just Port. (Connection reply_depth): New ivar. * src/ConnectedCoder.m ([ConnectedDecoder +newDecodingWithPacket:connection:]): New method. Old method +newDecodingWithConnection:timeout: is deprecated. * src/objects/ConnectedCoder.h: Declare new method. Mon Mar 11 12:02:04 1996 Andrew McCallum * checks/tcpport-server.m: Updated for RunLoop. * checks/tcpport-client.m: Likewise. * src/RunLoop.m: New file. * src/objects/RunLoop.h: New file. * src/NSTimer.m: New file. * src/Makefile.in (CFLAGS): Add -Wall. (GNU_MFILES): Add RunLoop.m. (GNU_HEADERS): Add objects/RunLoop.h. (GNUSTEP_MFILES): Add NSTimer.m. (GNUSTEP_HEADERS): Add Foundation/NSTimer.h. * src/TcpPort.m ([TcpInPort -receivePacketWithTimeout:]): Completely new implementation that uses the RunLoop. ([TcpInPort -old_receivePacketWithTimeout:]): New method, holding old implementation. ([TcpInPort -invokeWithObject:]): New method, called by RunLoop. ([TcpInPort -_tryToGetPacketFromReadableFD:]): New private method. ([TcpInPort -_addClientOutPort:toRunLoop:forMode:]): New method. ([TcpInPort -addToRunLoop:forMode:]): New method. ([TcpInPort -_removeClientOutPort:fromRunLoop:forMode:]): New method. ([TcpInPort -removeFromRunLoop:forMode:]): New method. ([TcpInPort -_addClientOutPort:]): Add it to the RunLoop. ([TcpInPort -_connectedOutPortInvalidated:]): Remove it from the RunLoop. ([TcpInPort -_addClientOutPort:]): Method renamed from _addOutPort:. * src/objects/TcpPort.h (TcpInPort _run_loop, _run_loop_mode): New ivars. * src/Port.m ([InPort -init]): Set _packet_invocation. ([InPort -setPacketInvocation:]): New method. ([InPort -addToRunLoop:forMode:]): New method. ([InPort -removeFromRunLoop:forMode:]): New method. * src/objects/Port.h: Declare new methods. (Port _packet_invocation): New ivar. * src/NotificationDispatcher.m ([NotificationDispatcher +defaultInstance]): New method. ([NotificationDispatcher -removeObserver:name:object:]): Remove handling of non-existance _nil_observer_array. * src/NSDate.m: Many small formatting changes. (UNIX_REFERENCE_INTERVAL): Macro renamed from UNIX_OFFSET. ([NSConcreteDate -timeIntervalSinceNow]): New method. * src/Invocation.m (return_retained): Change macro from 1 to 0. * src/Foundation/NSTimer.h: Declare NSTimer class interface. * src/Connection.m ([Connection -isValid]): New method. * src/objects/NotificationDispatcher.h ([NotificationDispatcher +defaultInstance]): Declare new method. * src/objects/Notification.h (Notifying): New protocol. (NotificationPosting): New protocol. * src/objects/Connection.h: Declare new method. * src/objects/Array.h (ConstantArray): Inherit from ConstantIndexedCollection, not IndexedCollection. * src/IndexedCollection.m ([IndexedCollection +initialize]): Compare self with IndexedCollection, not KeyedCollection. * doc/gnustep-faq.texi: Changes by Scott Christley. Thu Mar 7 15:51:51 1996 Andrew McCallum * src/TcpPort.m ([TcpInPort -receivePacketWithTimeout:]): Move initialization of select_timeout to inside loop since Linux select() modifies *select_timeout. Wed Mar 6 11:40:02 1996 Andrew McCallum * src/TcpPort.m: Assert is_valid in many places. ([TcpInPort +newForReceivingFromPortNumber:]): Get the address of the host, not localhost=127.0.0.1. ([TcpInPort -invalidate]): Remove ourselves from socket_2_port and port_number_2_port here instead of in -dealloc. ([TcpInPort -description]): Indicate whether we are valid or not in string. ([TcpOutPort -description]): Likewise. ([TcpOutPort -invalidate]): Assert is_valid, don't just conditionally execute body. Remove ourselves from out_port_bag and socket_2_port here, not in -dealloc. ([TcpPacket +_getPacketSize:andReplyPort:fromSocket:inPort:]): If we don't read() full prefix, don't abort(), just return EOF. * src/Proxy.m: Assert that the connection is valid in several places. * src/Connection.m: Assert is_valid in many places. ([Connection +newForInPort:outPort:ancestorConnection:]): Set is_valid to 1. Only ask for notification of out port death if out port is non-nil. ([Connection -portIsInvalid:]): Properly get the port from the notification object. * src/Port.m ([Port -invalidate]): Insist that is_valid is true at the beginning of this method, don't test it and skip the body of this method. Force users to be careful about calling -invalidate more than once. * src/NSMapTable.m (NSAllMapTableValues): Get rid of unused variable ARRAY. Return VALUEARRAY, not unused variable. * examples/second-server.m (announce_new_port): New function. (announce_broken_port): New function. (main): Register them for notifications; let user choose registered name on command line. * examples/second-client.m (main): Use new notification interface. * checks/nsnotification.m (main): Wrap it with an NSAutoreleasePool. * checks/tcpport-server.m (main): Use new notification interface for invocations. * src/NotificationDispatcher.m (NotificationRequest): Ivar names prepended with `_'. (NotificationInvocation): Likewise. (NotificationPerformer): Likewise. ([NotificationDispatcher -_addObserver:notificationRequest:name:object:]): Insist that observer be non-nil; (in the case of Invocation's, the invocation is now the observer). ([NotificationDispatcher -addInvocation:name:object:]): Method renamed from -addObserver:invocation:... Pass the invocation as the observer. Release the NR after it has been added. ([NotificationDispatcher -addObserver:selector:name:object:]): Release the NR after it has been added. ([NotificationDispatcher -_removeFromLinkedListNotificationRequest:]): New method. ([NotificationDispatcher -removeInvocation:]): New method. ([NotificationDispatcher -removeInvocation:name:object:]): New method. ([NotificationDispatcher -removeObserver:]): Use _removeFromLinkedListNotificationRequest:. ([NotificationDispatcher -removeObserver:name:object:]): Likewise. ([NotificationDispatcher +addInvocation:name:object:]): New method. ([NotificationDispatcher +removeInvocation:]): New method. ([NotificationDispatcher +removeInvocation:name:object:]): New method. * src/objects/NotificationDispatcher.h: Declare new methods. * src/Connection.m ([Connection +initialize]): Initialize all_connections_local_targets. ([Connection -addLocalObject:]): Put it in all_connections_local_targets also. ([Connection -removeLocalObject:]): Remove it from all_connections_local_targets also. Tue Mar 5 10:32:51 1996 Andrew McCallum * examples/second-server.m: Use notifications instead of old scheme for invalidation listening. * examples/second-server.h: Don't conform to no-longer-used InvalidationListening protocol. * examples/second-client.m (announce_new_connection): New function. (main): Register it for notifications. Run the connection forever, instead of on a 15 second timeout. * examples/first-client.m (main): Before exit, invalidate the connection, not the proxy. * examples/textcoding.m: Send -close to Archiver, not old -closeCoder. * examples/Makefile.in (first): Force check for re-compilation of libobjects. (second): Likewise. * checks/tcpport-server.m (announce_new_connection): New function. (announce_broken_connection): New function. (main): Register new functions for notifications. Send messages back to clients to test reply port mechanism. * checks/tcpport-client.m: Test the reply port mechanism; look for messages coming back from the server. * checks/server.m: Use Array instead of List. Use NotificationDispatcher to hear about invalid and new connections. Let the user set the registerd name from the command line. * checks/server.h: Update for new server interface. * checks/client.m (main): Let user set registered name from command line. * checks/Makefile.in (SRCS): Added nsnotification.m. (tcpport, remote): Force check of libobjects re-compilation. * doc/Makefile.in (TEXI_FILES): Add gnustep-faq.texi. (GNUstep-FAQ): New target. * src/TcpPort.m: Many ivar names changed for clarity. Some new ivars added; see changes to TcpPort.h. Overhaul of how TcpOutPort's track their remote address. Previously they used the address of their local peer; this is no good when encoding a TcpOutPort on the wire for D.O.; the D.O. reciever needs a way to contact the listen'ing socket of the TcpInPort in order to form a new connection. _remote_in_port_address is now the address of the remote listen'ing socket. Added many comments throughout. All perror() calls changes to be more informative. (debug_tcp_port): Make this a static variable instead of a macro. (init_socket_2_port): Check pre-existance of socket_2_port here instead of callers. ([TcpInPort +newForReceivingFromPortNumber:]): Method overhauled. Don't bind socket to INADDR_ANY because we need to be able to encode our unique host address on the wire for D.O. ([TcpInPort -_listeningSockaddr]): New method. ([TcpInPort -receivePacketWithTimeout:]): Method overhauled. Get the reply port for an incoming packet from the packet prefix. ([TcpInPort -_connectedOutPortInvalidated:]): Add debugging message. ([TcpInPort -classForConnectedCoder:]): Return the TcpOutPort class, not [self class] because we always encode a "send right" (ala Mach), not a "recieve right". ([TcpOutPort +newForSendingToSockaddr:withAcceptedSocket:pollingInPort:]): Method renamed, and majorly overhauled. Now many different combinations of NULL argument do different things. This is now the single designated initializer. We now check both the SOCKADDR and the SOCK argument to find previously-created TcpOutPort's. This method is also used to set the remote_in_port_address of an already-created TcpOutPort. There is more error checking. ([TcpOutPort +newForSendingToPortNumber:onHost:]): Overhauled. ([TcpOutPort +_newWithAcceptedSocket:peeraddr:inPort:]): Overhauled to work with new designated initalizer. ([TcpOutPort -sendPacket:withTimeout:]): Use new low-level Packet interface that deals with reply ports. ([TcpOutPort +packetClass]): New method. (PREFIX_LENGTH_TYPE): New macro. (PREFIX_LENGTH_SIZE): New macro. (PREFIX_ADDRESS_TYPE): New macro. (PREFIX_ADDRESS_SIZE): New macro. (PREFIX_SIZE): New macro. ([TcpPacket -_initForReceivingWithSize:replyPort:]): Use 0 prefix, because the separate +_getPacketSize... method reads those bytes. ([TcpPacket -_writeToSocket:withReplySockaddr:]): Now the prefix includes the sockaddr of the reply port. If ADDR is non-null, set the reply port address portion of the prefix. ([TcpPacket +_getPacketSize:andReplyPort:fromSocket:inPort:]): New method, replacing +readPacketSizeFromSocket:. ([TcpPacket -_fillFromSocket:]): Set Stream's eofPosition properly. Leave Stream's position at zero. (InPortAcceptedClientNotification): New notification string. * src/objects/TcpPort.h: Declare new ivars and notfication strings. * src/Proxy.m: Change many ivar names. (debug_proxy): Temporarily set to 1. ([Proxy +newForRemoteTarget:connection:]): Set new ivar names. Embellish debugging message to include connection. ([Proxy -invalidateProxy]): Return void instead of self. ([Proxy +encodeObject:withConnectedCoder:]): Overhauled, encode tag, and change order of encoding for more efficient encoding. Added many comments. ([Proxy +newWithCoder:]): Likewise, to match. Also added a check to make sure we don't return a bogus pointer for a local object; do this by checking with connection's +includesLocalObject; if it's not there, raise an exception. ([Proxy -forward::]): Call the new forwarding method name in Connection. * src/objects/Proxy.h: Several ivar name changes. Method types fixed. * src/Connection.m (default_in_port_class, default_out_port_class): New static variables, replacing default_port_class. (all_connections_local_targets): New map table; not used yet, though. (debug_connection): Temporarily set to 1. ([Connection +initialize]): Set new static vars. ([Connection +setDefaultInPortClass:]): New method. ([Connection +defaultInPortClass]): New method. ([Connection +setDefaultOutPortClass:]): New method. ([Connection +defaultOutPortClass]): New method. ([Connection -init]): Use new default_in_port_class. ([Connection +new]): Likewise. ([Connection +newWithRootObject:]): Likewise. ([Connection +newRegisteringAtName:withRootObject:]): Likewise. ([Connection +rootProxyAtName:onHost:]): Likewise. ([Connection +rootProxyAtPort:]): Likewise. ([Connection +newForInPort:outPort:ancestorConnection:]): Assert the in port. Embellish the debugging message to print the in port and out port. Set the new connection's in port and out port ivars. Register ourselves as observers of port invalidation with the NotificationDispatcher. Post a notification that a new connection was created. ([Connection -runConnectionWithTimeout:]): Use _serviceReceivedRequestsWithTimeout:. ([Connection -_newReceivedRmcWithTimeout:]): Use decodingClass, not encodingClass. ([Connection -_serviceReceivedRequestsWithTimeout:]): Method name changed from -newReceivedReplyRmcWithSequenceNumber:. ([Connection +includesLocalObject:]): New method; still needs more infrastructure to work, though. ([Connection -inPortClass]): New method. ([Connection -outPortClass]): New method. ([Connection -setInPortClass:aPortClass]): New method. ([Connection -setOutPortClass:aPortClass]): New method. ([Connection -_encoderCreateReferenceForConstPtr:]): Add 1 to map table count to get xref. ([Connection -_decoderCreateReferenceForConstPtr:]): Likewise. ([Connection -dealloc]): Remove ourselves from the NotificationDispatcher. (ConnectionWasCreatedNotification): New notification string. * src/objects/Connection.h (in_port_class, out_port_class): New ivars replacing port_class. Declare methods to get and set them. * src/ConnectedCoder.m (CONNECTED_CODER_FORMAT_VERSION): New macro. ([ConnectedEncoder -_initForWritingWithConnection:sequenceNumber:identifier:]): Get packetClass from the connection's outPort, not the outPortClass. Return self. ([ConnectedDecoder +readSignatureFromCStream:getClassname:formatVersion:]): Fill in name and version. * src/LinkedList.m ([LinkedList -prependObject:]): Fix return type. ([LinkedList -insertObject:atIndex:]): Likewise. * src/Encoder.m ([Encoder -_coderCreateReferenceForObject:]): Insert it in object_2_xref, not const_ptr_2_xref. ([Encoder -_encodeObject:withName:isBycopy:isForwardReference:]): Create the in_progress_table with NSNonOwnedPointerMapKeyCallBacks, not NSObject..; needed by distributed objects so we don't get infinite loop with proxy objects. * src/Decoder.m ([Decoder +readSignatureFromCStream:getClassname:formatVersion:]): Compare got with 6, not 2. ([Decoder -_coderCreateReferenceForObject:]): Add warning comment about a -retain we don't want. Fix this eventually! * src/objects/CoderPrivate.h (SIGNATURE_FORMAT_STRING): Remove "version" from between class name and format version. * src/CStream.m: Use new SIGNATURE_FORMAT_STRING, as defined in objects/CoderPrivate.h. Sat Mar 2 19:33:26 1996 Andrew McCallum Wrote implementation of GNU Notification and NotificationDispatcher classes. Used these as the engines for new versions of the NSNotification* classes. The previous versions of NSNotification and NSNotificationCenter were buggy and slow. The new GNU implementations have some dramatic improvements speed, due to extra use of hash tables, and the use of LinkedList's; they also have some better features. * src/Notification.m: New file. * src/NotificationDispatcher.m: New file. * src/objects/Notification.h: New file. * src/objects/NotificationDispatcher.h: New file. * src/NSNotificationCenter.m: Completely new implementation based on GNU NotificationDispatcher. This version is much faster, and has some better features. * src/NSNotification.m: Completely new implementation based on GNU Notification. * src/Foundation/NSNotification.h: New interface based on GNU Notification and NotificationDispatcher. * src/Makefile.in (GNU_MFILES): Added Notification.m and NotificationDispatcher.m. Removed SocketPort.m. (GNU_HEADERS): Added objects/Notification.h and objects/NotificationDispatcher.h. Removed objects/SocketPort.h. * src/Foundation/NSConnection.h (NSConnectionDeath): New macro. * src/objects/TcpPort.h: Declare new methods and new Notification String. * src/Proxy.m ([Proxy +initialize]): Don't return self. * src/objects/Magnitude.h: Don't include * src/LinkedList.m ([LinkedList -insertObject:after:]): When inserting first object, set _count to 1. ([LinkedList -insertObject:before:]): Likewise. ([LinkedList -appendObject:]): Don't claim ownership here if we're going to call -insertObject:after: later. ([LinkedList -prependObject:]): Likewise. And renamed from prependElement. ([LinkedList -insertObject:atIndex:]): Likewise. ([LinkedList -newEnumState]): New method. ([LinkedList -nextObjectWithEnumState:]): Overhauled. ([LinkedList -prevObjectWithEnumState:]): Likewise. * src/LinkedListNode.m ([LinkedListNode -initialize]): Method removed. ([LinkedListNode -init]): Set _linked_list. * src/Connection.m ([Connection +connectionsCountWithInPort:]): Fix use of END_FOR_ARRAY. ([Connection -invalidate]): Post ConnectionBecameInvalidNotification. (ConnectionBecameInvalidNotification): New extern String. * src/objects/Connection.h (ConnectionBecameInvalidNotification): Declare extern new String. * src/objects/String.h (String): Make the protocol inherit from the NSObject protocol. * src/objects/Collecting.h (ConstantCollecting): Make is inherit from the NSObject protocol. * src/TcpPort.m ([TcpInPort -numberOfConnectedOutPorts]): New method. ([TcpInPort -_connectedOutPortInvalidated:]): Post an InPortClientBecameInvalidNotification. ([TcpInPort -portNumber]): New method. ([TcpInPort -description]): New method. ([TcpOutPort +newWithAcceptedSocket:inPort:]): Fill in the _address ivar. ([TcpOutPort -portNumber]): New method. ([TcpOutPort -description]): New method. * src/Invocation.m ([MethodInvocation -invokeWithObject:]): Make it a -subclassResponsibililty. ([MethodInvocation -initWithArgframe:selector:]): Raise an exception if we are unable to get a non-null selector type string. * src/Port.m ([Port -invalidate]): Post PortBecameInvalidNotification. (PortBecameInvalidNotification): New String object. * src/NSGDictionary.m ([NSGMutableDictionary -objectForKey:]): New method. * src/KeyedCollection.m ([ConstantKeyedCollection -description]): Use object_get_class_name instead of -name. * src/Foundation/NSObject.h (NSObject (NEXSTEP)): Comment out -name method because NSNotification.h declares it with a different type. Eventually we'll have to come up with a more permanent solution. * src/DelegatePool.m ([DelegatePool -forward::]): Fix use of END_FOR_ARRAY. * src/Collection.m ([Enumerator -nextObject]): Pass pointer to ENUM_STATE. ([Enumerator -dealloc]): Likewise. ([ConstantCollection -detectObjectByInvoking:]): Use -returnValueIsTrue. ([ConstantCollection -printForDebugger]): Use object_get_class_name instead of -name because -name is now ambiguously typed. Fri Mar 1 09:53:31 1996 Andrew McCallum * checks/Makefile.in: Removed all invdividual targets for executables. Use general rule that works for GNU make, but may not work for others. (SRCS): Add tcpport-server.m and tcpport-client.m. (tcpport): New target. * src/MachPort.m: Surrounded by #if for mach. * src/Port.m: Overhauled for new Port heirarchy. More changes than I want to list individually. * src/objects/Port.h: Likewise. * src/TcpPort.m, src/objects/TcpPort.h: New files. * src/UdpPort.m, src/objects/UdpPort.h: New files. * src/MachPort.m,src/objects/MachPort.h: New files. * src/Makefile.in (GNU_MFILES): Added UdpPort.m. (GNU_HEADERS): Added objects/UdpPort.h. * src/Makefile.in (GNU_MFILES): Add MachPort.m. (GNU_HEADERS): Add objects/MachPort.h. * src/Encoder.m ([Encoder -_coderCreateReferenceForConstPtr:]): Get xref before asserting it. * src/objects/CoderPrivate.h (WRITE_SIGNATURE_FORMAT_ARGS): Use STRINGIFY() for OBJECTS_PACKAGE_NAME. * src/objects/stdobjects.h.in (STRINGIFY): New macro defined, if not defined already. (XSTRINGIFY): Likewise. * src/objects/Array.h (END_FOR_ARRAY): Macro renamed from FOR_ARRAY_END, and given argument. * src/Connection.m: Overhauled for new collections, coders and ports. More changes than I want to list individually. * src/ConnectedCoder.m: Likewise. * src/objects/ConnectedCoder.h: Likewise. * src/objects/Connection.h: Likewise. * src/Proxy.m: Likewise. * src/objects/Proxy.h: Likewise. All this overhaul work not yet finished. Thu Feb 29 21:49:33 1996 Andrew McCallum * src/Makefile.in (GNUSTEP_MFILES): Re-added Connection.m and ConnectedCoder.m. (GNUSTEP_HEADERS): Removed duplicate Foundation/NSHashTable.h. Wed Feb 28 20:37:27 1996 Andrew McCallum * checks/invocation.m: Test many new features. * src/objects/CoderPrivate.h (SIGNATURE_FORMAT_STRING): Change to include package name and version. (WRITE_SIGNATURE_FORMAT_ARGS): New macro. * src/objects/stdobjects.h.in: New macro. * src/Decoder.m ([Decoder +readSignatureFromCStream:getClassname:formatVersion:]): Get new values. * src/Encoder.m ([Encoder -writeSignature]): Use new macro. * src/Makefile.in (GNU_MFILES): Add TcpPort.m. (GNU_HEADERS): Add objects/TcpPort.h. Sun Feb 25 13:01:50 1996 Andrew McCallum * src/Makefile.in (FILE_AUTHORS): Added "Albin L. Jones". Sat Feb 24 13:47:40 1996 Andrew McCallum * src/Makefile.in (GNUSTEP_MFILES): Add NSInvocation.m. * src/NSInvocation.m: Class implemented using Invocation as behavior. * src/Foundation/NSInvocation.h: Remove ivars. Define so that behavior can be used. * src/Invocation.m (return_retained): New macro. ([Invocation -setReturnValue:]): Retain return value if necessary. ([ArgframeInvocation -_retainArguments]): Add missing local var. ([MethodInvocation -initWithArgframe:type:]): New method. ([MethodInvocation -initWithArgframe:selector:]): Use new method. Set selector using sel_pointer. ([ObjectFunctionInvocation -invokeWithObject:]): Use return_retained, not args_retained. Fri Feb 23 14:35:05 1996 Andrew McCallum * src/Invocation.m ([Invocation -initWithReturnType:]): Use new ivar names. Use calloc instead of malloc. ([Invocation -encodeWithCoder:]): New method. ([Invocation -initWithCoder:]): New method. ([Invocation -classForConnectedCoder:]): New method. ([Invocation -returnType]): Use new ivar name. ([Invocation -setReturnValue:]): New method. ([Invocation -objectReturnValue]): Method implemented. ([Invocation -intReturnValue]): Method implemented. ([Invocation -returnValueIsTrue]): Method implementation finished. ([Invocation -dealloc]): Use new ivar name. Release return type if necessary. ([ArgframeInvocation -_retainArguments]): New method. ([ArgframeInvocation -_initArgframeFrom:withType:retainArgs:]): Method overhauled. ([ArgframeInvocation -initWithArgframe:type:]): Use new method. ([ArgframeInvocation -encodeWithCoder:]): New method. ([ArgframeInvocation -initWithCoder:]): New method. ([ArgframeInvocation -argumentTypeAtIndex:]): Use new ivar name. ([ArgframeInvocation -retainArguments]): New method. ([ArgframeInvocation -argumentsRetained]): New method. ([ArgframeInvocation -_deallocArgframe]): New method. ([ArgframeInvocation -dealloc]): Use new method. Release args if necessary. ([MethodInvocation -_initTargetAndSelPointers]): New method. ([MethodInvocation -initWithArgframe:selector:]): Use new method. ([MethodInvocation -initWithCoder:]): New method. ([MethodInvocation -initWithTarget:selector:...]): Retain args if necessary. ([MethodInvocation -invoke]): Use new ivars. ([MethodInvocation -invokeWithTarget:]): Use -setTarget:. ([MethodInvocation -selector]): Use new ivar. ([MethodInvocation -setSelector:]): Likewise. ([MethodInvocation -target]): Likewise. ([MethodInvocation -setTarget:]): Likewise. ([ObjectMethodInvocation -_initArgObjectPointer]): New method. ([ObjectMethodInvocation -initWithArgframe:selector:]): Use new method. ([ObjectMethodInvocation -initWithCoder:]): New method. ([ObjectMethodInvocation -invokeWithObject:]): New method. (VoidFunctionInvocation): New class implementation. (ObjectFunctionInvocation): New class implementation. * src/objects/Invocation.h: Make -invoke methods return void. Include objects/Invoking.h. (return_type): ivar renamed from encoding. (ArgframeInvocation args_retained): new ivar. (MethodInvocation target_pointer): new ivar. (MethodInvocation sel_pointer): new ivar. (VoidFunctionInvocation): New class. (ObjectFunctionInvocation): New class. * src/objects/Invoking.h: Make -invoke methods return void. * src/Encoder.m ([Encoder +initialize]): Compare self with Encoder, not Coder. ([Encoder +encodeRootObject:withName:toStream:]): Rename method to -close. ([Encoder -encodeSelector:withName:name]): Use sel_get_any_typed_uid instead of sel_get_any_uid. * src/Stream.m ([Stream -close]): Method renamed from -closeStream. * src/objects/Streaming.h: Likewise. * src/StdioStream.m ([Stream -close]): Likewise. * src/MemoryStream.m ([Stream -close]): Likewise. * src/objects/Coder.h ([Coder +setDefaultCStreamClass:]): Declare method. ([Coder +defaultCStreamClass]): Declare method. * src/Coder.m ([Coder -close]): Method renamed from -closeCoding. * src/objects/Coding.h: Likewise. Thu Feb 22 10:03:01 1996 Andrew McCallum * src/NSObject.m (retain_counts): Make it a NSMapTable instead of a coll_hash. (NSIncrementExtraRefCount): Update for new retain_counts type. (NSDecrementExtraRefCountWasZero): Likewise. ([NSObject +initialize]): Likewise. ([NSObject -retainCount]): Likewise. * src/Makefile.in (GNU_HEADERS): Add objects/bitops.h, objects/minmax.h. (GNU_OTHER_SRCFILES): Add md5.h. * src/Makefile.in (GNU_HEADERS): Add objects/Enumerating.h, objects/Invoking.h. * src/Makefile.in (GNU_HEADERS): Add objects/array.h. * Makefile.in (DIST_FILES): Add RELEASE-NOTES. * src/NSString.m ([NSString -hash]): Don't use elt_* function, and use NSHashStringLength. * src/String.m ([String -hash]): Likewise. * src/simple-load.h (__objc_dynamic_find_symbol): Cast to drop const type, and avoid warning. * src/Makefile.in (GNU_MFILES): Remove eltfuncs.m. (GNU_HEADERS): Remove objects/elt.h, objects/eltfuncs.h. * src/Makefile.in (GNU_CFILES): Remove collhash.c. (GNU_HEADERS): Remove objects/collhash.h. * src/CString.m ([CString -initWithCString:range:]): Don't make super call. Fix infinite loop in _collectionDealloc. * src/BinaryCStream.m ([BinaryCStream -decodeValueOfCType:at:withName:]): Make save_type const. * src/AutoreleasePool.m: Don't include . * src/AutoreleaseStack.m: Likewise. * examples/textcoding.m: Overhaul for new collection class scheme to improve distributed objects and NeXT-compatibility. * checks/Makefile.in (SRCS): Add nsmaptable.m and nshashtable.m. * checks/nsarchiver.m: Update for new Archiver classes. * checks/test01.m: Update for new collection classes. * doc/Makefile.in (TEXI_FILES): Add faq.texi. * doc/faq.texi: New file. * src/Foundation/NSGSet.h: Remove ivars, the behavior code now handles this. * src/Foundation/NSGDictionary.h: Likewise. * src/objects/Coder.h: Declare classes Encoder and Decoder; extensive rearrangement of ivars, method names and protocols. * src/objects/RetainingNotifier.h: Don't include * src/objects/Archiver.h: Subclass from Encoder and Decoder, not Coder. * src/Makefile.in (GNUSTEP_OTHER_SRCFILES): Add NSCallBacks.h. (GNUSTEP_HEADERS): Remove Foundation/NSCallBacks.h. * src/Makefile.in (CFLAGS): Remove -Wno-implicit. (GNU_MFILES): Remove BinaryTreeEltNode.m, LinkedListEltNode.m, RNTreeEltNode.m. Add Decoder.m, Encoder.m. Temporarily remove ConnectedCoder.m, Connection.m, RetainingNotifier.m, Time.m. (GNU_CFILES): Add allocs.c. (GNU_OBJS): Change order to create BASICS and CALLBACKS first. (GNU_HEADERS): Remove BinaryTreeEltNode.h, EltNode-h, EltNode-m, LinkedListEltNode.h, RBTreeEltNode.h. (GNUSTEP_MFILES): NSCallBacks.m. (GNUSTEP_HEADERS): Foundation/NSCallBacks.h. * Encoder.m, Decoder.m, NSCallBacks.m: New files. * objects/OrderedCollecting.h, objects/Enumerating.h, objects/Invoking.h, objects/CoderPrivate.h, objects/OrderedCollection.h: New files. * src/Coder.m: Move much of functionality to Encoder.m, Decoder.m, and objects/CoderPrivate.h. * src/Invocation.m ([Invocation -objectReturnValue]): New method. ([Invocation -intReturnValue]): New method. ([Invocation -returnValueIsTrue]): New method. ([Invocation -initWithTarget:selector:...]): Use switch statement to handle value arguments, instead of pointer-to-value arguments. * src/NSConcreteNumber.m ([NumberTemplate -hash]): New method. ([NumberTemplate -isEqual:]): New method. ([NumberTemplate -encodeWithCoder:]): Make this self-contained. ([NumberTemplate -initWithCoder:]): Likewise. * src/NSData.m: Fix typos. * src/Port.m ([Port -encodeWithCoder:]): Fix argument type. * src/OrderedCollection.m: Many fixes, continuing conversion from old IndexedCollection.m * src/NSValue.m ([NSValueDecoder +newWithCoder:]): Comment out for now; I think it needs fixes. ([NSValueDecoder -initWithCoder:]): Likewise. * src/NSNumber.m ([NSNumber -description]): New method. * src/callbacks-char_p.c, src/callbacks-id.m, src/callbacks-int.c, src/callbacks-int_p.c, src/callbacks-void_p.c, src/callbacks.c, src/hash.c, src/list.c, src/map.c, src/objects/allocs.h, src/objects/array.h, src/objects/callbacks.h, src/objects/data.h, src/objects/hash.h, src/objects/list.h, src/objects/map.h, src/objects/objects.h, src/x-basics.c.in, src/x-callbacks.c.in, src/NSHashTable .m, src/NSMapTable.m, src/Foundation/atoz.h, src/Foundation/NSMapTable.h, src/Foundation/NSHashTable.h: New version from Albin Jones, plus fixes by McCallum. Major overhaul of collection class heirarchy to improve distributed objects and NeXT-compatibility. Many classes entirely-reworked. More changes than I want to list here. * src/KeyedCollection.m, src/IndexedCollection.m, src/Heap.m, src/GapArray.m, src/Dictionary.m, src/Bag.m, src/Array.m, src/CircularArray.m, src/Collection.m, src/ConstantString.m, src/DelegatePool.m, src/MappedCollector.m, src/MutableString.m, src/MutableCString.m, src/Queue.m, src/RBTree.m, src/Set.m, src/SplayTree.m, src/Stack.m, src/objects/Array.h, src/objects/Bag.h, src/objects/BinaryTree.h, src/objects/BinaryTreeNode.h, src/objects/Collecting.h, src/objects/Collection.h, src/objects/CollectionPrivate.h, src/objects/Dictionary.h, src/objects/Heap.h, src/objects/IndexedCollecting.h, src/objects/IndexedCollection.h, src/objects/KeyedCollecting.h, src/objects/KeyedCollection.h, src/objects/LinkedList.h, src/objects/LinkedListNode.h, src/MallocAddress.m, src/objects/MappedCollector.h, src/MutableString.m, src/MutableCString.m, src/NSString.m, src/NSGSet.m, src/NSGCString.m, src/NSGDictionary.m, src/NSGCountedSet.m, src/NSGArray.m, src/NSGArchiver.m, src/objects/Queue.h, src/objects/Set.h, src/objects/SplayTree.h, src/objects/Stack.h, src/String.m: Overhaul for new collection class scheme to improve distributed objects and NeXT-compatibility. * src/DelegatePool.m: Overhaul for new collection class scheme to improve distributed objects and NeXT-compatibility. Change several methods to return void. * src/objects/DelegatePool.h: Change many method return types to void. Thu Feb 15 11:18:33 1996 Andrew McCallum * src/Makefile.in (GNU_MFILES): Removed EltNodeCollector.m. (GNU_HEADERS): Removed objects/EltNodeCollector.h. Wed Feb 14 12:23:12 1996 Andrew McCallum * Makefile.in (RCS_FILES): Add INSTALL.WIN32. * src/Makefile.in (RCS_FILES): Add Makefile.sed.nt. * checks/Makefile.in (RCS_FILES): Undo last change. * Makefile.in (RCS_FILES): Undo last change. Tue Feb 13 11:00:51 1996 Andrew McCallum * src/Makefile.in (GNU_MFILES): Added OrderedCollection.m. (GNU_HEADERS): Added objects/OrderedCollection.h and objects/OrderedCollecting.h. * checks/Makefile.in (RCS_FILES): Remove Makefile.sed.nt, (which, as I understand, is supposed to be automatically generated from Makefile.in by configure.bat). (SRCS): Fix typo. * Makefile.in (RCS_FILES): Remove Makefile.sed.nt, (which, as I understand, is supposed to be automatically generated from Makefile.in by configure.bat). * doc/install.texi: Mention objc.patch. * Makefile.in (DIST_FILES): Add objc.patch for thread-safe runtime. * src/RawCStream.m, objects/RawCStream.h: New files. * src/Makefile.in (GNU_MFILES): Added RawCStream.m. (GNU_HEADERS): Added objects/RawCStream.h. * checks/diningPhilosophers.m (main): Cast (int) to (id) in detachNewThread... call. * src/NSNotification.m, src/NSNotificationCenter.m, src/Foundation/NSNotification.h: New files from Georg Tuparev. * src/Makefile.in (GNUSTEP_MFILES): Added NSNotification.m and NSNotificationCenter.m from Georg Tuparev. (GNUSTEP_HEADERS): Added Foundation/NSNotification.h from Georg Tuparev. Mon Feb 5 10:08:56 1996 Scott Christley (scottc@net-community.com) * checks/diningPhilosophers.m: New file * checks/Makefile.in: add diningPhilosophers.m * src/Foundation/NSGeometry.h: Add NSZeroPoint, NSZeroSize, and NSZeroRect constants. Sun Feb 4 18:43:41 1996 Scott Christley (scottc@net-community.com) * checks/Makefile.sed.nt: New file * configure.bat: Added configuration of checks makefile * checks/Makefile.in (RCS_FILES): Add file Makefile.sed.nt Add $(EXEEXT), $(OEXT), $(LIBEXT) extensions * test01.m: Different random() for WIN32 * src/Foundation/NSZone.h: include Sat Feb 3 22:28:52 1996 Scott Christley (scottc@net-community.com) * src/NSLock.m: New file * src/Foundation/NSLock.h: New file * src/NSThread.m: New file * src/Foundation/NSThread.h: New file * src/Makefile.in (GNUSTEP_MFILES): Add NSLock.m, NSThread.m (GNUSTEP_HEADERS): Add Foundation/NSLock.h, Foundation/NSThread.h Fri Feb 2 15:44:20 1996 Scott Christley (scottc@net-community.com) * src/Makefile.in (uninstall): Only uninstall NEXTSTEP_HEADERS Thu Feb 1 19:42:09 1996 Scott Christley (scottc@net-community.com) * src/objects/SocketPort.h: Exclude non-existent headers for WIN32 * src/objects/Time.h: Likewise * src/SocketPort.m: Likewise * src/NSBundle.m: Likewise * src/objects/NSCoder.h: fixed mispelled file name * src/NSCoder.m: remove inclusion of non-existent file * src/Date.m: Exclude non-existent headers for WIN32 * src/NSProcessInfo.m: Likewise * src/find_exec.c: Likewise * Makefile.in (RCS_FILES): Add file configure.bat, Makefile.sed.nt Add $(EXEEXT), $(OEXT), $(LIBEXT) extensions * configure.bat: New file * Makefile.sed.nt: New file * src/Makefile.sed.nt: New file * src/objects/config-nt.h: New file * src/objects/config-nt.sed: New file * src/objc-load.c: Runtime include file changed "objc/list.h" to "objc/objc-list.h" * src/objects/stdobject.h.in: Likewise Mon Feb 12 22:03:05 1996 Andrew McCallum * src/Makefile.in: Fix patch rejects. (GNUSTEP_MFILES): Added NSHashTable.m and NSMapTable.m. (GNUSTEP_HEADERS): Added Foundation/NSHashTable.h and Foundation/NSMapTable.h. Mon Feb 12 21:14:58 1996 Albin L. Jones * src/Makefile.in (GNU_MFILES, GNU_CFILES, GNU_HEADERS): Added the above to the appropriate lists. (GNU_BASICS_CFILES): Created this variable to hold a list of `...-basics.c' files to be made. (GNU_BASICS_HFILES): Similarly. (GNU_CALLBACKS_CFILES): Created this variable to hold a list of `...-callbacks.c' files to be make. (GNU_CALLBACKS_HFILES): Similarly. (GNU_OTHER_SRCFILES): Needed to add `x-basics.c.in', `x-callbacks.c.in', `objects/x-basics.h.in' and `objects/x-callbacks.h.in' to this list. (GNUSTEP_HEADERS): Added `Foundation/atoz.h'. (%-basics.c, %-callbacks.c, objects/%-basics.h, objects/%-callbacks.h): Added these make targets. (array.o, data.o, hash.o, list.o, map.o, objects/array.h, objects/data.h, objects/hash.h, objects/list.h, objects/map.h): Added these make targets. * src/NSHashTable.m, src/NSMapTable.m, src/Foundation/NSHashTable.h, src/Foundation/NSMapTable.h, src/Foundation/atoz.h: Added these. * src/objects/abort.h, src/objects/allocs.h, src/objects/array.h, src/objects/bitops.h, src/objects/callbacks.h, src/objects/data.h, src/objects/hash.h, src/objects/list.h, src/objects/magic.h, src/objects/magic.h, src/objects/minmax.h, src/objects/number.h: Added these. * src/abort.c, src/allocs.c, src/array.c, src/atoz.m, src/callbacks-char_p.c, src/callbacks-id.m, src/callbacks-int.c, src/callbacks-int_p.c, src/callbacks-void_p.c, src/callbacks.c, src/hash.c, src/list.c, src/map.c, src/md5.c, src/md5.h, src/number.c: Added these. Mon Feb 12 20:50:05 1996 Andrew McCallum * checks/invocation.m: New file. * checks/Makefile.in (SRCS): Add invocation.m. * checks/nsarchiver.m: Add test case from Scott Christley. * src/Collection.m ([Collection -withObjectsInvoke:]): New method. * src/objects/Collection.h: Declare new method. * src/Invocation.m ([Invocation -invoke]): Terminate copy of encoding string. Deal with void return type. ([Invocation -invokeWithElement:]): Method removed. ([Invocation -invokeWithObject:]): Make is -subclassResponsibility. ([Invocation -getReturnValue:]): Make sure return_value is non-NULL. ([ArgframeInvocation -initWithArgframe:type:]): Use objc_calloc. ([MethodInvocation -initWithArgframe:selector:]): Try hard to get a selector with a type string. ([MethodInvocation -initWithTarget:selector:...]): New method. ([MethodInvocation -invoke]): Get the target and selector properly. ([MethodInvocation -invokeWithObject:]): New method. * src/objects/Invocation.h: Declare new methods. * src/NSArchiver.m ([NSUnarchiver +allocWithZone:]): New method. * src/Coder.m ([Coder -decodeObject]): Return the object. ([Coder -initForReadingWithData:]): New method. Thu Feb 1 17:04:17 1996 Andrew McCallum * NSData.m, NSDictionary.m, NSEnumerator.m, NSMutableData.m, Port.m, MutableString.m, NSArray.m: Use -subclassResponsibility instead of -notImplemented where appropriate. Wed Jan 31 22:29:57 1996 Andrew McCallum * Makefile.in (DIST_FILES): Add file STATUS. * src/Coder.m ([Coder -_coderCreateReferenceForObject:]): Beginning with this method, put in, but comment out, initial notes for ideas about "tag-less" coder streams; this will allow for smaller archives. Sat Jan 27 20:58:23 1996 Andrew McCallum * examples/textcoding.m (main): Use new Archiver and Unarchiver classes, use new method names. * src/objects/Coding.h (CommonCoding -closeCoding): Renamed from -coderCoder, so it is not so exclusively associated with the Coding class, but also all subclasses that implement a *Coding protocol. * src/Coder.m ([Coder -closeCoding]): Method renamed from -closeCoder. ([Coder +encodeRootObject:withName:toStream:]): Make -closeCoding name change. * src/Coder.m ([Coder +newReadingFromStream:]): Renamed from coderReadingFromStream:, because, for subclasses of Coder, it's silly to have different names for this method. Don't autorelease returned object (I also find this more helpful). All callers changed. ([Coder +newReadingFromFile:]): Likewise. * src/objects/Coder.h: Rename methods. * src/ConnectedCoder.m ([ConnectedCoder +newDecodingWithConnection:timeout:]): Rename coderReadingFromStream to newReadingFromStream, and don't retain. * src/Archiver.m: New file. * src/objects/Archiver.h: New file. * src/Makefile.in (GNU_MFILES): Add Archiver.m. (GNU_HEADERS): Add objects/Archiver.h. Fri Jan 26 10:48:30 1996 Andrew McCallum * Version (OBJECTS_SUBMINOR_VERSION): libobjects version 0.2.0. (OBJECTS_MINOR_VERSION): Version 2. * src/Makefile.in (GNU_HEADERS): Added CStreaming.h. * src/objects/objects.h: Include BinaryCStream.h and TextCStream.h, not the old *Coder.h versions. * src/objects/ConnectedCoder.h (Coder): Make subclass of Coder, not BinaryCoder. * src/TextCStream.m ([TextCStream -encodeValueOfCType:at:withName:]): Remove the asserts that prohibited structs and arrays. ([TextCStream -decodeValueOfCType:at:withName:]): Likewise. * src/BinaryCStream.m: Include the code for handling structs and arrays. * src/objects/Streaming.h: Include instead of . Update checks and examples * checks/server.m: Make it work with the new coding scheme. * checks/client.m: Likewise. * checks/pipes.m (main): Use NSString in -initWithPipeFrom argument. * checks/Makefile.in (SRCS): Remove test08.m, it was for old-style archiving. * examples/textcoding.m (main): Use new coding scheme and @"" strings properly. * examples/stdio-stream.m (main): Likewise. * src/ConnectedCoder.m ([ConnectedCoder +newDecodingWithConnection:timeout:]): Use +coderReadingFromStream, not the deprecated -initReadingFromStream. * src/BinaryCStream.m ([BinaryCStream -decodeName:]): Check for NULL name. * src/Connection.m: encodeObjectBycopy -> encodeBycopyObject (to better match NeXT). * src/Proxy.m: Likewise. * src/Coder.m ([Coder +initialize]): Make BinaryCStream the default, not TextCStream. * src/Coder.m ([Coder -encodeTag:]): Let the cstream handle it, if it can. ([Coder -decodeTag]): Likewise. ([Coder -encodeClass:]): Perform classname mapping ala encodeClassName:intoClassName. ([Coder -_doEncodeBycopyObject:]): Perform callbacks -replacementObjectForCoder, -replacementObjectForArchiver, -classForCoder, -classForArchiver. ([Coder -encodeClassName:intoClassName:]): Fix typos. ([Coder -encodeConditionalObject:]): Don't encode *forward* references, only backward references; apparently NeXT-style decoding (with -decodeObject, instead of GNU's decodeObjectAt:) can't handle them. * src/Foundation/NSArchiver.h: Move NSUnarchiver declaration here from NSUnarchiver.h. * src/NSGArchiver.m: Move implementation of NSGUnarchiver here from NSGUnarchiver.m. * src/Foundation/NSGArchiver.h: Remove ivars; behavior code now handles instance_size. Move NSGUnarchiver here from NSGUnarchiver.h. * src/NSArchiver.m: Move NSUnarchiver implementation here from NSUnarchiver.m. Use subclassResponsibility where correct. ([NSArchiver +initialize]): Make NSGArchiver the concrete class. * src/Makefile.in (GNUSTEP_MFILES): NSUnarchiver.m and NSGUnarchiver.m removed. (GNUSTEP_HEADERS): Foundation/NSUnarchiver.h and Foundation/NSGUnarchiver.h removed. * src/Foundation/NSObject.h ([NSObject -classForArchiver]): Method removed; it's now in NSArchiver.m. ([NSObject -replacementObjectForArchiver:]): Likewise. * src/ConnectedCoder.m (Object (ConnectedCoderCallbacks)): Category methods moved here from Coder.m. * checks/nsarchiver.m (main): Use NSUnarchiver properly. * src/NSException.m (NSInconsistentArchiveException): String removed; it's in NSArchiver.m. * src/NSGArchiver.m ([NSGArchiver +initialize]): Add the behavior of the Coder class. All other methods deleted. * src/NSObject.m: Some minor formatting changes. ([NSObject -classForArchiver]): Method removed; it's in NSArchiver.m. ([NSObject -replacementObjectForArchiver:]): Likewise. * src/Makefile.in (GNUSTEP_MFILES): Remove NSGCoder.m. (GNUSTEP_HEADERS): Remove Foundation/NSGCoder.h. Make use of new behavior size matching to avoid ugliness of forcing ivar layout match when adding behaviors---more robust. * src/NSGArray.m (self): New macro, cast to (Array*) to reflect behavior addition. ([NSGArray -initWithObjects:count:]): Call Array designated initalizer instead of accessing ivars directly. ([NSGMutableArray -initWithCapacity:]): Likewise. ([NSGArray -count]): Method removed, Array behavior will take care of it. ([NSGArray -objectAtIndex:]): Use self to access ivars. * src/Foundation/NSGArray.h: Remove ivars; class_add_behavior now handles instance_size match. * src/behavior.c (class_add_behavior): If necessary, increase instance_size of class to which behavior is being added. Thu Jan 25 10:11:41 1996 Andrew McCallum * src/NSArchiver.m ([NSArchiver +initialize]): Set concrete class to Coder. ([NSArchiver +allocWithZone:]): New method. ([NSArchiver -initForWritingWithMutableData:]): Make this a subclass responsibility. ([NSArchiver -versionForClassName:]): New method. ([NSArchiver +unarchiveObjectWithData:data]): New method. ([NSArchiver +unarchiveObjectWithFile:path]): Call concrete class. ([NSArchiver +classNameEncodedForTrueClassName:]): Likewise. * src/Foundation/NSArchiver.h: Declare new methods. * src/Foundation/NSCoder.h: Fix spelling of argument names. * src/Foundation/NSSet.h: Fix typo, initWithObjects: takes objects, not NSArray's. * src/NSGData.m ([NSGData -writeToFile:atomically:]): Use cStringNoCopy for efficiency. * src/MemoryStream.m ([MemoryStream -init]): New method, otherwise naive creation dies with NULL buffer. * src/objects/Coding.h (Coding -cStream): New method. (Coder -encodeArrayOfObjCType:count:at:withName:): Renamed from -encodeArrayOfObjCType:at:count:withName:, to better match NeXT. (Coder -decodeArrayOfObjCType:count:at:withName:): Likewise. * src/objects/Coder.h (zone): New ivar. * src/Coder.m ([Coder -_initWithCStream:formatVersion:isDecoding:]): Initialize new zone ivar. ([Coder -encodeBycopyObject:withName:]): Renamed from -encodeObjectBycopy, to better match NeXT. ([Coder -decodeObjectAt::name]): Use zone ivar in creating decoded objects. ([Coder -encodeArrayOfObjCType:count:at:withName:]): Renamed from -encodeArrayOfObjCType:at:count:withName:, to better match NeXT. ([Coder -decodeArrayOfObjCType:count:at:withName:]): Likewise. ([Coder +classNameEncodedForTrueClassName:trueName]): New method, for NSCoder compatibility. ([Coder -encodeClassName:trueNameintoClassName:]): Likewise. ([Coder -objectZone]): Likewise. ([Coder -setObjectZone:]): Likewise. ([Coder -encodeValueOfObjCType:at:]): Likewise. ([Coder -encodeArrayOfObjCType:count:at:]): Likewise. ([Coder -encodeBycopyObject:]): Likewise. ([Coder -encodeConditionalObject:]): Likewise. ([Coder -encodeDataObject:]): Likewise. ([Coder -encodeObject:]): Likewise. ([Coder -encodePoint:]): Likewise. ([Coder -encodeRect:]): Likewise. ([Coder -encodeRootObject:]): Likewise. ([Coder -encodeSize:]): Likewise. ([Coder -encodeValuesOfObjCTypes:...:]): Likewise. ([Coder -decodeValueOfObjCType:at:]): Likewise. ([Coder -decodeArrayOfObjCType:count:at:]): Likewise. ([Coder -decodeDataObject]): Likewise. ([Coder -decodeObject]): Likewise. ([Coder -decodePropertyList]): Likewise. ([Coder -decodePoint]): Likewise. ([Coder -decodeRect]): Likewise. ([Coder -decodeSize]): Likewise. ([Coder -decodeValuesOfObjCTypes:...:]): Likewise. ([Coder -systemVersion]): Likewise. ([Coder -versionForClassName:]): Likewise. ([Coder -initForWritingWithMutableData:]): New method, for NSArchiver compatibility. ([Coder +archivedDataWithRootObject:]): Likewise. ([Coder +archiveRootObject:toFile:]): Likewise. ([Coder +unarchiveObjectWithData:data]): Likewise. ([Coder +unarchiveObjectWithFile:path]): Likewise. ([Coder -archiverData]): Likewise. ([Coder -cStream]): New method. * checks/Makefile.in (SRCS): Added nsarchiver.m. * checks/nsarchiver.m: New file. * examples/textcoding.m (main): Use new [Coder -closeCoder] method. * src/StdioStream.m ([StdioStream -isClosed]): Remove bad implementation; currently not implemented. * src/Coder.m ([Coder -initForWritingToStream:withFormatVersion:cStreamClass: cStreamFormatVersion:]): New method. ([Coder -initForWritingToFile:withFormatVersion:cStreamClass: cStreamFormatVersion:]): New method. ([Coder -initForWritingToFile:filenamewithCStreamClass:cStreamClass]): New method. ([Coder +encodeRootObject:withName:nametoStream:]): New method. ([Coder +encodeRootObject:withName:nametoFile:filename]): New method. ([Coder +decodeObjectWithName:namefromStream:]): New method. ([Coder +decodeObjectWithName:namefromFile:filename]): New method. * src/objects/Coder.h: Declare new methods. * src/CStream.m: Use "..withFormatVersion" instead of "formatVersion" in several method names. * src/objects/CStream.h: Declare new method. * src/objects/Coding.h (Coding -closeCoder): New protocol method. (Coding -isClosed): New protocol method. * src/Coder.m ([Coder -initForReadingFromFile:filename]): New method. ([Coder -initForWritingToFile:filename]): New method. ([Coder -closeCoder]): New method. ([Coder -isClosed]): New method. * src/objects/Streaming.h (Streaming -isClosed): New protocol method. * src/Stream.m ([Stream -flushStream]): Do nothing, instead of calling -subclassResponsibility. ([Stream -closeStream]): Likewise. ([Stream -isClosed]): New method, return NO. * src/MemoryStream.m ([MemoryStream -flushStream]): Method removed. * src/StdioStream.m ([StdioStream -isClosed]): New method. * src/MemoryStream.m ([MemoryStream -closeStream]): New method, just flush the stream. Wed Jan 24 09:02:02 1996 Andrew McCallum * src/objects/Streaming.h (Streaming -closeStream): New method; we must separate the idea of "closing" a stream and "deallocating" a stream because of delays in deallocation due to -autorelease. * src/Stream.m ([Stream -closeStream]): New method. * src/StdioStream.m ([StdioStream -closeStream]): New method. * src/CStream.m ([CStream -encodeWithName:valuesOfCTypes:...]): New method. ([CStream -decodeWithName:valuesOfCTypes:...]): New method. * src/objects/CStreaming.h: Declare new methods. * src/String.m ([String -initWithCStringNoCopy:freeWhenDone:]): New method, needed for protocol. * src/Stream.m ([Stream -writeFormat:arguments:]): New method. ([Stream -readFormat:arguments:]): New method. * src/Coder.m (SIGNATURE_FORMAT_STRING): New macro. ([Coder -writeSignature]): Use it. ([Coder +readSignatureFromCStream:getClassname:formatVersion:]): Likewise, and receive (char*) instead of (char**). All callers changed. * src/objects/EltNode-m: Include for @"" in encoding withName:. Use constant string objects instead of C strings where appropriate. * src/Connection.m: Use constant string objects instead of C strings where appropriate. * src/RBTreeNode.m: Include for @"" in encoding withName:. * src/DelegatePool.m: Likewise. * src/BinaryTreeNode.m: Likewise. Tue Jan 23 11:54:54 1996 Andrew McCallum * Set.m, SocketPort.m, TreeNode.m, EltNodeCollector.m, LinkedListNode.m, MutableCString.m, NSGCString.m, Proxy.m, RBTreeNode.m, BinaryCoder.m, BinaryTreeNode.m, Collection.m, Connection.m, DelegatePool.m: Use string objects instead of C strings for name arguments to encoding methods. * src/.cvsignore: Add errs*. * examples/textcoding.m: Update for new Coder organization. * src/objects/Streaming.h (Streaming -writeFormat:arguments:): New method. (Streaming -readFormat:arguments:): New method. * src/objects/Coding.h: Don't include (Coding -encodeValueOfCType:at:withName:): New method. (Coding -decodeValueOfCType:at:withName:): New method. * src/objects/Coder.h: Declare new methods. * src/objects/CStreaming.h: New file. * src/CStream.m: New file. * src/objects/CStream.h: New file. * src/TextCStream.m: New file. * src/objects/TextCStream.h: New file. * src/BinaryCStream.m: New file. * src/objects/BinaryCStream.h: New file. * src/Makefile.in (GNU_MFILES): Add BinaryCStream.m, TextCStream.m and CStream.m. (GNU_HEADERS): Add objects/BinaryCStream.h, objects/TextCStream.h and objects/CStream.h. * src/NSString.m (handle_printf_atsign): Fix type for va_arg (). * src/ConnectedCoder.m ([ConnectedCoder +newEncodingWithConnection:sequenceNumber:identifier:]): Use new Coder initializer. ([ConnectedCoder +newDecodingWithConnection:timeout:]): Likewise. ([ConnectedCoder -dismiss]): Fix typo: use cstream ivar. * src/Coder.m ([Coder -writeSignature]): Write directly to stream ivar. ([Coder +readSignatureFromCStream:getClassname:formatVersion:]): Likewise. ([Coder -initForReadingFromStream:s]): New method. ([Coder -initForWritingToStream:s]): New method. ([Coder +coderWritingToStream:]): New method. ([Coder +coderWritingToFile:]): New method. * src/KeyedCollection.m: Use and protocols in argument types. * src/IndexedCollection.m: Likewise. * src/BinaryTree.m: Likewise. * src/Array.m: Likewise. * src/Makefile.in (GNU_MFILES): Remove BinaryCoder.m. and TextCoder.m (GNU_HEADERS): Remove objects/BinaryCoder.h and objects/TextCoder.h. * src/Proxy.m, src/RBTreeNode.m, src/Set.m, src/SocketPort.m, src/TextCoder.m, src/argframe.m, src/IndexedCollection.m, src/KeyedCollection.m, src/MutableCString.m, src/NSGCString.m, src/NSGCoder.m, src/NXConnection.m, src/Collection.m, src/ConnectedCoder.m, src/Connection.m, src/DelegatePool.m, src/EltNodeCollector.m, src/Array.m, src/BinaryCoder.m: Use new-style method name "..ValueOfObjCType" and "..ValueOfCType", instead of "..ValueOfType" and "..ValueOfSimpleType". * src/NSString.m: This new code, #if HAVE_REGISTER_PRINTF_FUNCTION, a function defined by GNU libc. (handle_printf_atsign): New function to handle %@ in printf strings. ([NSString +initialize]): Register the new printf-handler function. * configure.in (register_printf_function): Check for this function. * src/objects/Coding.h: Use new-style method name "..ValueOfObjCType", instead of "..ValueOfType". Use (id ) instead of (char *) where appropriate. (Encoding -initEncodingOnStream:): Method removed. (Encoding -initEncoding): Method removed. (Encoding -encodeValueOfSimpleType:at:withName:): Method removed. (Decoding -initDecodingOnStream:): Method removed. (Decoding -initDecoding): Method removed. (Decoding -decodeValueOfSimpleType:at:withName:): Method removed. (CommonCoding +defaultFormatVersion): New method. * src/Stream.m ([Stream -rewindStream]): Move method lower in file, to avoid undeclared error. (This is related to creation of SeekableStream protocol.) * src/objects/Streaming.h (Streaming): Include NSObject protocol in Streaming protocol, so we can use NSObject methods on arguments passed with type. * src/StdioStream.m: Use (id ) instead of (char *) where appropriate. ([StdioStream +streamWithFilename:fmode:]): New method. * src/objects/StdioStream.h: Declare new methods. * src/NSCoder.m ([NSCoder -encodeObject:]): Base on -encodeValueOfObjCType, not -encodeValuesOfObjCTypes. * src/Coder.m: Now uses a CStream instance for low-level encoding of variables of C type. Include many more files. Use new-style method name "..ValueOfObjCType", instead of "..ValueOfType". Use (id ) instead of (char *) where appropriate. (DEFAULT_FORMAT_VERSION): Renamed from CODER_FORMAT_VERSION. (default_stream_class): Renamed from defaultStreamClass; (default_cstream_class): New static variable. ([Coder +initialize]): Initialize above two variables. ([Coder +setDefaultCStreamClass:]): New method. ([Coder +defaultCStreamClass]): New method. ([Coder +setDefaultStreamClass:]): New method. ([Coder +defaultStreamClass]): New method. ([Coder +defaultFormatVersion]): New method. ([Coder -writeSignature]): New method, replaces -encodeSignature. ([Coder +readSignatureFromCStream:getClassname:formatVersion:]): New method, replaces decodeSignature. ([Coder -_initWithCStream:formatVersion:isDecoding:f]): New method, replaces _initWithStream:isDecoding. ([Coder +coderReadingFromStream:stream]): New method. ([Coder +coderReadingFromFile:filename]): New method. ([Coder -initForReadingFromStream:formatVersion:]): New method. ([Coder -initForWritingToStream:sformatVersion:version]): New method. ([Coder +decodeObjectFromStream:]): New method. ([Coder +decodeObjectFromFile:filename]): New method. ([Coder -initEncodingOnStream:]): Method removed. ([Coder -initDecodingOnStream:]): Method removed. ([Coder -initEncoding:]): Method removed. ([Coder -initDecoding:]): Method removed. ([Coder -encodeBytes:count:withName:]): Now unimplemented. ([Coder -decodeBytes:count:withName:name]): Likewise. ([Coder -decodeValueOfCType:at:withName:]): New method. ([Coder -encodeValueOfCType:at:withName:]): New method. ([Coder -encodeValueOfObjCType:at:withName:name]): Now longer handles arrays and structs; those are now handled in a CStream method. ([Coder -decodeValueOfObjCType:at:withName:]): Likewise. ([Coder -encodeValueOfSimpleType:at:withName:]): Method removed. ([Coder -decodeValueOfSimpleType:at:withName:]): Method removed. ([Coder -encodeIndent]): Call cstream to handle this, instead of doing nothing. ([Coder -encodeUnindent]): Likewise. ([Coder -decodeIndent]): Likewise. ([Coder -decodeUnindent]): Likewise. ([Coder -encodeName:]): Likewise. ([Coder -decodeName:]): Likewise. ([Coder -formatVersion]): Method renamed from coderFormatVersion. * src/objects/Coder.h: Declare new methods. (cstream): New ivar, replacing "stream". (classname_map): New ivar, but not yet used properly. (concrete_format_version): ivar removed, this is now in the CStream classes. * src/CString.m: Use new-style method name "..ValueOfObjCType", instead of "..ValueOfType". ([CString -initWithCStringNoCopy:freeWhenDone:]): Cast away const type. * src/Stream.m ([Stream -writeLine:]): Replace with more efficient implementation from MemoryStream class. * src/MemoryStream.m: Use (id ) instead of (char *) where appropriate. ([MemoryStream -writeLine:]): Remove method. * src/objects/Collection.h: Don't include ; this helps prevent circular dependances in include files. * src/NSGCString.m ([NSGCString -cStringNoCopy]): New method. * src/CString.m ([CString -cStringNoCopy]): New method. * src/String.m: Use -subclassReponsibility instead of -notImplemented in proper places. ([String -cStringNoCopy]): New method. * src/objects/String.h: Declare new method. * src/Stream.m: Use string object types instead of C-string types in method arguments. Use -subclassReponsibility instead of -notImplemented. * src/objects/Streaming.h (Streaming): Use string object types instead of C-string types in method arguments. * src/CString.m ([CString -initWithCStringNoCopy:freeWhenDone:]): New method. * src/String.m ([String +stringWithCStringNoCopy:freeWhenDone:f]): New method. ([String +stringWithCStringNoCopy:]): New method. * src/objects/String.h: Declare new methods. * src/Coder.m: Don't use ivar interconnected_stack_height. (DOING_ROOT_OBJECT): New macro, defined based on interconnected_stack_height. * src/objects/Coder.h (Coder): Get rid of unnecessary ivar doing_root_object; we can get the same information from ivar interconnected_stack_height. Mon Jan 22 21:32:25 1996 Andrew McCallum * src/NSCoder.m ([NSCoder -encodeObject:]): Implemented. ([NSCoder -decodeObject]): Implemented. ([NSCoder -encodeValueOfObjCType:at:]): Use -subclassResponsibility, not -notImplemented. ([NSCoder -decodeValueOfObjCType:at:]): Likewise. ([NSCoder -encodeDataObject:]): Likewise. ([NSCoder -decodeDataObject]): Likewise. ([NSCoder -versionForClassName:]): Likewise. Mon Jan 22 11:08:55 1996 Andrew McCallum * Version (OBJECTS_SUBMINOR_VERSION): libobjects version 0.1.19. Sat Jan 20 14:27:57 1996 Andrew McCallum * doc/install.texi: Mention GNU/Linux and the need for -lieee. * aclocal.m4: Don't have the initializer-loading test program print anything. (OBJC_SYS_DYNAMIC_FLAGS): Use '' not "" to quote $(CC). Fri Jan 19 12:40:49 1996 Adam Fedor * src/NSBundle.m (objc_executable_location): New function. ([NSBundle +mainBundle]): Get path from NSProcessInfo. * src/NSProcessInfo.m: Remove NSArgv definition. (_gnu_process_args): Remove NSArgv code. * src/objc-load.c: Remove NSArgv declaration. (objc_executable_location): Removed function. (objc_initialize_loading): Make path const char*. * src/Foundation/objc-load.h: Remove objc_executable_location function declaration. * src/objc/HashTable.h: Include stdobjects.h header for LibObjectsMain definition. Fri Jan 19 10:43:32 1996 Andrew McCallum * Version (OBJECTS_SUBMINOR_VERSION): libobjects version 0.1.18. * configure.in (OBJS_INSTALL): Fix typo NeXT_OBJS -> NEXTSTEP_OBJS in when running under NeXTSTEP, but not using NeXT runtime. (Reported by Satoshi Adachi .) * src/NSString.m ([NSString -initWithCString:length:]): Handle case of NULL cString. ([NSString -initWithCString:]): Likewise. (Reported by Adam Fedor .) * src/find_exec.c (objc_find_executable): Make NSBundle work even when CWD isn't in PATH. (Fix provided by Matthias Klose .) * src/Makefile.in (libobjects.so.$OBJECTS_VERSION)): Re-add the -Wl,-soname,libobjects.so.$(OBJECTS_MAJOR_VERSION) argument. Create a soft link named libobjects.so. (install): Install a soft link named libobjects.so. (Fixes sent by Jeremy Bettis .) * Makefile.in: Remove -$(MAKEFLAGS) as argument to recursive calls of $(MAKE); this happens automatically. (Reported by Niels Mvller .) Tue Jan 16 19:33:49 1996 Andrew McCallum * Version (OBJECTS_SUBMINOR_VERSION): libobjects version 0.1.17. Tue Jan 16 13:57:51 1996 Adam Fedor * aclocal.m4 (OBJC_SYS_AUTOLOAD): Define CON_AUTOLOAD if /usr/include/elf.h exists. Use yes/no rather than 1/0. * src/objc-load.c: Update copyright. (objc_load_module): Use CON_AUTOLOAD instead of SYS_AUTOLOAD. Tue Jan 16 12:24:59 1996 Andrew McCallum * src/Makefile.in (HEADERS_INSTALL): Remove objects/config.h. (install): Look for libobjects.so file, not just for configure variable. Remove unwanted `;'. Install objects/config.h from build directory. (Fixes provided by Matthias Klose ). Mon Jan 15 17:07:38 1996 Andrew McCallum * Version (OBJECTS_SUBMINOR_VERSION): libobjects version 0.1.16. (OBJECTS_GCC_VERSION): Updated from 2.7.0 to 2.7.2. (OBJECTS_FTP_MACHINE): Changed to prep. (OBJECTS_FTP_DIRECTORY): Changed to pub/gnu. * NSCharacterSets/Makefile.in (install): Prefix data files with $(srcdir). (Makefile): New target. * src/Makefile.in ($(NSVALUE_MFILES)): Use sed instead of expr to extract number. ($(NSNUMBER_MFILES)): Likewise. * checks/Makefile.in (all): Remove target `bundles' for now; linking them doesn't always work. If people want to test bundles, they can type `make bundles'. * examples/Makefile.in (ALL_CPPFLAGS): -I../src, not -I. (Makefile): Prefix dependancy with $(srcdir). * checks/Makefile.in (ALL_CPPFLAGS): -I../src, not -I. (Makefile): Prefix dependancy with $(srcdir). * Makefile.in (dist): Add -9 to gzip args. (snapshot): Likewise. * doc/install.texi: Remove --enable-shared from first example of installation commands; many people were just copying these commands, ignorant of whether or not their system supported dynamically-linked shared libraries. * checks/Makefile.in: Remove test09; it doesn't work, but it doesn't matter. (SRCS): Remove test09.m. (test09): Remove target. * aclocal.m4: Test whether loading of contructor functions works by actually compiling and running a program, not by looking for /usr/include/elf.h. Tue Jan 16 00:31:19 1996 Gregor Hoffleit * src/NSDate.m ([NSDate -description]): replace strftime() with sprintf() equivalent for NEXTSTEP. Mon Jan 15 15:11:18 1996 Adam Fedor * aclocal.m4 (OBJC_SYS_DYNAMIC_LINKER): Expand macro correctly in dld/defs.h check. Fri Jan 12 11:38:58 1996 Andrew McCallum * examples/Makefile.in (LIBS): Added -lm. * src/NSProcessInfo.m ([NSProcessInfo -globallyUniqueString]): Don't use the %@ printf format directive, since it isn't implemented yet; use %s and -cString instead. (Reported by Gregor Hoffleit .) * aclocal.m4 (OBJC_SYS_AUTOLOAD): Don't define SYS_AUTOLOAD #ifdef mips, gcc doesn't support it, even though elf.h exists. (Perhaps this should be "sgi" instead of "mips"?) * src/NSProcessInfo.m: Don't test !(sgi), since SYS_AUTOLOAD is fixed. * src/find_exec.c (objc_find_executable): #ifdef NeXT, use getwd() instead of getcwd(). (Reported by Gregor Hoffleit .) * src/NSDate.m ([NSDate -description]): Don't use strftime #ifdef NeXT. (Reported by Gregor Hoffleit .) * src/Makefile.in (objects/stdobjects.h): prepend objects/stdobjects.h.in with $(srcdir). * checks/Makefile.in ($(DYNAMIC_OFILES)): Use $(srcdir). ($(BUNDLE_NAMEJ)): Likewise. (Reported by Matthias Klose .) * src/Makefile.in (NXStringTable_scan.o): Removed target; let pattern rule take care of it. ($(NSVALUE_MFILES)): Use $@ instead of $* in expr argument. ($(NSNUMBER_MFILES)): Likewise. (Reported by .) * src/NSMethodSignature.m ([NSMethodSignature +signatureWithObjCTypes:]): Fix typo: change objc_size_of_type to objc_sizeof_type. (Reported by Gregor Hoffleit .) * src/Makefile.in (libobjects.so.$(OBJECTS_VERSION)): Removed "-Wl,-soname,libobjects.so.$(OBJECTS_VERSION)"; gcc does this automatically. (Reported by Matthias Klose .) * src/NSProcessInfo.m: Include for MAXHOSTNAMELEN. (Reported by Matthias Klose .) * src/Makefile.in (ALL_INCLUDE_FLAGS): Add -I. for objects/config.h. (Reported by Matthias Klose ) * checks/Makefile.in (ALL_CPPFLAGS): Likewise. * examples/Makefile.in (ALL_CPPFLAGS): Likewise. Wed Jan 10 10:51:26 1996 Andrew McCallum * src/NSProcessInfo.m: Remove #if NeXT and alternate #include's. * src/Foundation/NSProcessInfo.h: Likewise. (These caused problems reported by John Boller .) * src/Invocation.m ([MethodInvocation -initWithSelector:arguments:]): New method, not implemented. Tue Jan 9 14:07:36 1996 Andrew McCallum * src/Storage.m ([Storage -insertElement:at:]): Increment numElements. (Reported by Revuz Dominique ). * Makefile.in (RCS_FILES): Remove out-of-date MACHINES and CREDITS files. Mon Jan 8 11:05:52 1996 Andrew McCallum * Version (OBJECTS_SUBMINOR_VERSION): Version 0.1.15. * src/NSProcessInfo.m (_GNU_MAX_HOST_NAMELEN): Macro removed; using MAXHOSTNAMELEN from instead. All users changed. (_gnu_process_args): Malloc and fill NSArgv; assignment of char** from *char[] isn't right. * src/NSGCString.m ([NSGCString -emptyCopy]): Use [super emptyCopy], not [super allocCopy]. * src/String.m ([String -emptyCopy]): Method removed; super class implementation is fine. ([String -initWithCString:range:]): Use -subclassResponsibility:, not -notImplemented:. ([String -empty]): Likewise. * configure.in: Remove double-quotes in help string of --enable-shared handling. Sun Jan 7 16:05:04 1996 Andrew McCallum * src/Makefile.in: Changed rules for compiling concrete NSValue and NSNumber classes; the old version no longer worked with shared library compilation, and didn't use the common pattern rule for making the object file. (NSNUMBER_CLUSTER, NSVALUE_CLUSTER): Variables removed. (NSVALUE_MFILES): New variable, replacing NSVALUE_OFILES. (NSNUMBER_MFILES): New variable, replacing NSNUMBER_OFILES. (GNUSTEP_OBJS): Use new vars. Fri Jan 5 17:01:35 1996 Andrew McCallum Clean up shared library building. Building from another directory now works. * configure.in: Add $srcdir where necessary. (LIBOBJECTS_A_OR_SO): Variable removed. (LIBOBJECTS_SO): Defined according to --enabled-shared flag. * src/Makefile.in: (Makeconf): Include it after system configuration section, and from $(srcdir). (SHAREDLIB_CFLAGS, SHAREDLIB_ARFLAGS, USING_SHAREDLIB_CFLAGS, USING_SHAREDLIB_ARFLAGS): Variables removed. (ALL_CFLAGS, ALL_OBJCFLAGS): Don't use removed vars. (%_pic.o: %.m): New pattern rule. (%_pic.o: %.c): New pattern rule. (all): Always build libobjects.a, optionally build .so version. (libobjects.so): Use -shared. Link to ..$(OBJECTS_MAJOR_VERSION). (install): Always install libobjects, optionally install .so version. Install the headers from the $(srcdir). (NSVALUE_OFILES, NSNUMBER_OFILES, NXStringTable_scan.c, dynamic-load.h): Use $(srcdir) properly for these targets. * checks/Makefile.in: Executables now depend on libobjects.a, not @LIBOBJECTS_A_OR_SO@. (LIBS): Don't look in $(srcdir) for library. (copy-dist): Don't use $(srcdir). (Makefile): Likewise. * examples/Makefile.in: Executables now depend on libobjects.a, not @LIBOBJECTS_A_OR_SO@. (LIBS): Don't look in $(srcdir) for library. (OBJECTS_NEXT_INCLUDES): Don't look in non-existant next-includes dir. (copy-dist): Don't use $(srcdir). (Makefile): Likewise. * doc/Makefile.in (TEXT_FILES): New variable. (info): Use it. (MAKEINFO_FLAGS): New variable. Use it in TEXT_FILES targets. (DIST_FILES): Remove version.texi. (clean): rm version.texi and $(TEXT_FILES). * src/NSProcessInfo.m (_gnu_process_args): Use "char **argv" instead of "char *argv[]". Remove cast in assignment of NSArgv. Thu Jan 4 23:12:11 1996 Andrew McCallum * src/Set.m ([Set -removeElement:ifAbsentCall:]): Fix typo; method renamed from -removeElement:ifAbsent:. (Reported by Albert Mietus .) Wed Dec 20 11:30:37 1995 Adam Fedor * src/NSGeometry.m (NSMouseInRect): Handle flipped y-axis. * src/Foundation/NSException.h: Include NSString interface. Fri Nov 24 15:09:22 1995 Andrew McCallum * src/NSArray.m ([NSMutableArray -addObject:]): Use -subclassResponsibility:, not -notImplemented:. ([NSMutableArray -replaceObjectAtIndex:withObject:]): Likewise. ([NSMutableArray -insertObject:atIndex:]): Likewise. ([NSMutableArray -removeObjectAtIndex:]): Likewise. ([NSMutableArray -removeAllObjects]): Likewise. Sun Nov 19 15:29:41 1995 Andrew McCallum * src/NSString.m ([NSString +allocWithZone:]): New method. ([NSString +stringWithCString:byteString]): Use it. ([NSString +stringWithCString:length:]): Likewise. ([NSString +stringWithFormat:]): Likewise. ([NSString +stringWithFormat:arguments:]): Likewise. ([NSMutableString +allocWithZone:]): New method. ([NSMutableString +stringWithCapacity:]): Use it. ([NSMutableString +stringWithCString:length:]): Likewise. Tue Nov 14 11:39:41 1995 Andrew McCallum Some improvement to shared lib support, but since I can't test it, I still don't know if it works. * src/Makefile.in (CFLAGS): Added -O. (SHAREDLIB_CFLAGS,SHAREDLIB_ARFLAGS): Set values here, not in configure.in. (USING_SHAREDLIB_CFLAGS,USING_SHAREDLIB_ARFLAGS): New vars, set by configure. (ALL_CFLAGS, ALL_OBJCFLAGS): Use them. (libobjects.so.$(OBJECTS_VERSION): New target, replacing libobjects.so. Use version numbers. (install): Try to do the right thing with shared/non-shared libs. * configure.in: Update shared library variable names. * checks/Makefile.in: Use configure var, not libobjects.a. Include ../Version. * examples/Makefile.in: Use configure var, not non-existant Makefile var. Include ../Version. Mon Nov 6 12:24:16 1995 Andrew McCallum Shared library support; I'm not sure it works, though. * configure.in: Look for --enabled-shared. (LIBOBJECTS_A_OR_SO, SHAREDLIB_CFLAGS, SHAREDLIB_ARFLAGS): New substitutions. * src/Makefile.in (SHAREDLIB_CFLAGS): New variable. (ALL_CFLAGS): Use it. (ALL_OBJCFLAGS): Likewise. (SHAREDLIB_ARFLAGS): New variable. (libobjects.so): Use it; new target. (all): Depend on configure variable. (install): Changes to install shared library. * examples/Makefile.in: Look for LIBOBJECTS_A_OR_SO, not libobjects.a. * src/NSProcessInfo.m (NSArgv): New global. (_gnu_process_args): Set it. * NSMethodSignature.m: New file; not finished, though. * src/Makefile.in (GNUSTEP_MFILES): Added NSMethodSignature.m. * src/Foundation/NSMethodSignature.h (NSArgumentInfo): Declared. ([NSMethodSignature -argumentInfoAtIndex:]): Uncommented. * doc/install.texi: Warn them that compiling in a different directory than the source will not currently work. Fri Nov 3 11:12:11 1995 Andrew McCallum * src/NSDictionary.m ([NSDictionary +dictionary]): Use +alloc, not _concreteClass. This makes [NSMutableDictionary +dictionary] and friends do the right thing. ([NSDictionary +dictionaryWithObjects:forKeys:count:]): Likewise. ([NSMutableDictionary +dictionaryWithCapacity:]): Likewise. (Problem reported by Kim Shrier .) * src/NSSet.m ([NSSet +set]): Use +alloc, not _concreteClass. This makes [NSMutableSet +set] and friends do the right thing. ([NSSet +setWithObjects:count:]): Likewise. ([NSSet +setWithArray:]): Likewise. ([NSSet +setWithObject:]): Likewise. ([NSSet +setWithObjects:]): Likewise. ([NSMutableSet +setWithCapacity:]): Likewise. * src/NSArray.m ([NSArray +array]): Use +alloc, not _concreteClass. This makes [NSMutableArray +array] and friends do the right thing. ([NSArray +arrayWithObjects:]): Likewise. ([NSMutableArray +arrayWithCapacity:]): Likewise. ([NSArray +arrayWithObject:]): Likewise; and fix condition on exception. * src/NSProcessInfo.m ([NSProcessInfo -hostName]): Remove unnecessary inefficiency: use stack to hold temporary string, not malloc/free; just return the string, not a copy. Conform to GNU coding standards in use of braces. ([NSProcessInfo -processName]): Likewise. Just return the string, not a copy. ([NSProcessInfo -environment]): Likewise. ([NSProcessInfo -arguments]): Likewise. (_gnu_arguments, _gnu_environment): Make them constant classes, not mutable. (_gnu_process_args): Alloc _gnu_processName NSString, don't get an autoreleased string and then retain it. Initialize _gnu_arguments as a constant NSArray, not NSMutableArray. Initialize _gnu_environment as a constant NSDictionary, not NSMutableDictionary. Conform to the GNU coding standards in use of braces. * src/Foundation/NSDictionary.h ([NSDictionary -initWithObjects:forKeys:]): Declare method. This is called dissertation-procrastination. Sun Oct 29 19:41:16 1995 Andrew McCallum * checks/nsset.m: New file. * checks/Makefile.in (SRCS): Added nsset.m. (nsset): New target. * src/NSGArray.m ([NSGArray -objectAtIndex:]): Fix condition on exception. * src/objects/NSSet.h: Moved method declarations from NSMutableSet to NSSet. * NSCountedSet.m, NSGCountedSet.m: New files. * src/objects/NSSet.h: Added NSCountedSet interface. * src/Foundation/NSSet.h: Likewise. * src/Foundation/NSGSet.h: Added NSGCountedSet interface. * src/NSGSet.m: Implemented many methods. * src/Makefile.in (GNUSTEP_MFILES): Added NSCountedSet.m and NSGCountedSet.m. * src/NSArray.m ([NSArray -objectEnumerator]): Autorelease it. ([NSArray -reverseObjectEnumerator]): Likewise. * src/NSGDictionary.m ([NSGDictionary -keyEnumerator]): Autorelease it. ([NSGDictionary -objectEnumerator]): Likewise. Wed Oct 25 20:37:15 1995 Andrew McCallum * src/NSSet.m, src/Foundation/NSSet.h: New files. * src/NSGSet.m, src/Foundation/NSGSet.h: New files. * src/Makefile.in (GNU_HEADERS): Added objects/NSSet.h. (GNUSTEP_MFILES): Added NSGSet.m and NSSet.m. (GNUSTEP_HEADERS): Added Foundation/NSGSet.h and Foundation/NSSet.h. * src/Foundation/NSDictionary.h: Include objects/stdobjects.h, not objects/Dictionary.h. * src/Foundation/NSGDictionary.h: Include objects/Dictionary.h. * src/collhash.c (coll_hash_next): Set STATE to 0 before returning when the list is exhausted. This interacts with [Dictionary -freeEnumState:] and [Set -freeEnumState]. This will all be cleaned up when we start using Albin Jones' tables. (This bug found by Allan Clearwaters.) * src/NSGDictionary.m ([NSGDictionaryKeyEnumerator -initWithDictionary:]): Retain dictionary after it is initialized. * src/NSString.m ([NSString -cString]): Use -subclassResponsibility: instead of -notImplemented: ([NSString -cStringLength]): Likewise. Sun Oct 22 13:53:39 1995 Andrew McCallum Start adding proper NSException's; not done yet. * src/NSGArray.m ([NSGArray -initWithObjects:count:]): Raise exception for nil objects. ([NSGArray -objectAtIndex:]): Raise exception when index too high. * src/NSArray.m ([NSArray +arrayWithObject:]): Raise exception on nil argument. Wed Oct 18 09:48:24 1995 Adam Fedor * NSBundle.REAMDE: Rewrote documentation. * examples/Makefile.example.in: New file. * examples/configure.example.in: Likewise. * examples/Makefile.in: Add new files to RCS_FILES. * src/Foundation/NSGCString.h: New _free_contents ivar. * src/Foundation/String.h: Likewise. * src/CString.m ([CString -initWithCString:range:]): Set _free_contents to YES. ([CString -initWithCoder:]): Likewise. ([CString -dealloc]): Free contents if needed. * src/MutableCString.m ([MutableCString -initWithCapacity:]): Set _free_contents to YES. ([MutableCString -initWithCoder:]): Likewise. ([MutableCString -dealloc]): Free contents if needed. * src/NSGCString ([NSGCString -initWithCStringNoCopy:length:freeWhenDone:]): set _free_contents. ([NSGCString -initWithCoder:]): Set _free_contents to YES; ([NSGCString -dealloc]): Free contents if needed. ([NSGMutableCString -initWithCapacity:]): Set _free_contents to YES. ([NSGMutableCString -initWithCoder:]): Likewise. * src/NSString.m ([NSString -initWithCString:length:]): Set free string. ([NSString -compare:options:]): Range should be maximum of both strings. * src/NSGArray.m ([NSGArray -replaceObjectAtIndex:withObject:]): Implement. * src/NSGeometry.m (NSMouseInRect): Point should not touch sides. Sat Oct 14 14:16:04 1995 Andrew McCallum Remove remnants of "stack of dictionaries"; we only need one. * src/objects/Coder.h (Coder): Renamed ivars from root_object_tables to root_object_table, from forward_object_tables to forward_object_table; changed classes from Stack (of Dictionary's) to Dictionary. * src/Coder.m ([Coder -doInitOnStream:isDecoding:]): Use new ivar names. ([Coder -_coderPushRootObjectTable]): Use new ivar names and don't use Stack. ([Coder -_coderPopRootObjectTable]): Likewise. ([Coder -_coderTopRootObjectTable]): Likewise. ([Coder -_coderPushForwardObjectTable]): Likewise. ([Coder -_coderPopForwardObjectTable]): Likewise. ([Coder -_coderTopForwardObjectTable]): Likewise. ([Coder -_coderForwardObjectsAtReference:]): Don't access ivar directly. ([Coder -_coderPutForwardObjects:atReference:]): Likewise. ([Coder -finishDecodingInterconnectedObjects]): Use new ivar name. ([Coder -dealloc]): Likewise. Mon Oct 9 10:33:13 1995 Andrew McCallum * src/IndexedCollection.m ([IndexedCollection -shallowCopyInReverseAs:]): Return newColl, not self. ([IndexedCollection -withElementsInReverseCall:]): Set flag to YES. ([IndexedCollection -safeWithElementsInReverseCall:]): Likewise. Reported by MURATA, Shuuichirou . * doc/readme.texi (The Class Heirarchy): Fixes from Aleksey Sudakov . Thu Oct 5 11:31:44 1995 Adam Fedor * src/objc-malloc.c (objc_malloc): Declare res before any statements. (__objc_valloc): Likewise. (__objc_realloc): Likewise. (__objc_calloc): Likewise. Sat Sep 30 18:00:22 1995 Andrew McCallum * src/objc-malloc.c (CHECK_ZERO_SIZE): New macro; for making sure we don't pass 0 to malloc and its friends. (Needed on DEC Alpha; problem reported by Adam Fedor.) (__objc_malloc): Use it. (__objc_valloc): Likewise. (__objc_realloc): Likewise. (__objc_calloc): Likewise. Wed Sep 27 18:45:46 1995 Andrew McCallum * Makefile.in (DIST_FILES): Removed DISCUSSION. * src/IndexedCollection.m ([IndexedCollection -getNextElement:withEnumState:]): if isEmpty, return NO. * src/NSObject.m ([NSObject +initialize]): Set default autorelease_class to NSAutoreleasePool. * src/NSProcessInfo.m: Don't try to use __attribute__ ((section ..)) #if (sgi). It doesn't seem to be supported. This probably means that aclocal.m4 needs to be fixed so that it doesn't define SYS_AUTOLOAD in this case. No time now. Adam? * src/Collection.m: Avoid cache_flush when releasing contents. (send_release): Remove function. ([Collection -_releaseContents]): New method. ([Collection -dealloc]): Use it. ([Collection -empty]): Likewise. ([Collection -_safeWithElementsCallNoRetain:]): Use -getNextElement:withEnumState instead of -withElementsCall: to avoid cache_flush. Thu Sep 21 11:07:38 1995 Adam Fedor * src/NSArray.m ([NSArray -indexOfObjectIdenticalTo: -indexOfObject: -containsObject: -removeObjectIdenticalTo: -removeObject:]): Use NSNotFound for non-existant objects. * src/NSBundle.m ([NSBundle -initWithPath:]): Check if bundle for path already exists. * src/NSGArray.m ([NSGArray -indexOfObject:]): Force message to go to super rather than behavior class. * src/NSGCString.m ([NSGCString -emptyCopy]): start with allocCopy. * NSGData.m ([NSGData -copyWithZone: -mutableCopyWithZone:], [NSGMutableData -copyWithZone:]): New methods. Tue Sep 12 18:33:25 1995 Andrew McCallum * Makefile.in (RCS_FILES): Add file aclocal.m4. Tue Sep 12 15:30:27 1995 Adam Fedor This should make dynamic loading work under Solaris. * aclocal.m4: New file. * configure.in: Remove dynamic linking checks. Use OBJC_SYS_DYNAMIC_FLAGS macro from aclocal.m4. * src/NSBundle.m: Make sure index is defined. * src/NSProcessInfo.m: Check ifdef SYS_AUTOLOAD as well as __ELF__ * src/objc-load.c: Likewise. * src/objects/LibobjectsMain.h: Likewise. Sun Sep 10 18:17:56 1995 Andrew McCallum * src/TextCoder.m ([TextCoder -decodeValueOfSimpleType:at:withName:]): Assert the data pointer. * src/Coder.m ([Coder -doInitOnStream:isDecoding:]): Temporarily change in_progress_table from a Set to an Array. I need to fix some problems with Set. ([Coder -startEncodingInterconnectedObjects]): Deal with interconnected_stack_height. ([Coder -finishEncodingInterconnectedObjects]): Likewise. ([Coder -startDecodingInterconnectedObjects]): Likewise. ([Coder -finishDecodingInterconnectedObjects]): Likewise. ([Coder -encodeRootObject:withName:]): Fix bug, whereby we weren't giving what decodeObjectAt:withName: expected. ([Coder -encodeArrayOfType:at:count:withName:]): Don't encode the array count. ([Coder -decodeArrayOfType:at:count:withName:]): Don't expect the array count. Change type on 3rd argument. * src/objects/Coder.h (interconnected_stack_height): New ivar for Coder. * src/objects/Coding.h ([Coding -decodeArrayOfType:at:count:withName:]): Change the 3rd argument type; pass the count directly, not as a pointer. The encoding and decoding of array's no longer records the array count; if necessary, you must do that yourself ahead of time. Fri Sep 8 18:30:54 1995 Andrew McCallum * src/objects/Coder.h (in_progress_table): New ivar in Coder. * src/Coder.m ([Coder -doInitOnStream:isDecoding:]): Init in_progress_table. ([Coder -dealloc]): Release in_progress_table. ([Coder -_encodeObject:withName:isBycopy:isForwardReference:]): If the object is in progress, treat it like a forward reference. Add the object to the in_progess_table before really encoding the object; remove it when done. (NOTE, this isn't an excuse not to set up "encoding interconnected objects" mode; you still must do this first.) Wed Sep 6 09:30:15 1995 Andrew McCallum * Makefile.in (snapshot): Remove the snapshot name so we don't get nested snapshots on failure. Wed Aug 30 09:33:07 1995 Adam Fedor * src/NSCTemplateValue.m ([NSCTemplateValue -encodeWithCoder:]): Code type as a char_ptr. ([NSCTemplateValue -initWithCoder:]): Leave decoding to NSValueDecoder class. * src/NSConcreteNumber.m: Likewise. * src/NSConcreteValue.m: Likewise. * src/NSNumber.m: Clarify error message for abstract methods with "subclassResponsibility". * src/NSValue.m: New NSValueDecoder class. Clarify error message for abstract methods. * /src/TextCoder.m ([TextCoder encodeValueOfSimpleType:at:withName:]): Write reals using "%g". ([TextCoder decodeValueOfSimpleType:at:withName:]): Decode double as "%lf". Mon Aug 28 16:27:03 1995 Andrew McCallum * src/Collection.m ([Collection -empty]): Check if already empty. This avoids a previous malloc(0). Sat Aug 26 13:56:40 CDT 1995 Jeremy Bettis * src/NSProcessInfo.m: Added Linux/ELF support. Linux calls the __libc_subinit functions before the global constructors, therefore the subinit functions must be just vanilla C. Sat Aug 26 12:36:37 1995 Andrew McCallum * Makefile.in (snapshot): Put README.first in the snapshot distribution. * README.first: New file. Thu Aug 24 12:32:54 1995 Andrew McCallum * src/Makefile.in (GNUSTEP_MFILES): Added NSObjCRuntime.m. * src/NSObjCRuntime.m: New file. (NSStringFromSelector, NSSelectorFromString, NSClassFromString, NSStringFromClass): New functions. * src/NSObject.m: Include ([NSObject -description]): Implemented. ([NSObject +description]): Implemented. * src/Makefile.in (FILE_AUTHORS): Added Peter Burka. * volunteers: No longer a soft link to the http file; now it is a text file giving the http address and explaining task coordination. * Makefile.in (snap): New target. (snapshot): New target. (dist): Use new target snap. Wed Aug 23 10:39:21 1995 Andrew McCallum * src/NSTimeZone.m ([NSTimeZone -encodeWithCoder:]): Avoid warning by removing type from argument. ([NSTimeZone -initWithCoder:]): Likewise. * Makefile.in (DIST_FILES): Add file README.foundation. * src/String.m: Fix bug by which [NSString mutableCopy] returned a String, not NSString. ([String -copyWithZone:]): Renamed from -copy. ([String -mutableCopyWithZone:]): Renamed from -mutableCopy. * src/behavior.c: Added comment about superclass methods being overriden. * Makeconf (install, uninstall): New targets. * src/NSAutoreleasePool.m ([NSAutoreleasePool -dealloc]): Removed question comment. Thu Aug 17 17:41:05 1995 Adam Fedor * src/NSData.m ([NSData +allocWithZone:]): New method. ([NSMutableData +allocWithZone:]): Likewise. ([NSData +data, +dataWithBytes:length:, +dataWithBytesNoCopy:length:, +dataWithContentsOfFile:, +dataWithContentsOfMappedFile:]): Allocate using designated allocator. ([NSMutableData +dataWithCapacity:, +dataWithLength:]): Likewise. Wed Aug 17 19:54:17 1995 Peter Burka * src/NSZone.c: malloc.h isn't included on NeXTStep * src/Foundation/NSZone.h: use NeXT's zones only if we're using their runtime, too * src/Foundation/NSDate.h (NSTimeZone, NSTimeZoneDetail): interfaces declared * src/Makefile.in (GNUSTEP_MFILES): Added NSTimeZone.m. * src/NSTimeZone.m: New file. * src/NSTimeZone.m: (NSTimeZone, NSConcreteTimeZone, NSTimeZoneDetail, NSConcreteTimeZoneDetail): implementations defined * src/Foundation/NSDate.h: Added declaration of NSTimeZone. Wed Aug 16 11:58:24 1995 Andrew McCallum * Version (OBJECTS_SUBMINOR_VERSION): Version 0.1.14. * checks/Makefile.in (nsprocessinfo): New target. * src/objects/LibobjectsMain.h: Comment out args to LibobjectsMain so we don't get errors from people's "int main ()". * admin/Makefile.in (ADMIN_FILES): Added tasks. (tasks): New target. * doc/Makefile.in (copy-dist): Remove linking of 'tasks' to admin. * src/NSProcessInfo.m (_GNU_MISSING_MAIN_FUNCTION_CALL): Added Tuparev's email address. * admin/Makefile.in (copy-dist): Use cp instead of ln. (Some of these files are symbolic links themselves, and tar gets confused). * src/Makefile.in (FILE_AUTHORS): Added "Georg Tuparev". * Makefile.in (DIST_FILES): Remove GNUStep-volunteers. It's now in admin/volunteers. * checks/nsprocessinfo.m: Fix typo in includes. (main): Fix warnings in while test. Add newlines to end of printf's. * src/NSProcessInfo.m: Fix indentation. * src/NSProcessInfo.m: Use ELF _libc_subinit for initialization instead of LibobjectsMain. * src/objects/LibobjectsMain.h: Only redefine main if we don't have __ELF__. * src/objects/stdobjects.h.in: Include * src/Makefile.in (GNUSTEP_MFILES): Added NSProcessInfo.m. (GNUSTEP_HEADERS): Added Foundation/NSProcessInfo.h and LibobjectsMain.h. * checks/Makefile.in (SRCS): Added nsprocessinfo.m. * src/NSProcessInfo.m, src/Foundation/NSProcessInfo.h, src/objects/LibobjectsMain.h, checks/nsprocessinfo.m: New files from Georg Tuparev Wed Aug 9 11:27:42 1995 Andrew McCallum * src/NSString.m: Replaced "notImplemented" with "subclassResponsibilty" where appropriate. * admin/Makefile.in (RCS_FILES): Renamed Makefile to Makefile.in. (Makefile, ../config.status): New targets. * admin/Makefile.in: Renamed from Makefile. (srcdir, VPATH): new vars. * configure.in (AC_OUTPUT): Added admin/Makefile. * src/NSString.m: Rename NSCString to NSGCString. ([NXConstantString -release]): Fix return type and return. ([NSString +_setConcreteClass:]): New method. ([NSString +_setConcreteCClass:]): New method. ([NSString +_setMutableConcreteClass:]): New method. ([NSString +_setMutableConcreteCClass:]): New method. ([NSString +_concreteClass]): New method. ([NSString +_concreteCClass]): New method. ([NSString +_mutableConcreteClass]): New method. ([NSString +_mutableConcreteCClass]): New method. ([NSString +initialize]): Initialize new statics that hold concrete classes. ([NSString +stringWithCString:byteString]): Use concrete class method. ([NSString +stringWithCString:length:]): Likewise. ([NSString +stringWithFormat:]): Likewise. ([NSString +stringWithFormat:arguments:]): Likewise. ([NSString -mutableCopyWithZone:]): Likewise. ([NSMutableString +stringWithCapacity:]): Likewise. ([NSMutableString +stringWithCString:length:]): Likewise. * src/Makefile.in: Rename NSCString to NSGCString. * src/Foundation/NSString.h: Likewise. * src/Foundation/NSGCString.h: Likewise. * src/NSGCString.m, src/Foundation/NSGCString.h: Likewise. * src/NSGCString.m: Likewise. * admin/Makefile: New file. * Makefile.in (SUBDIRS): Added admin. * doc/Makefile.in (TOP_DOC_FILES): Remove TODO. (DIST_FILES): Add TODO. (copy-dist): Link TODO to ../snap/admin/tasks. Tue Aug 8 11:32:13 1995 Andrew McCallum * src/NSDate.m ([NSDate -copyWithZone:]): New method. ([NSDate -descriptionWithCalendarFormat:timeZone:]): Uncommented. ([NSDate -dateWithCalendarFormat:timeZone:]): Uncommented. * src/NSAutoreleasePool.m ([NSAutoreleasePool -dealloc]): Use object_get_class() instead of ->isa. * src/Makefile.in (GNUSTEP_HEADERS): Added Foundation/NSDate.h. (GNUSTEP_MFILES): Added NSDate.m. Fri Aug 4 13:39:05 1995 Adam Fedor * src/NSAutoreleasePool.m ([NSAutoreleasePool -addObject:]): Remove double_release checking. Increment released_count after setting released array. ([NSAutoreleasePool -dealloc]): Catch release errors. ([NSAutoreleasePool -enableDoubleReleaseCheck:]): Removed method. * src/NSObject.m ([NSObject -autorelease], [NSObject -release]): Add double_release checking. ([NSObject +enableDoubleReleaseCheck:]): New method. * src/Foundation/NSAutoreleasePool.h: Remove +enableDoubleReleaseCheck:, add +autoreleaseCountForObject:. * src/Foundation/NSObject.h: Add +enableDoubleReleaseCheck:. * src/Foundation/objc-load.h: Include objc-api file. Fri Aug 4 11:08:05 1995 Andrew McCallum * src/MemoryStream.m (debug_memory_stream): Turn debugging off by default. * src/Makefile.in (install): Remove README links before relinking. * src/mframe.m (make_method_call) [__mips__]: Add 4 to offset for float retframe. Yipes, this may be needed for other architectures too. * src/Makefile.in (GNUSTEP_HEADERS): Removed Foundation/NSUser.h. (GNUSTEP_CFILES): Removed NSUser.c. Thu Aug 3 15:48:21 1995 Andrew McCallum * src/mframe.m (make_method_call): Added comment about looking into a problem with returning floats. I need to get back to this later. Mon Jul 31 10:44:22 1995 Adam Fedor * configure.in: Check for HP version of dld library. Add new DYNAMIC_LDFLAGS if hpux version found. * checks/Makefile.in (DYNAMIC_LDFLAGS): New macro. (nsbundle): Use macro in linking. * src/hpux-load.h (__objc_dynamic_link): Specify linking flags to shl_load. (__objc_dynamic_find_symbol): Check for return error from shl_findsym. Fri Jul 28 12:38:22 1995 Adam Fedor * configure.in: Added DYNAMIC_CFLAGS and extra test for hpux. * checks/Makefile.in (DYNAMIC_BUNDLER_LINKER, DYNAMIC_CFLAGS, BUNDLE_NAME, DYNAMIC_MFILES, DYNAMIC_HFILES, DYNAMIC_OFILES, nsbundle, bundles): New macros and targets. * checks/LoadMe.[hm], checks/SecondClass.[hm], checks/MyCategory.[hm], checks/nsbundle.m: New files. * src/NSBundle.m (bundle_object_name, bundle_resource_path, [NSBundle +mainBundle], [NSBundle +setSystemLanguages:]): Remove dependency on NSString for calculating paths. Wed Aug 2 12:04:51 1995 Andrew McCallum * NSBundle.README: Remove reference to gcc-dynamic.patch. Fri Jul 14 17:11:20 1995 Adam Fedor * src/MallocAddress.m ([MallocAddress -dealloc]): Check for object in dictionary before removing. * src/NSArchiver.m: Include NSData header. * src/NSAutoreleasePool.m ([NSAutoreleasePool +autoreleaseCountForObject:]): Initialize count to 0. * src/NSGData.m ([NSGMutableData -setLength:]): Reset eofPosition to size. Wed Aug 2 11:21:55 1995 Andrew McCallum * src/NSString.m ([NXConstantString -dealloc]): New method. ([NXConstantString -cString]): New method. ([NXConstantString -retain]): New method. ([NXConstantString -release]): New method. ([NXConstantString -autorelease]): New method. ([NXConstantString -copyWithZone:]): New method. (From Jeremy Bettis). * src/NSDate.m ([NSDate -isEqual:]): Fix typo. (From Jeremy Bettis). Wed Jul 12 10:22:48 1995 Adam Fedor * NSString.m (componentsSeparatedByString:, substringFromRange:, rangeOfCharacterFromSet:, rangeOfCharacterFromSet:options:, rangeOfCharacterFromSet:options:range:, rangeOfString:, rangeOfString:options:, caseInsensitiveCompare:, hasPrefix:, hasSuffix:, lastPathComponent, pathExtension, stringByAppendingPathComponent:, stringByAppendingPathExtension:, stringByDeletingLastPathComponent, stringByDeletingPathExtension): Implemented methods. * Foundation/NSException.h (_NSAssertArgs, _NSCAssertArgs): Made ',' a separate token to work with ## macro. * Foundation/NSRange.h: Added NSMakeRange declaration. Fri Jun 30 16:02:12 1995 Adam Fedor * NSData.m ([NSData +allocWithZone:]): New method. (_initWithBytesNoCopy:length): New (designated initializer) method. (initWithBytesNoCopy:length:): Make subclass responsibility. (init): Call new designated initializer. ([NSMutableData +allocWithZone:]) New Method. (dataWithCapacity:, dataWithLength:): Allocate using designated allocator. (initWithBytesNoCopy:length:): Make subclass responsibility. * NSGData.m (_initWithBytesNoCopy:length:): Make designated initializer. (initWithBytesNoCopy:length:) Call designated initializer. Wed Aug 2 10:35:31 1995 Andrew McCallum * src/Makefile.in (FILE_AUTHORS): Added "Martin Michlmayr". * NSUser.c, Foundation/NSUser.h: New files from Martin Michlmayr . * src/Makefile.in (GNUSTEP_HEADERS): Added Foundation/NSUser.h. (GNUSTEP_MFILES): Added NSUser.c. Thu Jul 6 10:11:11 1995 Adam Fedor * src/MemoryStream.m ([MemoryStream -writeBytes:length]): Realloc buffer to at least minimum required length. * src/NSCString.m ([NSCString -cString]): Malloc extra byte for '\0' terminator. * src/NSGArray.m ([NSGArray -initWithObjects:count:]): Set _capacity to minimum of 1. ([NSGMutableArray -initWithCapacity:]): Likewise. Wed Jul 5 17:19:21 1995 Andrew McCallum Released version 0.1.13. * src/NSString.m ([NSString -getCharacters:range:]): Decrement, not increment in loop. (Reported by Harmut ). Mon Jul 3 18:10:50 1995 Andrew McCallum * src/NSMethodSignature.m ([NSMethodSignature -dealloc]): Free returnTypes. * src/NSUnarchiver.m: Allow easy user-modification of concrete class. ([NSUnarchiver +_setConcreteClass:]): New method. ([NSUnarchiver +_concreteClass]): New method. ([NSUnarchiver +initialize]): New method. * src/NSArchiver.m: Allow easy user-modification of concrete class. Removed references to NSGData. ([NSArchiver +_setConcreteClass:]): New method. ([NSArchiver +_concreteClass]): New method. ([NSArchiver +initialize]): New method. * src/NSData.m: Allow easy user-modification of concrete class. ([NSData +_setConcreteClass:]): New method. ([NSData +_setMutableConcreteClass:]): New method. ([NSData +_concreteClass]): New method. ([NSData +_mutableConcreteClass]): New method. ([NSData +initialize]): New method. Sat Jul 1 14:32:52 1995 Andrew McCallum * src/objects/README: Capitalize Foundation. * src/NSArray.m: Moved NSArrayEnumerator interface and implementation from separate files to here. * src/Makefile.in (GNUSTEP_MFILES): Remove NSArrayEnumerator.m. (GNUSTEP_HEADERS): Remove Foundation/NSArrayEnumerator.h. * src/Foundation/NSZone.h: Update copyright. * src/Foundation/NSValue.h: Likewise. * src/Foundation/NSGeometry.h: Likewise. * src/Foundation/NSException.h: Likewise. * src/Foundation/NSUnarchiver.h: Likewise. * src/Foundation/NSTimer.h: Likewise. * src/Foundation/NSString.h: Likewise. * src/Foundation/NSSerialization.h: Likewise. * src/Foundation/NSRange.h: Likewise. * src/Foundation/NSObject.h: Likewise. * src/Foundation/NSObjCRuntime.h: Likewise. * src/Foundation/NSMethodSignature.h: Likewise. * src/Foundation/NSInvocation.h: Likewise. * src/Foundation/NSDictionary.h: Likewise. * src/Foundation/NSData.h: Likewise. * src/Foundation/NSCoder.h: Likewise. * src/Foundation/NSCharacterSet.h: Likewise. * src/Foundation/NSBundle.h: Likewise. * src/Foundation/NSBitmapCharSet.h: Likewise. * src/Foundation/NSAutoreleasePool.h: Likewise. * src/Foundation/NSArray.h: Likewise. * src/Foundation/NSArchiver.h: Likewise. * src/Foundation/NSDate.h: Likewise. * src/NSDate.m: Likewise. Fri Jun 30 16:42:10 1995 Andrew McCallum * src/Foundation/NSRange.h (NSLocationInRange): Added __attribute__ ((unused)). (NSMaxRange): Likewise. Fri Jun 30 13:19:24 1995 Adam Fedor * Makefile.in (install): Fixed directory typo. * NSCharacterSets/Makefile.in (INSTALL, INSTALL_PROGRAM, INSTALL_DATA): New variables. (install): Depend on installdirs. Fri Jun 30 09:45:14 1995 Andrew McCallum * (install-sh, mkinstalldirs): Change file permissions to group and all can read and execute. (Reported by Paul Kunz.) * Version (OBJECTS_SUBMINOR_VERSION): Version 0.1.13. * doc/news.texi (Noteworthy changes since version 0.1.12): New section. The "concrete class" configuration idea was proposed by Albin Jones , 10 Jun 1995. * src/NSDictionary.m: Allow easy user-modification of concrete class. ([NSDictionary +_setConcreteClass:]): New method. ([NSDictionary +_setMutableConcreteClass:]): New method. ([NSDictionary +_concreteClass]): New method. ([NSDictionary +_mutableConcreteClass]): New method. ([NSDictionary +initialize]): New method. (NSDictionary_concrete_class, NSMutableDictionary_concrete_class): New static variables. ([NSDictionary -copyWithZone:]): Make a deep copy to conform to spec; it was a shallow copy. * src/NSArray.m: Allow easy user-modification of concrete class. ([NSArray +_setConcreteClass:]): New method. ([NSArray +_setMutableConcreteClass:]): New method. ([NSArray +_concreteClass]): New method. ([NSArray +_mutableConcreteClass]): New method. ([NSArray +initialize]): New method. (NSArray_concrete_class): New static variable. (NSMutableArray_concrete_class): New static variable. ([NSArray +arrayWithObject:]): Don't use addObject:. ([NSArray -copyWithZone:]): Make a deep copy to conform to spec; it was a shallow copy. Wed Jun 28 18:31:36 1995 Andrew McCallum * Makefile.in (rcs-list-locked): Fix typo. Released Version 0.1.12. * Makefile.in (DIST_FILES): Remove gcc patch files. * doc/install.texi: Remove instructions for gcc patches. * examples/Makefile.in (ALL_CPPFLAGS): Look in ../src for includes. * examples/second-server.m: Use release instead of free. * examples/textcoding.m: Likewise. * examples/stdio-stream.m: Likewise. * src/objects/Dictionary.h ([Dictionary initWithType:keyType:capacity]): Declare it. ([Dictionary initWithType:capacity]): Likewise. * Makefile.in (RCS_FILES): Added Makeconf. * checks/Makefile.in (DIST_FILES): Added RCS_FILES. * src/Time.m: Include Sequent support. (Thanks to Matt Nelson ). * src/objects/Time.h: Likewise. * checks/test09.m: Add _SEQUENT_ to lrand48 conditional. * checks/test04.m: Likewise. * checks/test01.m: Likewise. * checks/client.m (main): Use -invalidate, not -release. * examples/first-client.m (main): Likewise. * examples/second-client.m (main): Likewise. * src/Connection.m ([Connection +newForInPort:outPort:ancestorConnection:]): Add comment. I need to fix retain/release for Connection. * checks/Makefile.in: Put src in all dependencies on libobjects.a. (OBJECTS_NEXT_INCLUDES): Look in src directory. (LIBS): Likewise. (ALL_CPPFLAGS): Likewise. * checks/test08.m: Use libobjects' Coder instead of GNU TypedStream. Comment out BinaryTree testing. * src/BinaryTree.m ([BinaryTree -_initCollectionWithCoder:]): Disabled with -notImplemented. I need to fix decoding of this class. * src/LinkedList.m: Added comment. I need to fix decoding of this class. * src/Collection.m ([Collection -_safeWithElementsCallNoRetain:]): Use malloc not alloca. * src/Dictionary.m ([Dictionary -putElement:atKey:]): Release previous element. (Thanks to Paul Burchard ). * src/NSObject.m (NSDecrementExtraRefCountWasZero): Return correct value. (Thanks to Paul Burchard ). * src/Makefile.in (CFLAGS): Remove -Wall. * doc/announce.texi: Use machines.texi. * doc/advertisement.texi: Likewise. * doc/machines.texi: New file. * doc/Makefile.in (TEXI_FILES): Added machines.texi. (info): Removed libobjects.texi and objective-c.texi. (objective-c): Print apology about makeinfo. Sun Jun 25 18:08:26 1995 Andrew McCallum * src/Makefile.in (objects/stdobjects.h): Depend on ../Version, not Makefile.in. (AUTHORS): Fix echo'ing of newlines. * Version (OBJECTS_SUBMINOR_VERSION): Version 0.1.12. (OBJECTS_GCC_VERSION): Upped from 2.6.3 to 2.7.0. Tue Jun 20 12:06:36 1995 Andrew McCallum * Makefile.in (rcs-list-locked): Print subdir names. * checks/Makefile.in: Include $(srcdir)/../Makeconf. (RCS_FILES): New variable. (install, uninstall): New targets. (copy-dist): Converted to new scheme. * examples/Makefile.in: Likewise. * doc/Makefile.in: Change the way top-level dir info files are handled. (TOP_FILES): Variable removed. (.SUFFIXES): Removed. (prefix, infodir): New variables. (copy-dist): Converted to new scheme. * doc/news.texi (Noteworthy changes since version 0.1.10): New section. * src/NSGArchiver.m ([NSGArchiver -initForWritingWithMutableData:]): New method. * src/Makefile.in (prefix, exec_prefix, libdir, includedir): New variables. * Makefile.in: Convert to new scheme with subdirs. Many variable and targets moved to subdir Makefiles. (maintainer-clean, %-subdirs): New targets. * configure.in (AC_OUTPUT): Added NSCharacterSets/Makefile. * NSCharacterSets/Makefile.in (prefix, datadir, charsetdir, INSTALL_FILES): New variables. (installdirs, install, uninstall): New targets. Fri May 26 11:17:54 1995 Adam Fedor * src/objc-load.c (objc_load_module): Don't execute ctor_list on __ELF__ systems. Fri May 19 11:22:42 1995 Andrew McCallum * doc/Makefile.in (copy-dist): Renamed from "dist". * examples/Makefile.in (copy-dist): Renamed from "dist". * checks/Makefile.in (copy-dist): Renamed from "dist". * configure.in (AC_OUTPUT): Prepend "src/" to "objects/config.h". * configure.in (AC_OUTPUT): Added src/Makefile. Changed INSTALL_HEADERS to HEADERS_INSTALL. Changed INSTALL_OBJS to OBJS_INSTALL. Thu May 11 16:09:36 1995 Andrew McCallum * Makefile.in (datadir): According to new standards, use "share" instead of "lib". Mon May 8 16:39:42 1995 Andrew McCallum * Makefile.in (dist): Rename "share" to "NSCharacterSets". (datadir): New variable. (charsetdir): New variable. (install): Install files from NSCharacterSets directory. (installdirs): Make $(datadir) and $(charsetdir). * NSCharacterSets: Directory renamed from "share". Fri May 5 10:46:37 1995 Andrew McCallum * doc/Makefile.in (TOP_FILES): New variable. (dist): Copy TOP_FILES. (version.texi): Remove $(MAKEFLAGS). * Makefile.in (OBJECTS_SUBMINOR_VERSION): Version 0.1.11. (dist): mkdir src and config. Copy share and contents. * configure.in: Use config/ directory prefix where needed. * config: New subdirectory. * config.*: Files moved there. * src/NSException.m (encodeWithCoder:, initWithCoder:): Remove class names from arg type to avoid bogus warnings about protocol conformance. * Makefile.in: Use doc/ and src/ directories. Many changes. * src: New subdirectory. Move source files there. * configure.in: Look for src/Collection.m, not Collection. * configure.in: Create doc/Makefile. * doc: New subdirectory. * doc/Makefile.in: New file. * checks/nsdictionary.m: New file. * checks/Makefile.in (SRCS): Added nsdictionary.m. * Foundation/NSDictionary.h: Uncomment -keyEnumerator and -objectEnumerator. * NSDictionary.m [NSDictionary] (+allocWithZone, +dictionary, +dictionaryWithObjects:forKeys:count:, -initWithObjects:forKeys:, +dictionaryWithObjects:forKeys:, -initWithObjects,forKeys:count:, -init, -initWithDictionary, -count, -objectForKey, -keyEnumerator, -isEqual:, -isEqualToDictionary, -descriptionWithIndent, -allKeys, -allValues, allKeysForObject:, -objectEnumerator, -copyWithZone, -mutableCopyWithZone): Implemented. [NSMutableDictionary] (+allocWithZone:, +dictionaryWithCapacity:, -initWithCapacity:, -initWithObjects:forKeys:count:, -setObject:forKey:, -removeObjectForKey:, removeAllObjects, -removeObjectsForKeys:, addEntriesFromDictionary:): Implemented. (NSGDictionaryKeyEnumerator, NSGDictionaryObjectEnumerator): New classes. * NSGDictionary.m, Foundation/NSGDictionary.h, objects/NSDictionary.h: New files. * Makefile.in (GNU_HEADERS): Added NSDictionary.h. (GNUSTEP_MFILES): Added NSGDictionary.m. (GNUSTEP_HEADERS): Added NSGDictionary.h. * objects/NSArray.h: Fix #ifndef macro name; NSArray, not NSString! * NSString.m (-compare:options:range:): Simple implementation; not complete. * NSArray.m (NSArray +allocWithZone:): Implemented. (NSMutableArray +allocWithZone:): Implemented. * NSGArray.m (-initWithObjects:count:): Retain objects. Thu May 4 11:51:04 1995 Adam Fedor * NSBitmapCharSet.m, Foundation/NSBitmapCharSet.h: Replaced NSData instance variable with char array and rewrote methods to reflect this. * NSCharacterSet.m (characterSetWithCharactersInString:): Create mutable data object for bitmap. (characterSetWithRange:): Added error checking. (deepen): removed. (copyWithZone:, mutableCopyWithZone:): More efficient implementation. (characterSetWithBitmapRepresentation:): Override implementation from super. Wed May 3 15:05:17 1995 Adam Fedor * Makefile.in (GNUSTEP_MFILES, GNUSTEP_HEADERS): Added NSBitmapCharSet. * NSCTemplateValue.m, NSConcreteNumber: Added #line macro so gdb knows which file source came from. * NSBitmapCharSet.m, Foundation/NSBitmapCharSet.h: New files. * NSCharacterSet.m (all methods): Implemented. * NSDictionary.m, Foundation/NSDictionary.h (keyEnumerator, objectEnumerator): Uncommented but left unimplemeneted. * NSNumber.m (valueClassWithObjCType:): Added break's to avoid falling through case statements. * Foundation/NSException.h (_NSAssertArgs, _NSCAssertArgs): Made ',' a separate token to work with ## macro. Wed Apr 26 10:15:51 1995 Adam Fedor * Makefile.in (GNUSTEP_MFILES, GNUSTEP_HEADERS): Added NSCharacterSet. * NSCharacterSet.m, Foundation/NSCharacterSet.h: New files. * NSString.m (componentsSeparatedByString:, substringFromRange:, rangeOfCharacterFromSet:, rangeOfCharacterFromSet:options:, rangeOfCharacterFromSet:options:range:, rangeOfString:, rangeOfString:options:, caseInsensitiveCompare:, hasPrefix:, hasSuffix:, lastPathComponent, pathExtension, stringByAppendingPathComponent:, stringByAppendingPathExtension:, stringByDeletingLastPathComponent, stringByDeletingPathExtension): Implemented methods. * Foundation/NSRange.h: Added NSMakeRange declaration. Wed Apr 26 15:01:07 1995 Andrew McCallum * install.texi: Fixed typo in patch instructions. Too many "..". (Reported by Daniel L. Green .) Thu Apr 20 20:11:23 1995 Andrew McCallum * NSData.m: Include * NSData.m (dataWithBytesNoCopy:length:): Send alloc to NSGData class, not self. Sun Apr 16 02:41:39 1995 Albin L. Jones * NSData.m([NSData -getBytes:range:], [NSData -subdataWithRange:]): Coded these, including the range checking bits. The proper exception is raised. * NSData.m([NSData -dataWithContentsOfFile:], [NSData -dataWithContentsOfMappedFile:], [NSData -initWithContentsOfFile:], [NSData -initWithContentsOfMappedFile:], [NSData -writeToFile:atomically:]): Filled these out, made them do what they were suppossed to. * NSData.m: Added many comments. Maybe I shouldn't have. Thu Apr 20 11:26:45 1995 Adam Fedor * NSCTemplateValue.m, NSConcreteNumber.m, NSConcreteValue.m, NSException.m, NSNumber.m, NSValue.m (encodeWithCoder:, initWithCoder:): Include call to super since NSObject now implements these methods. Mon Apr 17 16:37:06 1995 Andrew McCallum * Makefile.in (OBJECTS_SUBMINOR_VERSION): Version 0.1.10. * examples/second-client.h: Make AppellationObject inherit from NSObject, not Object. * examples/second-server.h: Include NSObject.h from Foundation, not objc. * NSData.m (replaceBytesInRange:withBytes:): Get pointer with -mutableBytes, not -bytes. * Makefile.in (FILE_AUTHORS): Added Jeremy Bettis. * Makefile.in: Change "foundation" to "Foundation". * Foundation: Directory renamed from "foundation". * Connection.m, NSArchiver.m, NSArray.m, NSArrayEnumerator.m, NSAssertionHandler.m, NSAutoreleasePool.m, NSBundle.m, NSCString.m, NSCTemplateValue.m, NSCoder.m, NSConcreteNumber.m, NSConcreteValue.m, NSData.m, NSDate.m, NSDictionary.m, NSEnumerator.m, NSException.m, NSGArchiver.m, NSGArray.m, NSGCoder.m, NSGData.m, NSGUnarchiver.m, NSGeometry.m, NSNumber.m, NSObject.m, NSRange.m, NSString.m, NSUnarchiver.m, NSValue.m, NSZone.c, objc-load.c: Include from , not . * objects/Collection.h, objects/NSCoder.h, objects/String.h, objects/stdobjects.h.in: Likewise. * foundation/NSArchiver.h, foundation/NSArray.h, foundation/NSArrayEnumerator.h, foundation/NSAutoreleasePool.h, foundation/NSBundle.h, foundation/NSCString.h, foundation/NSCoder.h, foundation/NSConcreteNumber.h, foundation/NSConcreteValue.h, foundation/NSData.h, foundation/NSDate.h, foundation/NSException.h, foundation/NSGArchiver.h, foundation/NSGArray.h, foundation/NSGCoder.h, foundation/NSGData.h, foundation/NSGUnarchiver.h, foundation/NSMethodSignature.h, foundation/NSObject.h, foundation/NSRange.h, foundation/NSString.h, foundation/NSUnarchiver.h, foundation/NSUtilities.h, foundation/NSValue.h: Likewise. * examples/first-server.h: Likewise. * checks/nsarchiving.m, checks/nsarray.m, checks/string.m, checks/values.m: Likewise. * objects/NSCoder.h: Fix typo: We're declaring methods of NSCoder, not NSConcreteCoder. * foundation/NSData.h: Insert the interface for NSMutableData. * NSData.m: Insert the implementation of NSMutableData. * foundation/NSGData.h: Don't include . The interface can now be found in Sat Apr 15 14:12:57 1995 Andrew McCallum * Makefile.in (OBJECTS_SUBMINOR_VERSION): Version 0.1.9. * checks/Makefile.in (SRCS): Comment out nsarchiving.m. It's not done yet. * Makefile.in (GNUStep-volunteers): New target to deal with "ln" and disparate filesystem problems. (DIST-FILES): Use the local GNUStep-volunteers file, not the remote volunteers-gnustep file. (dist): Switch back to "ln", not "ln -s". * Stream.m (-initWithMode:, -streamMode): Methods removed. (-isWritable): New method. (-initWithCoder): Renamed from +newWithCoder.m. * objects/Stream.h: Method removed and put into Streaming protocol. Included from objects/Streaming.h. (mode): Instance variable removed. (STREAM_READONLY, STREAM_WRITEONLY, STREAM_READWRITE): enum removed. * objects/Streaming.h: New file. * Makefile.in (GNU_HEADERS): Added objects/Streaming.h. * objects/StdioStream.h (mode): New instance variable, to replace one removed from Stream class. * StdioStream.m (-isWriteable): New method. (-initWithCoder): Renamed and rewritten from +newWithCoder. (-isAtEof): Renamed from -streamEof. (-initWithFilePointer:fmode:): Use new mode ivar. * objects/MemoryStream.h: New protocol . Make MemoryStream class conform to it. * MemoryStream.m (-setStreamBufferCapacity:): Renamed from -setStreamBufferSize. (-streamBufferCapacity): Renamed from -streamBufferSize. (-isWriteable): New method. (-streamBufferPrefix): Renamed from -streamPrefix. * NSArchiver.m, foundation/NSArchiver.m, NSGArchiver.m, NSUnarchiver.m, foundation/NSUnarchiver.h, foundation/NSGArchiver.h, NSGData.m, foundation/NSGData.h: New files. * Makefile.in (GNUSTEP_MFILES): Added NSArchiver.m, NSGArchiver.m, NSGData.m, NSGUnarchiver.m, NSUnarchiver.m. (GNUSTEP_HEADERS): Added foundation/NSArchiver.h, foundation/NSGArchiver.h, foundation/NSGData.h, foundation/NSGUnarchiver.h, foundation/NSUnarchiver.h. * checks/nsarchiving.m: New file. * checks/Makefile.in (SRCS): Added nsarchiving.m. * Makefile.in (GNU_HEADERS): Added objects/NSCoder.h. The GNU-interoperating concrete subclasses of NS classes have the prefix NSG. If people want to write other concrete subclasses (some of which could be more lowlevel-compatible with NeXT's classes, such as in the low-level format used by NSConcreteCoder), they can do so, and use NeXT's classnames, or their own. * NSGArray.m, foundation/NSGArray.h: Renamed from NSConcreteArray. * NSGCoder.m, foundation/NSGCoder.h: Renamed form NSGNUCoder. * Makefile.in: Renamed appropriate files for NSG prefix. * NSCoder.m: Change names from "Concrete"-style to "G"-style. * NSGCoder.m: Likewise. * foundation/NSGArray.h: Likewise. * NSArray.m: Likewise. * NSGArray.m: Likewise. Fri Apr 14 10:59:41 1995 Andrew McCallum * NSAutoreleasePool.m (+enableRelease:, +enableDoubleReleaseCheck:, +setPoolCountThreshhold:): New methods. * foundation/NSAutoreleasePool.h: Declare new methods. * Makefile.in (GNUSTEP_MFILES): Removed NSDate.m; it causes a bunch of compilation errors. (GNUSTEP_OTHER_SRCFILES): Added NSDate.m. Thu Apr 13 11:03:13 1995 Andrew McCallum * NSDate.m: Compare against [NSDate class], not NSDate. * NSDate.m: Fixed indentation. Added some calls to -notImplemented:. * NSDate.m, foundation/NSDate.h: New files from Jeremy Bettis . * Makefile.in (GNUSTEP_HEADERS): Added foundation/NSDate.h. (GNUSTEP_MFILES): Added NSDate.m. * readme.texi: Updated for changes since addition of string classes and retain/release. * NSData.m (-getBytes:range:): Implemented. (-isEqual:): New method. * Now using new ObjC Emacs mode from cc-mode.el (to be included with emacs 19.29), with (c-set-style "GNU"). This will change the way multi-line methods are indented: I used to indent with three spaces, now colons are lined up. All contributors should use the same style. Note that (c-set-style "GNU") has different c-basic-offset than the default. Wed Apr 12 11:15:57 1995 Andrew McCallum * BinaryTree.m (removeElement:): Fix bug whereby the deleted node's parent still had the deleted node as a right child. (Reported by Stephen Peters ). * Collection.m (write:, read:): Put back these old-style archiving methods. (Reported by Stephen Peters ). Sun Apr 9 20:34:32 1995 Andrew McCallum * NSAssertionHandler.m: Fix copyright date and indentation. Sun Apr 9 16:43:03 1995 Adam Fedor (fedor@boulder.colorado.edu) * Makefile.in (GNUSTEP_MFILES): Added NSAssertionHandler.m. * NSAssertionHandler.m: New file. * foundaton/NSException.h: Added NSAssert macros and NSAssertionHandler interface. Sun Apr 9 13:55:28 1995 Andrew McCallum * MallocAddress.m (objectForAddress:): Return nil if address is not maintained by a MallocAddress object. (Used to simply die.) Sat Apr 8 13:04:08 1995 Andrew McCallum * Makefile.in (GNUSTEP_MFILES): Added NSGNUCoder.m. (GNUSTEP_HEADERS): Added foundation/NSGNUCoder.h. (GNUSTEP_OTHER_SRCFILES): Added files NSArchiver.m, foundation/NSArchiver.h. * NSGNUCoder.m, foundation/NSGNUCoder.h, NSArchiver, foundation/NSArchiver.h: New files. * Makefile.in: Rearranged source variables to put GNU/NEXTSTEP/GNUStep files close together. (GNUSTEP_OTHER_SRCFILES): Added NSData.m, foundation/NSData.h. * NSData.m, foundation/NSData.h: New files. * Array.m, BinaryTree.m, BinaryTreeNode.m, CString.m, CircularArray.m, Collection.m, Connection.m, DelegatePool.m, Dictionary.m, EltNodeCollector.m, GapArray.m, LinkedList.m, LinkedListNode.m, MappedCollector.m, MemoryStream.m, MutableCString.m, NSCString.m, NSCoder.m, NSObject.m, NSString.m, Port.m, RBTreeNode.m, RNGAdditiveCongruential.m, RNGBerkeley.m, Random.m, Set.m, Stream.m, TextCoder.m, Time.m: Convert to new Coder scheme. Use -initWithCoder instead of +newWithCoder where appropriate. Remove arguments typed (Coder*). Replace +_newCollectionWithCoder with -_initCollectionWithCoder. * objects/Coding.h (CommonCoding, Encoding, Decoding): New protocols. (SelfCoding): New category of NSObject, interface only, no implementation. This takes the place of the Coding Protocol. (Coding): Protocol removed. * objects/IndexedCollecting.h: Use ConstantIndexedCollecting protocol where appropriate. * objects/Collecting.h: Use ConstantCollecting protocol where appropriate. * objects/KeyedCollection.h: Move protocol conformance to category to avoid bogus gcc complaints. * objects/IndexedCollection.h: Likewise. * Coder.m (-decodeObjectAt:withName:): Create the instance and send -initWithCoder if the object doesn't respond to +newWithCoder. Convert to new protocol and method type scheme. * Proxy.m (RemoteSelfCoding): Renamed category from RemoteCoding. * objects/Proxy.h: Likewise. * objects/Connection.h (ConnectedSelfCoding): Renamed protocol from ConnectedCoding. * objects/Collection.h: Removed Coding protocol. It's already provided by NSObject. * objects/BinaryTreeNode.h: Likewise. * objects/Port.h: Likewise. * objects/LinkedListNode.h: Likewise. * objects/IndexedCollecting.h (ConstantIndexedCollecting): New protocol extracted from IndexedCollecting. * objects/KeyedCollecting.h (ConstantKeyedCollecting): New protocol extracted from KeyedCollecting. * objects/Collecting.h (ConstantCollecting): New protocol extracted from Collecting. Fri Apr 7 16:36:08 1995 Andrew McCallum * checks/nsarray.m (main): Fix serious bug by including `nil' at end of contents list. Test forward and reverse enumerator objects. * NSArray.m (-objectEnumerator, -reverseObjectEnumerator): Implemented methods. * Makefile.in (GNUSTEP_MFILES): Added NSArrayEnumerator.m, NSEnumerator.m. (GNUSTEP_HEADERS): Added foundation/NSArrayEnumerator.h. * NSEnumerator.m, NSArrayEnumerator.m, foundation/NSArrayEnumerator.h: New files. * Connection.m (-dealloc): Remove dealloc of remote_proxies contents. * NSArray.m (-componentsJoinedByString:): Implemented method. * NSCString.m (initWithCapacity:): Make sure that capacity is greater than zero. * Makefile.in (DIST_FILES): Added volunteers-gnustep. Fri Apr 7 15:41:46 1995 Mark Lakata (lakata@nsdssp.lbl.gov) * foundation/NSZone.h: Fixed clash with linux unistd.h. Thu Apr 6 14:47:09 1995 Andrew McCallum * Makefile.in (FILE_AUTHORS): New variable. (AUTHORS): New target. (DIST_FILES): Added AUTHORS. * Makefile.in (DIST_FILES): Add objective-c.texi objective-c.info. (RCS_FILES): Add objective-c.texi. (objective-c.info): New target. (info): Add objective-c.info. * Array.m (-_encodeCollectionWithCoder:): Fix typo. Fix super call. (+_newCollectionWithCoder:): Fix super call. (Reported by allan-europa@mct.co.uk (Allan Clearwaters)). Wed Apr 5 11:22:30 1995 Andrew McCallum * Makefile.in (OBJECTS_SUBMINOR_VERSION): Version 0.1.8. * Makefile.in (NEXTSTEP_DERIVED_CFILES): New variable. (NEXTSTEP_CFILES): NXStringTable_scan.c moved to above. (NEXTSTEP_OBJS): Use NEXTSTEP_DERIVED_CFILES. (DIST_FILES): Add NEXTSTEP_DERIVED_CFILES. (objects/stdobjects.h): Target overhauled. (libobjects.a): Add dependancy on objects/stdobjects.h. (GNU_HEADERS): Remove objects/config.h, objects/stdobjects.h. (INSTALL_HEADERS): Add objects/config.h, objects/stdobjects.h. (NEXTSTEP_HEADERS): Removed README. (GNUSTEP_HEADERS): Likewise. (RCS_FILES): New variable. (rcs-list-locked): New target. (dynamic-load.h): Depend on config.status, for less re-making. (version.texi): Depend on Makefile.in, not Makefile. (realclean): Add objects/stdobjects.h objects/config.h. * objects/stdobjects.h.in: New file. * Makefile.in (GNUSTEP_OTHER_SRCFILES): Added NSConcreteNumber.m, NSCTemplateValue.m. * objects/DelegatePool.h (_last_message_had_receivers): New instance variable. * DelegatePool.m (-delegatePoolLastMessageHadReceivers): New method. (-forward::, init): Set new ivar. * objects/behavior.h (CALL_METHOD_IN_CLASS): Fix typo. * NSArray.m (allocWithZone): Removed method. (arrayWithObjects:, initWithObjects:, initWithArray:, count, indexOfObjectIdenticalTo:, indexOfObject:, isEqualToArray:, makeObjectsPerform:, makeObjectsPerform:withObject:, lastObject, firstObjectCommonWithArray:, arrayWithCapacity:, addObject:, replaceObjectAtIndex:, removeLastObject, insertObject:atIndex:, removeObjectAtIndex:, removeObjectIdenticalTo:, removeObject:, removeAllObjects, addObjectsFromArray:, removeObjectsFromIndices:numIndices:, removeObjectsInArray:, copyWithZone:, mutableCopyWithZone:): Newly implemented or overhauled. * behavior.c (class_add_methods_if_not_there): Only put method implementation in dtable if the dtable is already installed, otherwise, just add it to the class's methods list and let __objc_install_dispatch_table_for_class put it in. Also, change arguments. All callers updated. (check_class_methods): New function. * NSString.m (+initialize): Use static "done". * NSCString.m: Likewise. * checks/test01.m (main): "release" collections intead of "emtpy"ing them. * NSDeallocateObject.m (NSDeallocateObject): Set anObject->class_pointer to 0xdeadface, to help catch message-sends to deallocated objects. * Collection.m (_safeWithElementsCallNoRetain:): New method. (dealloc, empty): Use it. (send_release): New function. (Problem reported by allan-europa@mct.co.uk (Allan Clearwaters)). * Time.m (CLK_TCK): Use _CS_CLK_TCK instead of 3. Tue Apr 4 18:48:59 1995 Andrew McCallum * NSObject.m (+retain, +retainCount, +release, +autorelease): New methods. * checks/Makefile.in (SRCS): Added nsarray.m. * foundation/NSArray.h: Inherit from NSObject, not Array. * NSConcreteArray.m, foundation/NSConcreteArray.h, foundation/NSUtilities.h, objects/NSArray.h: New files. * Makefile.in (GNUSTEP_MFILES): Added NSConcreteArray.m. (GNUSTEP_HEADERS): Added foundation/NSConcreteArray.h, foundation/NSUtilities.h. (GNU_HEADERS): Added objects/NSArray.h. * objects/behavior.h: Added warning in comments. (CALL_METHOD_IN_CLASS): New macro. * objects/String.h: Add Protocol to String Protocol. Tue Apr 4 10:56:02 1995 Andrew McCallum * NSDictionary.m: Fix indentation. * NSCoder.m: Likewise. * NSArray.m: Fixed indentation. (arrayWithObject, arrayWithObjects, initWithArray, initWithObjects, initWithObjects:count:, indexOfObjectIdenticalTo:, firstObjectCommonWithArray, isEqualToArray, sortedArrayUsingFunction, sortedArrayUsingSelector): Implemented. * Time.m (#ifndef CLK_TCK): Define it using sysconf() if not already defined. (CLK_TCK wasn't defined on Solbourne S4000 running OS/MP 4.1B. Reported by Pekka Yrjola .) Mon Apr 3 19:02:37 1995 Andrew McCallum * NSString.m (initialize): No need to add IndexedCollection behavior to NSString, we already added String, and String inherits from IndexedCollection. * Makefile.in (dynamic-load.h): New target, replacing the "one-step" target, which got invoked too often. * Makefile.in (GNUSTEP_HEADERS): Add foundation/NSArray.h, foundation/NSCoder.h, foundation/NSDictionary.h. Mon Apr 3 16:36:36 1995 Adam Fedor (fedor@boulder.colorado.edu) Placeholder non-implementations from Fedor until McCallum does real implementations (that will be aided by and coexist with GNU versions). * NSArray.m, NSCoder.m, NSDictionary.m, foundation/NSArray.h, foundation/NSCoder.h, foundation/NSDictionary.h: new files. Mon Apr 3 15:58:35 1995 Adam Fedor (fedor@boulder.colorado.edu) * configure.in: check for dynamic linking libraries to figure out which *-load.h file to include in objc-load.c. * Makefile.in (one-time): new target. Mon Apr 3 14:55:47 1995 Adam Fedor (fedor@boulder.colorado.edu) * Makefile.in (GNUSTEP_MFILES, GNUSTEP_CFILES, GNUSTEP_HEADERS): Added files from corresponding FEDOR_ lists, removed FEDOR_ lists. (DIST_FILES): added gcc-dynamic.patch, NSBundle.README and GNUSTEP_OTHER_SRCFILES. (NSVALUE_OFILES, NSNUMBER_OFILES): removed multiple target declarations. * NSBundle.m (_bundle_load_callback): Changed Class* to Class. * find_exec.c: new file. * checks/Makefile (LIBS): added math library. (SRCS): Added values.m. Mon Apr 3 11:17:18 1995 Adam Fedor (fedor@boulder.colorado.edu) * Makefile.in: New class cluster targets NSVALUE_OFILES and NSNUMBER_OFILES. * NSBundle.README, NCSTemplateValue.m, NSConcreteNumber.m, NSConcreteValue.m: new files. * NSBundle.m: Use @"" constructs, change Class to a pointer. * NSException.m (encodeWithCoder:, initWithCoder:): take out calls to super until NSCoder gets implemented. * NSGeometry.m: Change includes to look in foundation subdir. * NSNumber.m, NSValue.m: Rewrote as class cluster. * NSRange.m (NSUnionRange): fixed typo - point should be range. (NSMaxRange, NSLocationInRange): Moved to header file. (NSStringFromRange): use @"" construct. * String.m (contentType) : new method. * checks/values.m: new file. * dld-load.h, null-load.h, simple-load.h, hpux-load.h: new files. * foundation/NSArray.h, foundation/NSConcreteNumber.h, foundation/NSConcreteValue.h, foundation/objc-load.h: new files. * gcc-dynamic.patch: likewise. * foundation/NSValue.h: Added methods valueClassWithObjCType: and initValue:withObjCType: for class clusters. * objc-load.c: new file. Mon Apr 3 10:43:11 1995 Andrew McCallum * String.m (initWithType:): Fix previous attempt at avoiding infinite loop. (Reported by Jeremy Bettis ) Sun Apr 2 20:05:04 1995 Andrew McCallum * Makefile.in (OBJECTS_SUBMINOR_VERSION): Version 0.1.7. * checks/string.m: Test mutable strings and "strings as collections of char's". * Connection.m, MutableString.m, NSString.m, Port.m, SocketPort.m, String.m, objects/Connection.h, objects/Invocation.h, objects/Port.h, objects/SocketPort.h, objects/ValueHolding.h, objects/stdobjects.h: Use (id ) instead of (String*). * objects/String.h: Use (id ) instead of (String*) Have String protocol include NSString protcol. * foundation/NSString.h: Define NSString and NSMutableString as protocols. Make the classes conform to them. * NSCString.m: Have increment and decrement functions take int arguments instead of unsigned because I was getting (0 >= -234) == 1. * NSString.m: Added implementations. * foundation/NSString.h: Uncomment method declarations. Now subclass of NSObject, not String. (stringWithFormat:arguments:): Added method. (NSMutableString): Added declaration for class. (NXConstantString): Moved declaration for class to here from objects/String.h. Now subclass of NSCString, not ConstantString. * NSObject.m (perform:with:with:): New method added to (NEXTSTEP) category. * NSException.m: Fix #include's. Fix @"" strings. * ConstantString.m: #if'ed out NXConstantString implementation. Moved to NSString.m * objects/String.h (NXConstantString): Declaration #if'ed out. Moved to foundation/NSString.h. * MallocAddress.m, objects/MallocAddress.h, NSCString.m, foundation/NSCString.m: New files. * Makefile.in (GNU_MFILES): Added MallocAddress.m. (GNU_HEADERS): Added objects/MallocAddress.h, objects/NSString.h. (GNUSTEP_MFILES): Added NSCString.m. (GNUSTEP_HEADERS): Added foundation/NSCString.h. (objects/stdobjects.h): Fixed typo. Sat Apr 1 16:09:04 1995 Andrew McCallum * String.m (initWithType:): Avoid infinite loop by calling designated initializer instead of init. (Reported by Jeremy Bettis ) Sat Apr 1 12:19:13 1995 Andrew McCallum * Makefile.in (OBJECTS_SUBMINOR_VERSION): Version 0.1.6. * NSObject.m (+superclass): New method. * behavior.c (behavior_debug): Fix typo in variable name use. * NSObject.m (+conformsToProtocol:): For now, send conformsTo: to Protocol object. * objects/stdobjects.h (OBJECTS_MAJOR_VERSION, OBJECTS_MINOR_VERSION, OBJECTS_SUBMINOR_VERSION): New #define's. * Makefile.in (OBJECTS_MAJOR_VERSION, OBJECTS_MINOR_VERSION, OBJECTS_SUBMINOR_VERSION): New variables. (OBJECTS_VERSION): define in terms of above. (objects/stdobjects): Set values for OBJECTS_MAJOR_VERSION, OBJECTS_MINOR_VERSION, OBJECTS_SUBMINOR_VERSION. Fri Mar 31 09:10:50 1995 Adam Fedor * NXStringTable.m (readFromFile:): Return the return value from readFromSteam so that errors get passed along. * NXStringTable_scan.l (main): Restart the parser for each new file. This fix works correctly with flex, but is a bad hack and still doesn't work right with lex. Fri Mar 31 10:28:52 1995 Andrew McCallum * configure.in: Added check for times(). * Time.m (HAVE_TIMES): Use this instead of test for solaris and hpux. * configure.in: Added check for valloc(). * objc-malloc.c (HAVE_VALLOC): if not defined, #define valloc malloc. (Reported by Mike Perik for HPUX). Tue Mar 28 12:37:22 1995 Andrew McCallum * gcc-string.patch: New version from Pieter Schoenmakers that should fix patching problems. From ftp://ftp.es.ele.tue.nl/pub/tiggr/gcc-2.6.3-statics.patch. Mon Mar 27 09:35:30 1995 Andrew McCallum * NSObject.m (+conformsToProtocol:): Renamed from -conformsToProtocol. (-conformsToProtocol:): New method. (-conformsTo:): New method. * Time.m (__hpux): Add this to #if for using times(). (Reported by Jan Springer .) Fri Mar 24 12:33:27 1995 Mark Lakata (lakata@nsdssp.lbl.gov) * NSZone.c : added #define WORDSIZE sizeof(double) (NSZoneMalloc): returns machine word aligned pointers. Actually, the word size is assumed to be equal to or smaller than sizeof(double). Fri Mar 24 10:04:54 1995 Andrew McCallum * Makefile.in (GNU_HEADERS): Added new file behavior.h. (GNU_CFILES): Added new file behavior.c. * behavior.c, objects/behavior.h: New files. * NSObject.m (retain): Call NSIncrementExtraRefCount(), not NSShouldRetainWithZone(). (Of course!) (Reported by Adam Fedor ) * Invocation.m (invoke): Fix typo. (Reported by hjl@nynexst.com (H.J. Lu).) Wed Mar 22 16:37:06 1995 Andrew McCallum * Makefile.in (OBJECTS_VERSION): Version 0.1.5. (OBJECTS_FTP_DIRECTORY): Fixed for alpha.gnu. Added many GNUSTEP files. * checks/test06.m: Inherit from NSObject, not Object. * checks/test13.m: Likewise. * checks/server.h: Likewise. * checks/server.m: Likewise. * examples/first-server.h: Likewise. * foundation/NSInvocation.h: Likewise. * examples/second-server.h: Likewise. * checks/client.m: Inherit from NSObject, not Object. Don't free connection object, release it. * IndexedCollection.m: Cast aCollectionClass to (id) so we can send NSObject protocol messages that aren't in Collecting. * Stack.m (initialize): Return void. * examples/port-client.m: Use @"" constant strings. * examples/second-server.m: Likewise. * examples/first-client.m: Likewise. * examples/first-server.m: Likewise. * examples/second-client.m: Likewise. * checks/test03.m (main): Added some #if 0'ed out new tests. * objects/CollectionPrivate.h (DeallocationHelpers): New category containing _empty and _collectionDeallocate. * BinaryCoder.m (encodeValueOfSimpleType:at:withName:): Use #ifndef __CHAR_UNSIGNED__ to prevent compiler warning. * Magnitude.m (compare:): Implemented. * foundation/NSAutoreleasePool.h: Comment fixes. * foundation/NSBundle.h: Likewise. * foundation/NSException.h: Likewise. * foundation/NSGeometry.h: Likewise. * foundation/NSRange.h: Likewise. * foundation/NSValue.h: Likewise. * NSZone.c: Include objects/objc-malloc. Likewise. * objects/String.h: Additional comments. * Invocation.m: Add header comment. * foundation/NSArray.h (arrayWithObjects): Add missing s. * NSBundle.m: Don't include NSObjectPrivate.h. * SocketPort.m: Include objects/String.h. * foundation/NSMethodSignature.h (argumentInfoAtIndex:): Comment out for now. * Set.m (_collectionDealloc): Fix super call. * Dictionary.m (_collectionDealloc): Likewise. * Array.m (_collectionDealloc): Likewise. * RetainingNotifier.m (autorelease): Implemented. * Collection.m (shallowCopyAs:, emptyCopyAs:, copyAs:): Change arg type to (Class). (dealloc, empty): Don't use safe version of makeObjectsPerform:. (_empty, _collectionDealloc): Move to a category. * objects/Collecting.h (shallowCopyAs:, emptyCopyAs:, copyAs:): Change arg type to (Class). * KeyedCollection.m: Likewise. * foundation/NSObject.h (compare:, autoreleaseClass, setAutoreleaseClass, read:, write:): Declare new category methods. * NSObject.m (class): Fix return value. (encodeWithCoder:) #ifdef out for now, until we fix compatibility with GNU Coder. (perform:with:): New method in NEXTSTEP category. * objects/Coder.h (isProxy): Method removed from NSObject(CoderAdditions). * Proxy.m (zone): New method. (isProxy): Remove method from NSObject category. Don't include objects/AutoreleasePool.h. * Coder.m (encodeSelector:withName:): Use sel_get_any_uid() to get sel type if we can't get it the normal way. (newWithCoder:): Use NSAllocateObject. (isProxy): Removed from NSObject category. * objects/Collecting.h (releaseObjects, release): Methods removed. Sat Mar 18 10:38:06 1995 Andrew McCallum * NSObject.m (zone): Implemented. * Makefile.in (GNUSTEP_MFILES): New files NSAllocateObject.m, NSBundle.m, NSCopyObject.m, NSDeallocateObject.m, NSException.m, NSGeometry.m, NSNumber.m. (GNUSTEP_HEADERS): New files foundation/NSBundle.h, foundation/NSException.h, foundation/NSGeometry.h, foundation/NSNumber.h. * NSZone.c: Base on objc_malloc and friends, not malloc. Reformat header comment. * NSAllocateObject.m, NSDeallocateObject.m, NSCopyObject.m: New files. * NSObject.m (NSAllocateObject, NSDeallocateObject, NSCopyObject): These functions moved to separate files. * objc-malloc.c (objc_valloc): New function pointer. (__objc_valloc): New function. * objects/objc-malloc.h (objc_valloc): New function declared. (OBJC_VALLOC): New macro. * Proxy.m (dealloc): Call NSDeallocateObject(). * KeyedCollection.m (dealloc): Deleted. * Dictionary.m (_collectionDealloc): Renamed from dealloc. * Set.m (_collectionDealloc): Likewise. * Array.m (_collectionDealloc): Likewise. * Connection.m: Removed Object(Retaining) category. * Set.m (_empty): Renamed from emtpy. * LinkedList.m (_empty): Likewise. * GapArray.m (_empty): Likewise. * EltNodeCollector.m (_empty): Likewise. * Dictionary.m (_empty): Likewise. * CircularArray.m (_empty): Likewise. * BinaryTree.m (_empty): Likewise. * Bag.m (_empty): Likewise. * Array.m (_empty): Likewise. Fri Mar 17 11:09:29 1995 Andrew McCallum * Coder.m (dealloc): Remove unneccesary releaseObjects. * EltNodeCollector.m (dealloc): Likewise. * Collection.m: Rename method "empty" to "_empty". Rename "releaseObjects" to "empty". * Set.m: Do retain/release/autorelease of contents as appropriate. * BinaryTree.m: Likewise. * CircularArray.m: Likewise. * SplayTree.m: Likewise. * RBTree.m: Likewise. * LinkedList.m: Likewise. * Heap.m: Likewise. * GapArray.m: Likewise. * Dictionary.m: Likewise. * Proxy.m (autorelease): Ask NSObject for autoreleaseClass. Wed Mar 15 17:56:57 1995 Andrew McCallum * Array.m: Do retain/release/autorelease of contents as appropriate. * Bag.m: Likewise. * Makefile.in (DIST_FILES): Added gcc-class.patch and gcc-string.patch. (OBJECTS_GCC_VERSION): Changed from version 2.6.1 to 2.6.3. Tue Mar 14 11:50:23 1995 Andrew McCallum * objects/CollectionPrivate.h (RETAIN_ELT, RELEASE_ELT, AUTORELEASE_ELT): New macros. Sun Mar 12 11:37:10 1995 Andrew McCallum * objects/stdobjects.h: Declare @class String; * objects/Collecting.h (alloc, respondsToSelector:, conformsToProtocol:) removed. * objects/Connection.h: Use String* instead of char*. * objects/SocketPort.h: Likewise. * objects/Port.h: Likewise. * Connection.m: Likewise. * SocketPort.m: Likewise. * Port.m: Likewise. * checks/client.m, checks/server.m: Likewise. * objects/IndexedCollecting.h (IndexRange): changed to location/length from start/end. * IndexedCollection.m: Use location/length instead of start/end. * *.[hm]: Use `release' and `dealloc' instead of `free'. * *.[hm] (initialize): return void. * objects/Collecting.h: Use `release' and `dealloc' instead of `free'. (write:, read:): Removed. (respondsToSelector:, conformsToProtocol:) Renamed from old Object method names to NSObject method names. * NSZone.c: New file, renamed from zone.c. Include foundation/NSZone, not foundation/zone.h. * Makefile.in (GNU_MFILES): Remove AutoreleasePool.m, AutoreleaseStack.m, ObjectRetaining.m. (GNU_HEADERS): Remove AutoreleasePool.h, AutoreleaseStack.h, ObjectRetaining.h * checks/Makefile.in (string): New test program. * objects/Coder.h: Changed superclass from Object to NSObject. * objects/Collection.h: Likewise. * objects/Stream.h: Likewise. * objects/RNGAdditiveCongruential.h: * objects/RNGBerkeley.h: Likewise * objects/Random.h: Likewise. * objects/Magnitude.h: Likewise. * objects/RetainingNotifier.h: Likewise. * objects/BinaryTreeNode.h: Likewise. * objects/LinkedListNode.h: Likewise. * objects/Lock.h: Likewise. * objects/stdobjects.h: Include foundation/NSObject.h instead of objc/Object.h. Sat Mar 11 16:39:18 1995 Andrew McCallum * Makefile.in (NEXTSTEP_MFILES): Renamed from NeXT_MFILES. (NEXTSTEP_CFILES): Renamed from NeXT_CFILES. (NEXTSTEP_OTHER_SRCFILES): Renamed from NeXT_OTHER_SRCFILES. (GNUSTEP_MFILES, GNUSTEP_CFILES, GNUSTEP_HEADERS, GNUSTEP_OBJS): New variables. (GNU_MFILES): Added CString.m, ConstantString.m, MutableCString.m, MutableString.m, String.m. (GNU_HEADERS): Added String.h. (GNUSTEP_HEADERS): Added NSAutoreleasePool.h, NSObjCRuntime.h, NSString.h. (DIST_FILES): Added GNUSTEP files. * configure.in: Renamed variables from NeXT... to NEXTSTEP. Added GNUSTEP variables. * objects/ValueHolding.h (ValueSetting): Methods now return `void' instead of `self'. * foundation/NSZone.h: Renamed from foundation/zone.h. Thu Mar 9 15:05:45 1995 Andrew McCallum * zone.c, foundation/zone.h: New files from Mark Lakata. * Makefile.in (GNUSTEP_HEADERS): Added foundation/NSZone.h. Wed Mar 8 17:35:01 1995 Andrew McCallum * Coder.m: `CLASS' #define no longer necessary, using `Class'. * Proxy.m: Likewise. * Connection.m: Likewise. * objects/stdobjects.h (CLASS): #define removed. * objects/Proxy.h (class): use "Class" instead of "Class*" to match new runtime. * Makefile.in (GNUSTEP_HEADERS): New variable. (DIST_FILES): Added GNUSTEP_HEADERS. * configure.in: Likewise. * configure.in: Renamed NeXT_HEADERS to NEXTSTEP_HEADERS. * Makefile.in: Likewise. * Makefile.in (NeXT_HEADERS): Move from objects/next-includes up to top. (OBJECTS_NEXT_INCLUDES): Look directly in top level directory. (dist, mostlyclean, installdirs): Likewise. Sat Feb 11 16:20:49 1995 Andrew McCallum * Makefile.in (OBJECTS_VERSION): Version 0.1.4. Wed Feb 1 15:26:11 1995 Andrew McCallum * checks/test01.m: Use lrand48() instead of random() if defined(__hpux). * checks/test09.m: Likewise. * checks/test04.m: Likewise. (Patch from Timothy Mooney ) Thu Jan 26 12:52:33 1995 Andrew McCallum * objc-gnu2next.m: Convert Class* to Class. * Proxy.m: Likewise. * Coder.m: Likewise. Fri Jan 13 12:57:50 1995 Andrew McCallum * Makefile.in (OBJECTS_VERSION): Version 0.1.3. * ConnectedCoder.m (newDecodingWithConnection:timeout:): On timeout use objc_free to free the buffer. * checks/client.m (main): Only release remote_peer_obj if it really is a remote object. * examples/second-client.m (main): Only free appellation string if it's from a remote object. Mon Jan 9 12:14:03 1995 Andrew McCallum * RetainingNotifier.m (autorelease): New (unimplemented) method. (Reported by Peter Kristensen ). Fri Jan 6 17:57:08 1995 Andrew McCallum * Makefile.in (DIST_FILES): Added file MACHINES. Tue Dec 13 11:53:54 1994 Andrew McCallum * Makefile.in (OBJECTS_VERSION): Version 0.1.2. * Coder.m (Object (CoderAdditions)): Removed methods retainCount, dealloc, release, retain. * objects/Coder.h (Object (CoderAdditions)): Likewise. Mon Dec 12 14:13:58 1994 Andrew McCallum * Makefile.in (dvi): Now points at libobjects.dvi. (libobjects.dvi): New target, disabled until texinfo.tex is fixed. Fri Dec 9 20:00:56 1994 Andrew McCallum * Makefile.in (ANNOUNCE): depends on news.texi. * Makefile.in (version.texi): Output FTP vars only if non-empty. * Makefile.in (OBJECTS_FTP_MACHINE,OBJECTS_FTP_DIRECTORY): New vars. (version.texi): set OBJECTS_FTP_MACHINE and OBJECTS_FTP_DIRECTORY. * Makefile.in (OBJECTS_VERSION): Bumped to 0.1.1. Wed Dec 7 12:59:32 1994 Andrew McCallum * SocketPort.m: Include #if _AIX. (Reported by Todd B. Templeton .) Sun Nov 20 19:19:13 1994 Andrew McCallum (mccallum@mustang.cs.rochester.edu) * Connection.m (connectionForward,connectionPerformAndDismissCoder): Removed old #if'ed-out versions. Mon Nov 14 10:58:46 1994 Andrew McCallum (mccallum@vein.cs.rochester.edu) * objects/objc-gnu2next.h: (sel_get_uid): Fix typo. (class_is_class, class_is_meta_class, object_is_class, object_is_instance, object_is_meta_class): New functions. The above from a patch by Matthias Klose Sun Nov 13 14:29:37 1994 Andrew McCallum (mccallum@moose.cs.rochester.edu) * Makefile.in (diff): Fix tar call. Add proper arguments to diff. Thu Nov 10 16:51:48 1994 Andrew McCallum (mccallum@vein.cs.rochester.edu) * news.texi (Noteworthy changes since version @samp{0.1.0}): New section. * Makefile.in (TAGS): Use DIST_FILES, not non-existant SRCS. Wed Nov 9 18:34:53 1994 Andrew McCallum (mccallum@vein.cs.rochester.edu) * configure.in: Remove duplicate NeXT_runtime=0. Tue Nov 8 10:44:30 1994 Andrew McCallum (mccallum@moose.cs.rochester.edu) * libobjects.texi (Organization): Updated inheritance tree. * checks/test12.m (main): Free "rng", not "r" twice. * TextCoder.m (encodeName): Do right thing for NULL name. (Above three reported by Stephen Peters ) * Proxy.m (autorelease): New method. * Time.m: Patch for Solaris 2.4. Use times() instead of getrusage(). (Patch from Stephen Peters ) * Makefile.in (GNU_MFILES,GNU_HEADERS): Added AutoreleasePool, AutoreleaseStack and ObjectRetaining. * AutoreleasePool.m: Removed retain_count stuff. Now setting autorelease_class. * ObjectRetaining.m: Removed stack release code. (autorelease_class): New variable. * objects/Retaining.h (autorelease): New method. Added comments. * objects/objc-gnu2next.h: Moved Object(GNUExtentions) category from stdobject.h to here. * Makefile.in (DIST_FILES): Added README.ULTRIX. * Makefile.in (install,installdirs,includedir): Make NEXT_HEADERS install to proper place: objects/next-include/. Fri Nov 4 01:32:27 1994 Andrew McCallum (mccallum@moose.cs.rochester.edu) * Makefile.in (diff): New target. * Makefile.in (ADVERTISEMENT): New target. * Version 0.1.0 released. Thu Nov 3 19:20:28 1994 Andrew McCallum (mccallum@mustang.cs.rochester.edu) * Connection.[hm] (connectionForward:::): Added object argument. Use selectorTypeForProxy: if defined (NeXT_runtime). * Proxy.m (forward::): Added object argument to connectionForward. (selectorTypeForProxy:): Add an Object Category with this method. * Coder.m (decodeName:): Terminate char* with 0. * collhash.c: Use objc_malloc and friends instead of __objc_xmalloc and friends. * StdioStream.m (writeBytes:length:): Use fwrite, not write. (readBytes:length:): Use fread, not read. Wed Nov 2 20:59:36 1994 Andrew McCallum (mccallum@leopard.cs.rochester.edu) * configure.in: Updated for Autoconf 2.0 * Makefile.in (DIST_FILES): Changed install.sh to install-sh. (distclean): Added config.log, config.cache. (prefix, exec_prefix): Updated for Autoconf 2.0 Fri Oct 28 18:20:28 1994 Andrew McCallum (mccallum@mustang.cs.rochester.edu) * *.[hm]: Change many "NeXT_cc" to "NeXT_runtime" * Proxy.[hm]: Add and use _method_types ivar if NeXT_runtime. * objects/objc-gnu2next.h: Many addtional functions #define'd. * objc-gnu2next.m: New file. * Makefile.in (GNU_MFILES): Added objc-gnu2next.m. * BinaryCoder.m (encode,decodeValueOfSimpleType:...): Added code to write to stream directly (i.e. it does its own architecture independent coding). This replaces previous messy code that interfaced with the internals of GNU TypedStream's. * Makefile.in (GNU_MFILES,GNU_HFILES): Removed bcoder-stream.[hm]. Thu Oct 27 17:39:49 1994 Andrew McCallum (mccallum@mustang.cs.rochester.edu) * SocketPort.m (sendPacket:toPort:timeout:, newRemoteWithNumber:onHost:): Added casts to (char*) to prevent warnings on systems that don't have "const" on args to gethostbyname() and sendto(). * ConnectedCoder.h: New #define's METHODTYPE_REQUEST, METHODTYPE_REPLY. * Connection.m (_typeForSelector:remoteTarget:): New method. (_handleMethodTypeRequest:): New method. (doReceivedRequestsWithTimeout:): Watch for METHODTYPE_* msgs. (newReceivedReplyRmcWithSequenceNumber:): Likewise. * Proxy.m (selectorTypeForProxy:): New method. * Proxy.h (_method_types): New instance variable. * mframe.[hm], mtypes.[hm]: New files. * Makefile.in (GNU_MFILES): Added mframe.m (GNU_HFILES): Added mframe.h. (GNU_CFILES): mtypes.c. (GNU_OTHER_SRCFILES): Added mtypes.h. * Connection.m (connectionForward,connectionPerformAndDismissCoder): Use functions in mframe.m instead of previous DO-specific method frame code. Mon Oct 24 18:41:35 1994 Andrew McCallum (mccallum@leopard.cs.rochester.edu) * configure.in: Added AC_HEADER_CHECK for sys/rusage.h and ucbinclude/sys/resource.h needed in Time.m on various SYSV systems. * *.[hm]: Changed method name encodeType: to encodeValueOfType:. Likewise for decodeType and SimpleType method names. Makefile.in (GNU_OTHER_SRCFILES): Removed bzero.c. (DIST_FILES): Added README.BZERO. configure.in: Removed bzero stuff. Thu Oct 20 13:10:50 1994 Andrew McCallum (mccallum@vein.cs.rochester.edu) * IndexedCollection.m (putElement:atKey:): New method, needed for KeyedCollecting protocol. (reported by Niels Mvller ) Wed Oct 19 19:35:32 1994 Andrew McCallum (mccallum@zebra.cs.rochester.edu) * configure.in: Look for libraries "socket" and "nsl", needed for the distributed objects check/example programs on Solaris machine. * checks/test01.m,test04.m,test09.m: Use lrand48 instead of random if on Solaris machine. Tue Oct 18 10:27:29 1994 Andrew McCallum (mccallum@graphite.cs.rochester.edu) * Set.[hm] (*WithCollection:): Renamed from *With:. * *.[hm]: Changed method name "initCapacity" to "initWithCapacity". Changed method names "...Encoding:" to "...(With)Type:" to match Coder method names. Fri Oct 7 17:08:57 1994 Andrew McCallum (mccallum@vein.cs.rochester.edu) * DelegatePool.[hm], Makefile.in: Renamed "DelegateList" to "DelegatePool" to avoid false association with List object. Thu Sep 22 10:06:19 1994 Andrew McCallum (mccallum@llama.cs.rochester.edu) * configure.in: Check for bzero, and include bzero.o in the library if not. (This works around a bug in libobjc.) * Makefile.in (GNU_OBJS): Added @BZERO@. (GNU_OTHER_SRCFILES): Added bzero.c. * *.m: Added methods for Coding where necessary; a few just send -notImplemented: for now. Tue Sep 20 20:11:57 1994 Andrew McCallum (mccallum@llama.cs.rochester.edu) * objects/ValueHolding.h: Divided ValueHolding protocol into ValueGetting and ValueSetting. * GCC-BUGS, CREDITS: new files. * Makefile.in (DIST_FILES): Added GCC-BUGS, CREDITS. Mon Sep 19 14:42:26 1994 Andrew McCallum (mccallum@llama.cs.rochester.edu) * LinkedList.m (successorOfElement,predecessorOfElement): return nil when there is no such element because arg was first or last in list; previously it raised an error. Mon Sep 12 18:54:47 1994 Andrew McCallum (mccallum@vein.cs.rochester.edu) * HashTable.[hm]: Changed GNUHashState to NXHashState. Tue Sep 6 21:11:38 1994 Andrew McCallum (mccallum@vein.cs.rochester.edu) * LinkedList.m, LinkedListNode.m EltNode-m: Added methods for Coding. Sat Aug 20 18:34:38 1994 Andrew McCallum (mccallum@vein.cs.rochester.edu) * examples/*: Added example files: Makefile.in, dictionary.m, port-server.m, port-client.m, first-server.[hm], first-client.m, second-server.[hm], second-client.[hm], textcoding.m Fri Aug 19 18:39:06 1994 Andrew McCallum (mccallum@vein.cs.rochester.edu) * Collection.m, Set.m: Added new methods for Coding. * Makefile.in: Include new files in the distribution. Add new classes: Stream, StdioStream, MemoryStream, Coder, TextCoder, BinaryCoder, Port, SocketPort, Connection, Proxy, ConnectedCoder, Lock, RetainingNotifier. New protocols: Coding, Retaining, Locking. New text files: announce.texi, ANNOUNCE, readme.texi, README. Thu Aug 11 12:30:20 1994 Andrew McCallum (mccallum@vein.cs.rochester.edu) * checks/Makefile.in (CC): Changed from gcc to @CC@. * CircularArray.m (insertElement:atIndex:): Swapped order of incrementCount and CIRCULAR_TO_BASIC. (Test case crash reported by Matthias Klose .) Wed Aug 10 12:30:45 1994 Andrew McCallum (mccallum@raccoon.cs.rochester.edu) * Makefile.in: Defined GNU_MFILES, NeXT_MFILES, GNU_CFILES, NeXT_CFILES, GNU_HEADERS, NeXT_HEADERS, GNU_OTHER_SRCFILES, NeXT_OTHER_SRCFILES. Removed *OFILES. Renamed DISTFILES to DIST_FILES. Tue Aug 9 15:21:43 1994 Andrew McCallum (mccallum@mink.cs.rochester.edu) * Changed name to libobjects. All files changed accordingly. * Makefile.in (DISTFILES): Added install.sh. Mon Aug 8 13:15:46 1994 Andrew McCallum (mccallum@vein.cs.rochester.edu) * Makefile.in (GOBJC_HDRS): Removed gobjc/ReferenceCounting.h. Will be replaced by Retaining protocol. Sun Aug 7 17:13:08 1994 Andrew McCallum (mccallum@vein.cs.rochester.edu) * config.nextcc.h: Created. * configure.in: Update to use config.nextcc.h, define NeXT_cc instead of NXcc. Flipped the logic on NeXT32plus. (Reported by Matthias Klose ) * Time.[hm]: Hack to make it work with Solaris rusage. Fri Jul 22 11:41:32 1994 Andrew McCallum (mccallum@vein.cs.rochester.edu) * Makefile.in (dist): Makefile.depend and Makefile.local forced to be empty files by touch. Sat Jul 16 13:18:10 1994 R. Andrew McCallum (mccallum@ngoma) * configure.in: Define NXcc if using NeXT's cc. Sources #ifdef'ing (NeXT) don't distinguish between NeXT cc and gcc on a NeXT. *.[hm]: Change #ifdef (NeXT) to #ifdef (NXcc) * Makefile.in: include Makefile.local. * zone.c, gobjc/next-includes/zone.h: New files. Wed Jul 6 16:23:16 1994 Andrew McCallum (mccallum@swan.cs.rochester.edu) Changed name to from libcoll to libgobjc: * All files: Changed name to "GNU Objective-C Class Library" in all header comments. * gobjc: Renamed coll to gobjc. * gobjc/stdgobjc.h: Renamed from coll/collstd.h. Removed some declarations that were already in gobjc/objc-malloc.h. * gobjc/next-includes/objc: Created * gobjc/next-includes/objc/ {List.h,HashTable.h,Storage.h,NXStringTable.h}: Moved from gobjc. * Makefile.in: Names changed from libcoll to libgobjc. * gobjc/next-include/objc/*.h: Look in objc instead of coll. * gobjc/next-include/objc/List.h: Changed GNU_ to NX_. Tue Jul 5 15:51:58 1994 Andrew McCallum (mccallum@vein.cs.rochester.edu) * Storage.m (_makeRoomForAnotherIfNecessary): Added self-> to find ivar in assert() call. Reported by ratlifc@ctron.com (Christian A. Ratliff). Tue Jun 7 16:21:57 1994 Andrew McCallum (mccallum@raccoon.cs.rochester.edu) * List.m (incrementCount): Compare numElements and maxElements by >= instead of ==. (Reported by Paul Kunz.) Fri Jun 3 13:26:42 1994 Andrew McCallum (mccallum@zebra.cs.rochester.edu) * LinkedList.m (successorOfElement:,predecessorOfElement:): Added. * (removeElementAtIndex:): Return old element. (Both reported by nisse@lysator.liu.se) Tue May 24 10:13:38 1994 Andrew McCallum (mccallum@brain.cs.rochester.edu) * coll/objc-gnu2next.h (objc_read_types): Removed ## from NXWriteTypes() and NXReadTypes(). -cpp-traditional doesn't like it, and 'args' should never be emtpy anyway. (Reported by Stefan Reich ) * checks/Makefile.in (LIBS): Removed -lobjc, added LIBOBJC, made it conditional on NeXT cc test from configure.in. * configure.in: Added LIBOBJC substitution. * collstd.m: Added missing semicolon to coll_NeXT_cc_version line. * Storage.m (_makeRoomForAnotherIfNecessary): Added assert() checking for non-zero maxElements. * Makefile.in (install): Changed HDRS to INSTALLHDRS. (Reported by Matthias Klose ) Mon May 9 18:30:05 1994 Andrew McCallum (mccallum@vein.cs.rochester.edu) * Storage.m (initCount:elementSize:description): Make sure maxElements >= 1. (Reported by Paul Kunz.) These from Kresten Thorup: * collstd.[hm] (#if NeXT): Added @interface/@end. Added -shouldNotImplement:. * configure.in, collstd.m: Changed NX_COMPILER_RELEASE to NX_CURRENT_COMPILER_RELEASE. Sun May 8 19:40:40 1994 Andrew McCallum (mccallum@vein.cs.rochester.edu) * configure.in: Added check for nested function support. * config.nested.c: Created. * Makefile.in: Removed "-include Makefile.depend". Removed "-include Makefile.local". * List.m (removeObjectAt:): Now returns old object. (Reported by Paul Kunz.) Fri May 6 11:11:17 1994 Andrew McCallum (mccallum@vein.cs.rochester.edu) * collstd.[hm]: Defined coll_NeXT_cc_version. * checks/test11.m: Modified from NXStringTable test code provided by * checks/Makefile.in: Added test11.m, NXStringTable.example. * Makefile.in: Added support for NXStringTable_scan.lex * eltfuncs.m (elt_get_encoding): Fixed bug by adding char_ptr_u. (__init_comp_func_hashtable(): Passing elt_{hash,compare}... to coll_hash_new. Thu May 5 09:47:08 1994 Andrew McCallum (mccallum@vein.cs.rochester.edu) * Makefile.in, configure.in: Automatically check if using NeXT's compiler. If so, add -cpp-traditional, don't compile or install NeXT compatibility classes. If not, compile and install NeXT compatibility classes. MAKEDEFINES now includes $(INCLUDEFLAGS). * StringTable*: Changed name to NXStringTable*. * collstd.[hm]: #ifdef NeXT -compare:. Added. * eltfuncs.m: Changed to use coll/collhash.[hc] instead of objc/hash.[hc]. Added (void*) casts to __objcx[mc]alloc. Tue May 3 14:09:03 1994 Andrew McCallum (mccallum@vein.cs.rochester.edu) * Makefile.in: Removed Makefile.depend target. Tue Apr 19 17:55:45 1994 Andrew McCallum (mccallum@zebra.cs.rochester.edu) * Storage.m (initCount:elementSize:description, setNumSlots): Clear the allocated memory. Patch contributed by Adam Fedor * List.m (addObject:): Now calls insertObject:at:, as does NeXT's. (removeLastObject): Now calls removeObjectAt:, as does NeXT's. The following are minor changes to enable compilation with NeXTSTEP 3.3 cc. Thanks to Kresten Krab Thorup. * Collection.m (allocCopy): #ifdef NeXT object_copy takes 2 args. * DelegateList.m (+initialize): Added. * eltfuncs.m: Define _C_ATOM. Fix hash function types. #ifdef NeXT add definitions for assert, objc_fatal, __objc_xmalloc, __objc_xcalloc. Sat Feb 26 11:39:26 1994 Andrew McCallum (mccallum@vein.cs.rochester.edu) * DelegateList.[hm] (delegateListCollection): Changed name from delegateListList. Changed because what's returned is not a List. (delegateListAddObjectIfAbsent:) Created. Fri Jan 21 13:29:48 1994 Andrew McCallum (mccallum@vein.cs.rochester.edu) * Collection.m (safeWithElementsCall:, safeWithElementsCall:whileTrue:): Removed extra -addContentsOf:. (Reported by Allan Clearwaters ) Fri Dec 17 14:45:30 1993 Andrew McCallum (mccallum@raccoon.cs.rochester.edu) * List.m (insertObject:at:): Fixed bug that occured when trying to insert at index zero on an empty list. (Reported by Paul Kunz) Tue Nov 16 18:40:12 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * Collecting.h, Collection.m, *.m: Renamed -includesSameContents: to -contentsEqual:. "Equal" reminds the programmer that "isEqual" is called on content objects. I think "Same" is used by Brad Cox's code to mean something different from "isEqual". Later we could add "contentsSame:" if it proves useful. Don't use "includes" because programmers might think that we are talking about a subset operation here---no this method tests for complete membership equality. IndexedCollecting.h, IndexedCollection.m: Renamed -includesSameContentsInOrder: to -contentsEqualInOrder:. Collection.m (isEqual:): Removed. Now we just let Object take care of equality testing. If you want to test equality of contents, use -hasEqualContents:. Thu Nov 11 17:01:37 1993 Andrew McCallum (mccallum@llama.cs.rochester.edu) * coll/KeyedCollecting.h, KeyedCollection.m: Changed -insertObject:atKey: to putObject:atKey:. In KeyedCollection "insert" doesn't really insert. If there already an object at that key, it replaces. But we can't use replace because there might not be an object at that key yet. "Insert" was a bad name because the method replaces an element if there already is one at that key. "Put" is different from "replace" because "put" can place elements at keys that don't already have elements associated with them. This naming scheme also has the advantage that we can later use "insertObject:atKey: for a collection that allows multiple elements at a single key. * Makefile.in, coll/collstd.h, collstd.m: Moved version information from version.c to collstd files. (version.c): Removed. * Time.m: (indexOf...Name, nameOf...Index): Implemented. Wed Nov 10 13:36:06 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * Collection.m: (-includesSameContents:): Added a check for same comparisonFunction. (-compare:): Implemented. * IndexedCollection.m (-indexOfFirstIn:, -indexOfFirstNotIn:): Implemented. * readme.texi, news.texi: Created. Changed Makefile to support these. * checks, checks/Makefile.in: Renamed tests directory to checks. Created autoconf Makefile.in for checks directory. Wed Nov 3 10:27:52 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * coll/Collecting.h: (newEnumState, freeEnumState:) Added. Now we can avoid memory leaks. Later we can built an Iterator class on top of these methods if we like. *.m: Make use of new enum state methods. * IndexedCollection.m (indexOfFirstDifference:) Implemented. Tue Nov 2 13:40:34 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * RBTree.m (removeElement:,_RBTreeDeleteFixup): Added. RBTree should now be operational. * BinaryTree.m, RBTree (nilNode): Added. Now using this sentinal to make a few operations more efficient. Mon Nov 1 15:07:48 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * *.m: Made sure all function pointers are dereferenced when called. * SplayTree.m (-splayNode:, -sortAddElement:byCalling:, -insertElement:after:, -insertElement:before:, -insertElement:atIndex:, -removeElement:, -_doSplayOperationOnNode:): Added. SplayTree should now be operational. * eltfuncs.m (elt_fprintf_elt): Now passing "l" when fprintf'ing ... long elements. * coll/CollectionPrivate.h (RETURN_BY_CALLING_EXCEPTION_FUNCTION): No longer uses __builtin_apply and __builtin_return unnecessarily. Sun Oct 31 12:34:55 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * BinaryTree.m (-leftRotateAroundNode:, -rightRotateAroundNode:): Fixed bug occurring when rotation child is nil. (rootNode): Added. * Collection.m, KeyedCollection.m, IndexedCollection.m (-...Object:...): Added CHECK_CONTAINS_OBJECTS_ERROR; Fri Oct 29 14:22:41 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * KeyedCollection.m, Collection.m: Removed use of LAMBDA(). Thu Oct 28 15:44:23 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * coll/Time.h: Removed from @interface line. Tue Oct 26 8:32:48 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * Released version 931026. Mon Oct 25 12:41:28 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * coll/*Collecting.h: Removed shallowCopy... methods with weird options. These can be done easily and more flexibly with enumerations. * coll/*Collecting.h, *Colletion.m: Removed definition and use of COLL_NO_ELEMENT, COLL_NO_OBJECT, COLL_NO_KEY, COLL_NO_INDEX. Added ...ifAbsentCall: methods to replace this functionality. * coll/Collecting.h, Collection.m: ...AllOccurrences... methods now return self. Thu Oct 21 17:41:49 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * libcoll.texi: Created. Tue Oct 19 10:25:34 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * coll/Collecting.h: Changed method name -freeContents to -freeObjects. Both names are pretty clear, and the later has the advantage of compatibility with NeXT. * coll/Collecting.h: Changed method name -containsObjects to -contentsAreObjects. The previous name could be interpretted as testing whether or not the collection was empty; in fact this method just tests whether or not the collection was initialized to hold objects (i.e. initEncoding:@encode(id)). * coll/collstd.h: Added #define's for defining nested functions in the argument position: LAMBDA, LAMBDA_VOID_PERFORM, LAMBDA_ID_PERFORM, LAMBDA_BOOL_PERFORM. * coll/Collecting.h, KeyedCollecting.h, IndexedCollecting.h: Removed many methods for various combinations of perform:, perform:with:, perform:in, perform:in:with:. All these can now be replaced with ...ByCalling: methods now that we can easily define nested functions with the LAMBDA macro's. These methods really ballooned the size of the protocols, and they still didn't provide all the potentially useful conbinations. This new scheme is far more flexible. I left the -makeObjectsPerform: and -makeObjectsPerform:with: for compatibility with NeXT. Mon Oct 18 15:18:01 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * eltfuncs.m: Fixed overflow bug in compare functions. Fri Oct 8 11:47:56 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * List.m (replaceObjectAt:): Now returns oldObject. (makeObjectsPerform:with:): Now uses perform:with:. Removed -sortUsingMethod:inObject:. * coll/SortedArray.h: removed. Thu Sep 30 10:52:14 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * List.m (makeObjectsPerform:, makeObjectsPerform:with:): Removed dependence on _makeObjects...:reverseOrder:. Using #if instead. * Bag.m (removeElement:occurrences:): Added. Bag will now cause error if you try to remove an element that's not there, or not there enough times. Tue Sep 28 11:49:42 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * List.m, Storage.m: Now use objc_malloc/OBJC_MALLOC and friends instead of malloc and friends. * Makefile.in, configure.in: Created. Now libcoll works with autoconf. Also made some changes to *.m to take advantage of autoconf. * collstd.m: Changed definition of free(). (thanks to krab@iesd.auc.dk) Mon Sep 27 09:59:25 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * Bag.m (-uniqueCount): Added. * HashTable.m (-initKeyDesc:valueDesc:capacity:) Increased portability for {long, unsigned} ints. * IndexedCollecting.h, IndexedCollection.m: Added -safe...InReverse methods. * List.m (copy): Added. In order to force -shallowCopy for compatibility with NeXT. * collhash.[hc] (coll_hash_empty): Added. * Collecting.h, Collection.m: (-safe...) Added these enumerators for doing enumerations while changing the contents of the collection. * Collecting.h, Collection.m: (-initWithContentsOf:) Added. This allows for certain efficiencies, like init'ing an Array with the needed capacity from the start. Sat Sep 25 12:20:18 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * Collection.m, KeyedCollection, IndexedCollection.m: Extracted message -comparisonFunction from inside loops to improve efficiency. * Collecting.h, Collection.m: Removed the -shallowCopySelect..., etc methods and replaced them with -withElementsTrueBy..., etc methods. These shallowCopy methods make lots of sense in SmallTalk where garbage collection makes enumeration on temporary collections useful for iteration, but in ObjC I think methods with a little more flexibility would be more helpful. I also wanted to add more options to those {select,reject,collect} methods: 1) the option of deep or shallow copies, 2) the option of changing the class of the new copy. But if done in the old framework this would have exploded the number of methods. The new framework allows all the old functionality, plus the new options, plus the option to do something useful without creating a new collection. Tue Sep 21 11:52:46 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * *.m: Added -emptyCopy based on -allocCopy. Subclasses override to take care of instance vars that must change. * Collecting.h, Collection.m: Changed -addCount:... to -addObjectsCount:... and -addElementsCount:... Mon Sep 20 17:05:10 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * *.[hm]: Added code for archiving: -write:, writeInit:, writeContents:, -read:, readInit:, readContents:. I'm not sure this division of labor is the best. I'm open to suggestions for different implementations. * *.[hm]: Changed all instances of the word "description" to "encoding". Objective-C already uses @encode() for these things. We shouldn't introduce new vocabulary for refering to the same thing. * *.[hm]: Removed methods that allowed specification of comparison function independent of encoding. This will allow us to archive the comparison function by archiving the encoding. Most people will be able to get custom comparisons by overriding -compare:. If you really, really need some new weird comparisons for non-objects, you can still subclass the collection and override -comparisonFunction. If people think that we will want to want custom comparisons of non-objects *very often*, then we come up with another scheme that still allows meaningful archiving of comparison functions. Sun Sep 19 19:30:02 1993 Andrew McCallum (mccallum@swan.cs.rochester.edu) * coll/eltfuncs.[hm]: Created. Moved functions for manipulating elt's from CollectionPrivate.h to eltfuncs.h. This makes elt a little more separate from libcoll, so others can use it too. I changed the prefix on the names accordingly from coll_ to elt_. Also, added function for getting encoding from comparison function. Also, declared all elt_compare_ and elt_hash_ functions extern. Thu Sep 9 09:49:29 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * LinkedListEltNode.[hm], BinaryTreeEltNode.[hm], RBTreeEltNode.[hm]: Created these files and moved EltNode code into them. This cleanly separates the basic LinkedList code from the EltNodeCollector stuff (and similarly for BinaryTree and RBTree). The EltNode stuff strikes me as being a little messy; with this separation we can easily replace it later with something cleaner (if we can think of something cleaner). * elt.h, *.m: Changed elt union names from *_t to *_u, following suggestion of Burchard: *_t should be reserved for type names. Tue Aug 31 11:40:29 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * Storage.[hm], List.[hm]: Removed many extra features that aren't in the NeXT implementations. Our goal for these NeXT-based objects should be compatibility, not kitchen-sink features. Let people add features in Categories if they need them. * Storage.[hm]: Fixed return type for -removeLastElement to match NeXT. Unfortunately this conflicts with the IndexedCollecting declaration (NeXT's returns self, IndexedCollecting returns the removed element). I really think methods that remove elemements should return that element. We're just going to have to live with this conflict. * Storage.[hm]: Changed declaration of instance var 'dataPtr' from void** to void*, to match NeXT. * IndexedCollecting.h, IndexedCollection.m: Added -sortContents; Thu Aug 26 17:47:59 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * List.m: Changed default order of -makeObjectsPerform... and fixed comment to match NeXTSTEP reality. Wed Jul 10 14:38:23 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * BinaryTree.m, RBTree.m, EltNodeCollector.[hm]: Created. Wed Jun 2 11:48:08 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * IndexedCollecting.h: Added - successorOfObject: anObject; - predecessorOfObject: anObject; - (elt) successorOfElement: (elt)anElement; - (elt) predecessorOfElement: (elt)anElement; * BinaryTree.h, RBTree.h: Created. Mon May 31 13:33:42 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * Time.[hm]: Threw a Time object I wrote a while ago into the .tar file. Maybe someone will find it useful. * IndexedCollecting.h, IndexedCollection.m: Added methods: - (unsigned) indexOfFirstDifference: (id )aColl; - (unsigned) indexOfFirstIn: (id )aColl; - (unsigned) indexOfFirstNotIn: (id )aColl; They fit well with desired functionality for Strings, but may also be generally useful. * Created preliminary String class. It's very preliminary; I just want to see how it will fit with IndexedCollecting. * Overhauled instance variables in heirarchy. Removed all instance variables from abstract superclasses. This makes subclassing an abstract superclass a bit more of a pain, but it helps keep memory requirements down, especially for String, LinkList and all IndexedCollections. Sat May 29 11:27:01 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * IndexedCollection.m: Made cast of void* to unsigned more portable. Fri May 28 17:00:14 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * IndexedCollecting.h, IndexedCollection.m: Added -insertContentsOf:atIndex: modified from Kresten Krab Thorup. * Collecting.h, Collection.m: Added {Object,Element} to inject, detect, max and min methods. Wed May 26 12:20:21 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * Overhauled error generation. Changed #define's so error generation is easier to change again later, if necessary. Error methods now have forwarding capability. See CollectionPrivate.h, Collection.m, IndexedCollectionPrivate.h, IndexedCollection.m. * *.m: Fixed many small bugs found with -Wall. * Created Heap object. * Collection.m: Fixed -includesSameContents. * Collecting.h, Collection.m: Added -isSubsetOf: as written by Kresten Krab Thorup. Removed -includesSubsetOf:. Tue May 25 14:14:33 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * Removed ComparedCollecting protocol. Its only purpose was to allow the user to manage a comparison function---this was silly, though, because there already was a comparison function inherited from Collection! No need to have two of them. Now that there is a general interface for user-specified comparison functions, we don't need the ComparedCollecting methods. This is a big help because we no longer have the problem of trying to combine a ComparedCollection class and Array class with some ugly multiple inheritance issues. One disadvantage, however, is that it is slightly more complicated to specify a comparator that is a selector. * Overhauled comparison and hash functions. More changes than I want to describe in detail here... 1) Created temporary versions of hash.[hc] that do what I want, hopefully Kresten's new versions of hash.[hc] will do something like this. Created collhash.[hc]. 2) Added -init... methods that allow the users to specify their own comparison and hash functions instead of accepting the defaults. Mon May 24 10:46:21 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * Collecting.h, Collection.m: Removed -initWith:,... and -initDescription:with:,... methods. I don't want to add ..with: version of all -init... methods. People can use addCount,... instead. * Created IdListLink.[hm]. Changed -linkClass in ListedList.m to return [IdListLink class] if LinkedList contains objects. * Collecting.h, elt.h: Moved definition of elt union to * List.m: -isEqual: now checks [List count] at beginning. * List.m: -empty no longer realloc()'s. (for compatibility with NeXT.) * List.[hm]: Added - makeObjectsPerform:(SEL)aSel reverseOrder:(BOOL)flag; - makeObjectsPerform:(SEL)aSel with:anObject reverseOrder:(BOOL)flag; and changed -makeObjectsPerform: and -makeObjectsPerform:with: to call them. This gives the option of compatibility with pre-NeXTSTEP 3.0 List's. Sat May 22 13:53:25 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * Collection.m, Collecting.h: Changed type of initialArg from void* to elt in inject.. methods. Fri May 21 18:52:03 1993 Andrew McCallum (mccallum@vein.cs.rochester.edu) * First alpha release announced on gnu-objc@prep.ai.mit.edu Copyright @copyright{} 2005 Free Software Foundation Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved.