libs-base/Documentation/todo.tmpl.texi
Richard Frith-MacDonald b626c1f0c0 Removed some todos that have been done.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@3081 72102866-910b-0410-8b05-ffd578937521
1998-10-18 08:28:59 +00:00

224 lines
7.7 KiB
Text

@c -*-texinfo-*-
@ifclear GLOBAL-TODO
@chapter TODO
@ifset TEXT-ONLY
@include version.texi
@end ifset
@end ifclear
@itemize @bullet
@item Implement Formatter classes (NSDateFormatter, etc) [5] (980722).
@item Check that every class implements coding (correctly). [2, NSCoder] (980721).
@item Check that every class implements copying (correctly) - i.e. non-mutable classes should just retain, etc. [1, NSCopying] (980721).
@item Implement [NSDeserializer +deserializePropertyListLazilyFromData:atCursor:length:mutableContainers:]
[3 NSProxy] (980712)
@item Implement [NSDeserialiser - deserializeObjectAt:ofObjCType:fromData:atCursor:] [1] (980712)
@item Implement [NSSerialiser - serializeObjectAt:ofObjCType:fromData:] [1] (980712)
@item Improve initWithFormat releated methods for NSString and find out how to implemente the locale stuff [4 OPENSTEP/Rhapsody] (980712)
@item Make gstep-base 64bit clean [5, 64bit machine] (980629)
@item Make gstep-base smaller. Perhaps we can get rid of classes that
aren't strictly part of OpenStep and put them in an extensions-type
library. [5] (980629)
@item Fix NSLog so it conforms to specs. Need to check that write to
stderr went ok, and if not write to syslog. Also need to serealize
output (with threads). [3, OpenStep specs, threads] (980220)
@item Simplify NSException and NSAssertionHandler and make sure they
don't cause race conditions (if an exception is raised while processing
an exception. [4, exceptions, threads] (980220)
@item Fix all the places marked FIXME or xxx. [3-9] (980629)
@item Write tests for various classes using the testsuite build
by Richard Frith-Macdonald @email{richard@@brainstorm.co.uk}. Contact
him for details. [3, guile] (980629)
@item Change all the assert()'s (especially in the archiving code) to
NSAssert()'s. This will help make D.O. servers more safe from bad
clients. [2, exceptions] (980220)
@item Make NS... classes raise the NSExceptions they are supposed to.
Change many NSParameterAssert()'s into NSAssert()'s with
explanations. [2, exceptions] (970101)
@item
Many implementations could be made more efficient. The library hasn't
been efficiency tuned very much. Overridding more methods in certain
classes could make things more efficient (especially EltNodeCollector).
SplayTree's could be done using top-down splaying. collhash could be
completely reimplemented. [5-8] (970101)
@item Separate Constant and non-Constant collections for the rest of the
GNU connection classes the same way I did for Array. (970101)
@item Make sure the GNU Archiver/Unarchiver handle
-encodeConditionalObject: and -decodeObject: correctly. (970101)
@item Make sure that Encoder's properly release their CStream and
Stream's. It seems that the Stream is not getting -delloc'ed, and
therefore may not be closed, and therefore may be missing data at the
end. (970101)
@end itemize
@ignore
@section McCallum's To Do's
@itemize @bullet
@item Make sure the GNU Archiver/Unarchiver handle
-encodeConditionalObject: and -decodeObject: correctly.
@item Reorganize some of the Categories to make a minimal NSObject-using
program smaller. Currently it is huge becuase it pulls in archiving and
therefore many of the collection classes. (But perhaps this doesn't
matter, since we recommend using shared libraries anyway.)
@item Make sure that Encoder's properly release their CStream and
Stream's. It seems that the Stream is not getting -delloc'ed, and
therefore may not be closed, and therefore may be missing data at the
end.
@item Do low-level frobbing of TCP to reduce delays.
@item Make UdpPort work; make MachPort work.
@item Finish Collection heirarchy clean ups. We need non-mutable
version for many of the classes.
@item Possibly change implementation of @code{-(int)compare:anObject}
for Collection. How should non-Indexed collections be ordered?
@end itemize
@c ==================================================================
@section Questions
I would greatly appreciate your feedback on the questions
below. Please email your thoughts to mccallum@@gnu.ai.mit.edu.
@itemize @bullet
@item
I want to put method names in texinfo indices, but the colons in the
method names are interfering with info's notion of menu item names and
node names. Help. Any ideas? (Kresten?)
@item
HashTable.m (-initKeyDesc:valueDesc:capacity:) I tried to make it
portable, but I didn't try very hard. Anyone want to send in fixes?
@item
I fixed -emptyCopy in all the subclasses, but the -emptyCopy scheme
seems pretty fragile. How about calling -initFoo: inside -emptyCopy?
This way we avoid having yet another method in which instance vars
must be initialized to some consistent state. -allocCopy would never
even get called. <<ObjC insiders: This is a less well-expressed
version of what we've just been discussing in email.>>
@item
Does anyone really need the ability to set the collection element
comparison function independent of the -compare: method?
@item
How about adding flexibity in the method name that a LinkedList sends a
LinkedListNode to get/set the link ivars. This would enable us to add a
node to more than one linked list.
@item
Something like this needed?
- elementDidChange: (elt*)elementPtr;
Currently you have to remove, change, add, for some classes.
@end itemize
@section Albin's To Do List
I'm sure that there're other things to do, but these are the ones I know now:
@subsection General
@itemize @bullet
@item Make thread-safe all of my code that should be.
@item Fully annotate all of my headers.
@item Document my work and the use of its fruit.
@end itemize
@subsection Critical
@itemize @bullet
@item Code:
@itemize +
@item (@file{src/array.m}) @samp{objects_array_check}
@item (@file{src/array.m}) @samp{objects_array_map_elements}
@item (@file{src/cbs-char-p.m}) @samp{objects_char_p_describe}
@item (@file{src/cbs-int-p.m}) @samp{objects_int_p_describe}
@item (@file{src/cbs-int.m}) @samp{objects_int_describe}
@item (@file{src/hash.m}) @samp{_objects_hash_hash}
@item (@file{src/hash.m}) @samp{objects_hash_check}
@item (@file{src/hash.m}) @samp{objects_hash_description}
@item (@file{src/list.m}) @samp{objects_list_is_equal_to_list}
@item (@file{src/map.m}) @samp{_objects_map_hash}
@item (@file{src/map.m}) @samp{objects_map_check}
@item (@file{src/map.m}) @samp{objects_map_description}
@end itemize
@item Correct:
@itemize +
@item (@file{src/array.m}) @samp{objects_array_dealloc}
@item (@file{src/cbs-int.m}) @samp{_GNUSTEP_BASE_NOT_AN_INT_MARKER}
@end itemize
@item Improve the error handling of:
@itemize +
@item (@file{src/array.m}) @samp{_objects_array_insert_bucket}
@item (@file{src/hash.m}) @samp{objects_hash_add_element_known_absent}
@item (@file{src/list.m}) @samp{objects_list_at_index_insert_element}
@item (@file{src/map.m}) @samp{objects_map_at_key_put_value_known_absent}
@end itemize
@end itemize
@subsection Not So Critical
@itemize @bullet
@item Strengthen my resolve on the correctness of:
@itemize +
@item (@file{src/cbs-char-p.m}) @samp{_GNUSTEP_BASE_NOT_A_CHAR_P_MARKER}
@item (@file{src/cbs-id.m}) @samp{_GNUSTEP_BASE_NOT_AN_ID_MARKER}
@item (@file{src/cbs-int-p.m}) @samp{_GNUSTEP_BASE_NOT_AN_INT_P_MARKER}
@item (@file{src/cbs-int-p.m}) @samp{objects_int_p_is_equal}
@item (@file{src/cbs-void-p.m}) @samp{_GNUSTEP_BASE_NOT_A_VOID_P_MARKER}
@item (@file{src/hash.m}) @samp{objects_hash_rightsize}
@item (@file{src/hash.m}) @samp{objects_hash_all_elements}
@item (@file{src/map.m}) @samp{objects_map_rightsize}
@item (@file{src/map.m}) @samp{objects_map_all_keys}
@item (@file{src/map.m}) @samp{objects_map_all_values}
@end itemize
@item Improve the effeciency of:
@itemize +
@item (@file{src/array.m}) @samp{_objects_array_insert_bucket}
@item (@file{src/hash.m}) @samp{objects_hash_minus_hash}
@item (@file{src/list.m}) @samp{objects_list_at_index_insert_list}
@end itemize
@end itemize
@end ignore