libs-base/STATUS

389 lines
13 KiB
Text
Raw Normal View History

Status Report
*************
Please send corrections to <fedor@gnu.org>.
*Key:*
*[10]*
Complete and tested.
*[8]*
Missing a few non-core methods, definitely usable.
*[6]*
Missing several methods, but core is there, usable.
*[4]*
Begun, but missing core functionality, not usable.
*[2]*
Skeleton.
*[0]*
Nothing there.
*[?]*
Unknown status.
Classes
=======
(Many classes do not raise the proper NSExceptions yet.)
*NSArchiver:: [8]*
Doesn't yet call -awakeAfterUsingCoder:.
*NSArray:: [9]*
*NSAssertionHandler:: [9]*
*NSAttributedString:: [8]*
*NSAutoreleasePool:: [9]*
But not exception- safe
*NSBundle:: [8]*
*NSCalendarDate:: [7]*
*NSCharacterSet:: [8]*
decomposableCharacterSet and illegalCharacter set missing
*NSCoder:: [8]*
Missing class name substitution methods.
*NSConditionLock:: [8]*
*NSConnection:: [7]*
GNU Connection, however, needs:
* to handle retain/release/dealloc properly
* to be integrated with NSInvocation
* to incorporate futzing with low-level TCP-backend for better
speed
* to have UDP-backend work
* to cache ConnectedCoder's for better speed
* Thread-safety overhaul, this is major
*NSCountedSet:: [8]*
*NSData:: [8]*
*NSDate:: [8]*
*NSDeserializer:: [7]*
*NSDictionary:: [8]*
*NSDistantObject:: [7]*
*NSDistributedLock:: [7]*
*NSEnumerator:: [9]*
*NSException:: [9]*
But this needs integration with new, better
*NSFileHandle:: [9]*
*NSFileManager:: [9]*
*NSHashTable:: [8]*
*NSHost:: [8]*
*NSInvocation:: [3]*
*NSLock:: [8]*
*NSMapTable:: [8]*
*NSMethodSignature:: [4]*
*NSMutableArray:: [8]*
*NSMutableCharacterSet:: [7]*
*NSMutableData:: [8]*
*NSMutableDictionary:: [8]*
*NSMutableSet:: [8]*
*NSMutableString:: [8]*
*NSNotification:: [9]*
*NSNotificationCenter:: [9]*
*NSNotificationQueue:: [6]*
Needs integration with NSRunLoop, and efficiency improvements
*NSNumber:: [9]*
*NSObject:: [10]*
*NSProcessInfo:: [9]*
*NSProxy:: [7]*
*NSRecursiveLock:: [8]*
*NSRunLoop:: [8]*
NSTimer's not yet working, but everything else should be
*NSScanner:: [8]*
*NSSerializer:: [7]*
*NSSet:: [8]*
*NSString:: [8]*
Careful, relationship with GNU String is tricky; this could also
use fixing.
*NSTask:: [8]*
*NSThread:: [8]*
*NSTimeZone:: [8]*
*NSTimeZoneDetail:: [8]*
*NSTimer:: [6]*
Working out bugs with returning doubles.
*NSUnarchiver:: [8]*
See NSArchvier
*NSUserDefaults:: [8]*
*NSValue:: [9]*
Cross-Class Projects, or GNU-related foundations for GNUstep classes
====================================================================
*Finish subclasses of Port class: Ports based on UDP, pflocal*
sockets, and shared memory.
*String classes will get some organizational work.*
Protocols
=========
*NSCoding:: [9]*
*NSCopying:: [9]*
*NSLocking:: [9]*
*NSMutableCopying:: [9]*
*NSObjCTypeSerializationCallBack:: [9]*
*NSObject (Protocol):: [9]*
Functions
=========
Memory Allocation Functions
---------------------------
*[8] Get the Virtual Memory Page Size*
`unsigned NSPageSize (void)'
`unsigned NSLogPageSize (void)'
`unsigned NSRoundDownToMultipleOfPageSize (unsigned BYTECOUNT)'
`unsigned NSRoundUpToMultipleOfPageSize (unsigned BYTECOUNT)'
*[2] Get the Amount of Real Memory*
`unsigned NSRealMemoryAvailable (void)'
*[8] Allocate or Free Virtual Memory*
`void *NSAllocateMemoryPages (unsigned BYTECOUNT)'
`void NSDeallocateMemoryPages (void *POINTER, unsigned BYTECOUNT)'
`void NSCopyMemoryPages (const void *SOURCE, void *DESTINATION, unsigned BYTECOUNT)'
*[8] Child and Merge Zones*
void NSMergeZone(NSZone *zonep)
NSZone *NSCreateChildZone(NSZone *parentZone, size_t startSize, size_t granularity, int canFree)
*[9] Get a Zone*
`NSZone *NSCreateZone (unsigned STARTSIZE, unsigned GRANULARITY, BOOL CANFREE)'
`NSZone *NSDefaultMallocZone (void)'
`NSZone *NSZoneFromPointer (void *POINTER)'
*[10] Allocate or Free Memory in a Zone*
`void *NSZoneMalloc (NSZone *ZONE,'
`void *NSZoneCalloc (NSZone *ZONE, unsigned NUMELEMS, unsigned NUMBYTES)'
`void *NSZoneRealloc (NSZone *ZONE, void *POINTER, unsigned SIZE)'
`void NSRecycleZone (NSZone *ZONE)'
`void NSZoneFree (NSZone *ZONE, void *POINTER)'
*[9] Name a Zone*
But the function names are wrong
`void NSSetZoneName (NSZone *ZONE, NSString *name)'
`NSString *NSZoneName (NSZone *ZONE)'
Object Allocation Functions
---------------------------
*[10] Allocate or Free an Object*
`NSObject *NSAllocateObject (Class ACLASS, unsigned EXTRABYTES, NSZone *ZONE)'
`NSObject *NSCopyObject(NSObject *ANOBJECT, unsigned EXTRABYTES, NSZone *ZONE)'
`void NSDeallocateObject (NSObject *ANOBJECT)'
*[9] Decide Whether to Retain an Object*
`BOOL NSShouldRetainWithZone (NSObject *ANOBJECT, NSZone
*REQUESTEDZONE)'
*[9] Modify the Number of References to an Object*
`BOOL NSDecrementExtraRefCountWasZero(id ANOBJECT)'
`void NSIncrementExtraRefCount(id ANOBJECT)'
Error-Handling Functions
------------------------
*[9] Change the Top-level Error Handler*
``NSUncaughtException'Handler *`NSGetUncaughtException'Handler(void)'
`void `NSSetUncaughtException'Handler(`NSUncaughtException'Handler *HANDLER)'
*[9] Macros to Handle an Exception*
`NS_DURING'
`NS_ENDHANDLER'
`NS_HANDLER'
`NS_VALUERETURN(VALUE, TYPE)'
`NS_VOIDRETURN'
*[9] Call the Assertion Handler from the Body of an Objective-C Method*
`NSAssert(BOOL CONDITION, NSString *DESCRIPTION)'
`NSAssert1(BOOL CONDITION, NSString *DESCRIPTION, ARG)'
`NSAssert2(BOOL CONDITION, NSString *DESCRIPTION, ARG1, ARG2)'
`NSAssert3(BOOL CONDITION, NSString *DESCRIPTION, ARG1, ARG2, ARG3)'
`NSAssert4(BOOL CONDITION, NSString *DESCRIPTION, ARG1, ARG2, ARG3, ARG4)'
`NSAssert5(BOOL CONDITION, NSString *DESCRIPTION, ARG1, ARG2, ARG3, ARG4, ARG5)'
*[9] Call the Assertion Handler from the Body of a C Function*
`NSCAssert(BOOL CONDITION, NSString *DESCRIPTION)'
`NSCAssert1(BOOL CONDITION, NSString *DESCRIPTION, ARG)'
`NSCAssert2(BOOL CONDITION, NSString *DESCRIPTION, ARG1, ARG2)'
`NSCAssert3(BOOL CONDITION, NSString *DESCRIPTION, ARG1, ARG2, ARG3)'
`NSCAssert4(BOOL CONDITION, NSString *DESCRIPTION, arg1, ARG2, ARG3, ARG4)'
`NSCAssert5(BOOL CONDITION, NSString *DESCRIPTION, ARG1, ARG2, ARG3, ARG4, ARG5)'
*[9] Validate a Parameter*
`NSParameterAssert(BOOL CONDITION)'
`NSCParameterAssert(BOOL CONDITION)'
Geometric Functions
-------------------
*[10] Create Basic Structures*
`NSPoint NSMakePoint(float X, float Y)'
`NSSize NSMakeSize(float W, float H)'
`NSRect NSMakeRect(float X, float Y, float W, float H)'
`NSRange NSMakeRange(unsigned int LOCATION, unsigned int LENGTH)'
*[10] Get a Rectangle's Coordinates*
`float NSMaxX(NSRect ARECT)'
`float NSMaxY(NSRect ARECT)'
`float NSMidX(NSRect ARECT)'
`float NSMidY(NSRect ARECT)'
`float NSMinX(NSRect ARECT)'
`float NSMinY(NSRect ARECT)'
`float NSWidth(NSRect ARECT)'
`float NSHeight(NSRect ARECT)'
*[10] Modify a Copy of a Rectangle*
`NSRect NSInsetRect(NSRect ARECT, float DX, float DY)'
`NSRect NSOffsetRect(NSRect ARECT, float DX, float DY)'
`void NSDivideRect(NSRect INRECT, NSRect *SLICE, NSRect *REMAINDER, float AMOUNT, NSRectEdge EDGE)'
`NSRect NSIntegralRect(NSRect ARECT)'
*[10] Compute a Third Rectangle from Two Rectangles*
`NSRect NSUnionRect(NSRect ARECT, NSRect BRECT)'
`NSRect NSIntersectionRect(NSRect ARECT, NSRect BRECT)'
*[10] Test Geometric Relationships*
`BOOL NSEqualRects(NSRect ARECT, NSRect BRECT)'
`BOOL NSEqualSizes(NSSize ASIZE, NSSize BSIZE)'
`BOOL NSEqualPoints(NSPoint APOINT, NSPoint BPOINT)'
`BOOL NSIsEmptyRect(NSRect ARECT)'
`BOOL NSMouseInRect(NSPoint APOINT, NSRect ARECT, BOOL FLIPPED)'
`BOOL NSPointInRect(NSPoint APOINT, NSRect ARECT)'
`BOOL NSContainsRect(NSRect ARECT, NSRect BRECT)'
*[10] Get a String Representation*
`NSString *NSStringFromPoint(NSPoint APOINT)'
`NSString *NSStringFromRect(NSRect ARECT)'
`NSString *NSStringFromSize(NSSize ASIZE)'
Range Functions
---------------
*[9] Query a Range*
`BOOL NSEqualRanges(NSRange RANGE1, NSRange RANGE2)'
`unsigned NSMaxRange(NSRange RANGE)'
`BOOL NSLocationInRange(unsigned LOCATION, NSRange RANGE)'
*[9] Compute a Range from Two Other Ranges*
`NSRange NSUnionRange(NSRange RANGE1, NSRange RANGE2)'
`NSRange NSIntersectionRange(NSRange RANGE1, NSRange RANGE2)'
*[9] Get a String Representation*
`NSString *NSStringFromRange(NSRange RANGE)'
Hash Table Functions
--------------------
*[8]*
Create a Table
`NSHashTable * NSCreateHashTable(NSHashTableCallBacks CALLBACKS, unsigned CAPACITY)'
`NSHashTable * NSCreateHashTableWithZone(NSHashTableCallBacks CALLBACKS, unsigned CAPACITY, NSZone * ZONE)'
`NSHashTable * NSCopyHashTableWithZone(NSHashTable * TABLE, NSZone * ZONE)'
Free a Table
`void NSFreeHashTable(NSHashTable * TABLE)'
`void NSResetHashTable(NSHashTable * TABLE)'
Compare Two Tables
`BOOL NSCompareHashTables(NSHashTable * TABLE1, NSHashTable * TABLE2)'
Get the Number of Items
`unsigned NSCountHashTable(NSHashTable * TABLE)'
Returns the number of elements in TABLE.
Retrieve Items
`void * NSHashGet(NSHashTable * TABLE, const void * POINTER)'
`NSArray * NSAllHashTableObjects(NSHashTable * TABLE)'
`NSHashEnumerator NSEnumerateHashTable(NSHashTable * TABLE)'
`void * NSNextHashEnumeratorItem(NSHashEnumerator * ENUMERATOR)'
Add or Remove an Item
`void NSHashInsert(NSHashTable * TABLE, const void * POINTER)'
`void NSHashInsertKnownAbsent(NSHashTable * TABLE, const void * POINTER)'
`void * NSHashInsertIfAbsent(NSHashTable * TABLE, const void * POINTER)'
`void NSHashRemove(NSHashTable * TABLE, const void * POINTER)'
Get a String Representation
`NSString * NSStringFromHashTable(NSHashTable * TABLE)'
Map Table Functions
-------------------
*[8]*
Create a Table
`NSMapTable * NSCreateMapTable(NSMapTableKeyCallBacks KEYCALLBACKS, NSMapTableValueCallBacks VALUECALLBACKS, unsigned CAPACITY)'
`NSMapTable * NSCreateMapTableWithZone(NSMapTableKeyCallBacks KEYCALLBACKS, NSMapTableValueCallBacks VALUECALLBACKS, unsigned CAPACITY,'
`NSMapTable * NSCopyMapTableWithZone(NSMapTable * TABLE, NSZone * ZONE)'
Free a Table
`void NSFreeMapTable(NSMapTable * TABLE)'
`void NSResetMapTable(NSMapTable * TABLE)'
Compare Two Tables:
`BOOL NSCompareMapTables(NSMapTable * TABLE1, NSMapTable * TABLE2)'
Get the Number of Items
`unsigned NSCountMapTable(NSMapTable * TABLE)'
Retrieve Items
`BOOL NSMapMember(NSMapTable * TABLE, const void * KEY, void ** ORIGINALKEY, void ** VALUE)'
`void * NSMapGet(NSMapTable * TABLE,'
`NSMapEnumerator NSEnumerateMapTable(NSMapTable * TABLE)'
`BOOL NSNextMapEnumeratorPair(NSMapEnumerator * ENUMERATOR, void ** KEY, void ** VALUE)'
`NSArray * NSAllMapTableKeys(NSMapTable * TABLE)'
`NSArray * NSAllMapTableValues(NSMapTable * TABLE)'
Add or Remove an Item
`void NSMapInsert(NSMapTable * TABLE, const void * KEY, const void * VALUE)'
`void * NSMapInsertIfAbsent(NSMapTable * TABLE, const void * KEY, const void * VALUE)'
`void NSMapInsertKnownAbsent(NSMapTable * TABLE, const void * KEY, const void * VALUE)'
`void NSMapRemove(NSMapTable * TABLE,'
`NSString *NSStringFromMapTable(NSMapTable *TABLE)'
Miscellaneous Functions
-----------------------
*[7] Get Information about a User*
`NSString *NSUserName(void)'
`NSString *NSHomeDirectory(void)'
`NSString *NSHomeDirectoryForUser(NSString *USERNAME)'
*[9] Log an Error Message*
`void NSLog(NSString *format,...'
`void NSLogv(NSString * FORMAT, va_list ARGS)'
*[8] Get Localized Versions of Strings*
`NSString * NSLocalizedString(NSString * KEY, NSString * COMMENT)'
`NSString * NSLocalizedStringFromTable(NSString * KEY, NSString * TABLENAME, NSString * COMMENT)'
`NSString * NSLocalizedStringFromTableInBundle(NSString * KEY, NSString * TABLENAME, NSBundle * ABUNDLE, NSString * COMMENT)'
*[9] Convert to and from a String*
`Class NSClassFromString(NSString *ACLASSNAME)'
`SEL NSSelectorFromString(NSString *ASELECTORNAME)'
`NSString *NSStringFromClass(Class ACLASS)'
`NSString *NSStringFromSelector(SEL ASELECTOR)'
*[3] Compose a Message To Be Sent Later to an Object*
`NSInvocation *NS_INVOCATION(Class ACLASS, INSTANCEMESSAGE)'
`NSInvocation *NS_MESSAGE(id ANOBJECT, INSTANCEMESSAGE)'