1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211
|
=========================== BIG THINGS TO DO ==================================
- Distributed Objects
- Unicode support in NSString
- change the NSInvocation and NSMethodSignature machine dependent macros to
use the macros defined into the GNU compiler. This should eventually become
part of the GNU Objective-C runtime library.
- locale support?
========================== SMALL THINGS TO DO =================================
- Bug: descriptionWithCalendarFormat:timeZone:locale: does not honor timezone
argument, at least with NSCalendarDate (SKYRIX Bug 1106)
- finish NSFileManager
- port to HP-UX (NSInvocation and NSMethodSignature)
(what about OSF/1 and Ultrix?)
- serializer/deserializer
- change NSZone from class to struct
- finish NSByteOrder.h
- HH: avoid creating/releasing the formatter objects in common.m:Avsprintf
- HH: check return value of 'objc_thread_detach' in NSThread.m
- HH: description methods of NSCalendarFormat must be made timezone-aware
- HH: support GetTempPath() with mingw32
- HH: finish NSSearchPathForDirectoriesInDomains() function
- HH: merge implementation of -stringByTrimmingTailWhiteSpaces and
-stringByTrimmingTailWhiteSpaces? Or remove them altogether (not part
of gstep-base anymore either?)
- HH: add -replaceOccurrencesOfString:withString:options:range:
- NSCalendarDate parser can't parse '20041212' with %Y%m%d, because it uses
scanInt: which parses that as a complete int (needs a char-count limit)
============================ general checks ===================================
(The following does not necessary mean they are missing ;-). These should
remind implementors what do they have to check for. )
- implement `copyWithZone:' and `mutableCopyWithZone:' for all classes
- implement `encodeWithCoder:' and `initWithCoder:' for all classes
- implement meaningful `description', `descriptionWithIndent:' or
`stringRepresentation'
- revise `hash' `isEqual:' and `compare:' methods for all containers so that
isEqual/compare/hash shoud be consistent
- check that all `dealloc' calls [super dealloc] to release memory
- check that calls to [super init] are done before *any* ivar is set
- check imutable `copyWithZone:' for containers so that it performs a deep
copy, making all its content imutable
- check mutable `mutableCopyWithZone:' for containers so that it performs a
shallow copy, making all its content imutable
- thread-safe notes (comment with `// THREAD') where we access global variables
================================== CLASSES ====================================
NSArchiver, NSUnarchiver
- more tests
NSArray, NSMutableArray
- extended tests
- init* methods for immutable should throw if called twice
NSAutoreleasePool
- OK
NSBundle
- implement unloading of code (need some patches to objc-runtime)
NSCharacterSet, NSMutableCharacterSet
- init* methods for immutable should throw if called twice
- extended tests
NSCoder
- more tests with it and the NSArchiver for all methods
NSConnection, NSDistantObject, NSProxy
- TODO
NSData, NSMutableData
- extended tests
- init* methods for immutable should throw if called twice
- check subclasses for mmap and range
NSDate, NSCalendarDate
- init* methods for immutable should throw if called twice
- extended tests
NSDictionary, NSMutableDictionary
- init* methods for immutable should throw if called twice
- tests
NSDistributedLock
- test that checks concurrence
NSEnumerator
- OK
NSException
- OK
NSFileHandle
- tests
NSFileManager
- tests
- finish implementation (2-3 methods left)
NSInvocation
- port and test on HPPA HPUX
- test on Solaris
NSMethodSignature
- port and test on HPPA HPUX
- test on Solaris (code was written)
NSLock, NSRecursiveLock, NSConditionLock
- OK
NSNotification, NSNotificationCenter, NSNotificationQueue
- OK
NSObject
- OK
NSPipe
- tests
NSPosixFileDescriptor
- tests
NSProcessInfo
- OK
NSRunLoop
- write code that determines when the process is idle
NSScanner
- OK
NSSerializer, NSDeserializer
- TODO
NSSet, NSMutableSet, NSCountedSet
- tests for all methods
- write init* in concrete classes
- init* methods for immutable should throw if called twice
NSString, NSMutableString
- add support for Unicode
NSTask
- OK
NSThread
- tests
NSTimeZone, NSTimeZoneDetail
- tests
NSTimer
- tests
NSUserDefaults
- put command-line args in NSArgument domain
NSValue, NSNumber
- tests
NSZone (NSDefaultZone)
- make an allocator with zones using page-allocation functions
- make a non-free zone and support recycle
UnixSignalHandler
- OK
NSStream, NSInputStream, NSOutputStream
- implement
NSError, NSURLError
- implement
================================ DOCUMENTATION ===============================
- comment the headers about classes, functions, ivars
- comment sources about class structure and general ideas
- README.debugging
================================ NEW CLASSES =================================
Ascii Coder
- TODO: human readable and easy modifiable format. Such a class was
already designed and implemented and it is used for archiving
and unarchiving GNUstep GUI objects.
Regexp support
- new class and support methods in a category to NSString
========================== Configure, Makefile, Porting ======================
We discussed long time ago about a makefile package to help developers
easily build libraries and applications using the current free
libraries written in Objective-C. This was finally implemented by
Scott Christley and Ovidiu Predescu in the GNUstep makefile package.
|