gnustep-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

GDL2 - TODO needs to be updated


From: Stéphane Corthésy
Subject: GDL2 - TODO needs to be updated
Date: Mon, 17 Feb 2003 00:13:12 +0100

Hi all,

The TODO file needs deep update, doesn't it?
I've compared the current GDL2 API with Apple's and made a rather exhaustive comparison. It seems the the main lacks are entity inheritance, events, sharedEC, snapshot timestamping, deferred faulting, prototypes, EOInterface. Can others confirm this?

I have some changes in my work area that I'll submit later, but in the meantime here are the differences I observed between the APIs (I don't even talk about implementation, as there are a lot of NSEmitToDo in the code!):

(the prefix X means that the modifs have been done, on my side)

General:
X Replace all 'extern' by macros
X Take care of using 'volatile' for local vars which are modified in NS_DURING and read in NS_HANDLER
- Replace all -retain, -release, -autorelease by macros
- In -copyWithZone:, test NSShouldRetainWithZone(), and use zone, for immutable objects only
- Avoid autoreleased objects (OK Markus, this will be done later ;-)

In EOControl:
X Replace EOUndoManager use (deprecated) with NSUndoManager
- Superclass of EOClassDescription must be now NSClassDescription, at least on MacOS X
- Missing: EOArrayDataSource
- Missing: EOEvent, EOAggregateEvent, EOEditingContextEvent, EOEventCenter
- Missing: EODeallocNotification
- Missing: EOMultiReaderLock
- Missing: EOMutableDefaultValueDictionary
- Missing: EOProxyDataSource
- Missing: EOSharedEditingContext
- Misses many (all?) methods defined in EOFoundationExtras.h
(- Replace EONull with NSNull; NSNull exists, so EONull has no sense --- Not possible, because may miss NSNull) - GDL has -[EOFaultHandler decrementExtraRefCountWasZero] and Apple -[EOFaultHandler decrementExtraRefCountIsZero] ?? - Misses: deferred fault creation (EOFault, +[EOGenericRecord useDeferredFaultCreation])
- Misses EOGenericRecord <NSCoding>
- EOKeyGlobalID: implement internal ref count
- Misses +[NSObject flushAllKeyBindings], EOKeyBinding, EOKeyGetBinding, EOKeySetBinding, NSObject(EOKVCBindings)? They exist in Apple's Foundation, as NS*, but not in GNUStep's.
- Misses -[EOObjectStore editingContext:didForgetObjectWithGlobalID:]
- Misses -[EOQualifier allQualifierKeys], -[EOQualifier addQualifierKeysToSet:] - Misses EOKeyValueQualifier <NSCoding>, EOKeyComparisonQualifier <NSCoding>, EOAndQualifier <NSCoding>, EOOrQualifier <NSCoding>, EONotQualifier <NSCoding>, EOQualifierVariable <NSCoding>
X Misses EOSortOrdering <NSCopying>
- Misses +[EOEditingContext defaultFetchTimestampLag], +[EOEditingContext setDefaultFetchTimestampLag:], -[EOEditingContext fetchTimestamp], -[EOEditingContext setFetchTimestamp:], -[EOEditingContext reset], -[EOEditingContext sharedEditingContext], -[EOEditingContext setSharedEditingContext:] - Misses -[EOClassDescription defaultFormatterForKeyPath:], [EOClassDescription fetchSpecificationNamed:], -[NSObject(EOClassDescriptionPrimitives) validateTakeValue:forKeyPath:]

In EOAccess:
- EOAccess.h should #import <EOControl/EOControl.h> instead of Foundation files; misses EODatabaseOperation.h, EOGenericRecord.h, EOSchemaSynchronization.h, EOAccessFault.h - Misses +[EOAdaptor defaultDelegate], +[EOAdaptor setDefaultDelegate:], -[EOAdaptor prototypeAttributes] - Misses NSObject(EOModelDescriptionHandler) and EOAdaptorChannel(EOModelDescriptionHandler) - Misses +[EOAdaptorContext defaultDelegate], +[EOAdaptorContext setDefaultDelegate:], -[EOAdaptorContext channels]
- Misses EOAdaptorEvent
- Misses -[EOAttribute setPrototype:]
- Misses EODistantPastTimeInterval, -[EODatabase setTimestampToNow], -[EODatabase snapshotForGlobalID:after:], -[EODatabase timestampForGlobalID:], -[EODatabase snapshotForSourceGlobalID:relationshipName:after:], -[EODatabase timestampForSourceGlobalID:relationshipName:], -[EODatabase incrementSnapshotCountForGlobalID:], -[EODatabase decrementSnapshotCountForGlobalID:], +[EODatabase disableSnapshotRefCounting]; ivars are different
- Misses _currentEditCtxTimestamp
- Misses _uniqueTable, _deleteTable, _reserved, _reserved2, _uniqueArrayTable, _missingObjectGIDs , +[EODatabaseContext defaultDelegate], +[EODatabaseContext setDefaultDelegate:], +[EODatabaseContext setSharedObjectLoadingEnabled:], +[EODatabaseContext isSharedObjectLoadingEnabled], +[EODatabaseContext forceConnectionWithModel:connectionDictionaryOverrides:editingContext:], -[EODatabaseContext missingObjectGlobalIDs], -[EODatabaseContext snapshotForSourceGlobalID:relationshipName:after:], - databaseContext:willFireObjectFaultForGlobalID:withFetchSpecification:ed itingContext:, - databaseContext:willFireArrayFaultForGlobalID:relationship:withFetchSpec ification:editingContext:, -databaseContext:shouldHandleDatabaseException:, EOStoredProcedureNameHintKey - Misses -[EODatabaseDataSource setFetchSpecificationByName:], -[EODatabaseDataSource fetchSpecificationName], -[EODatabaseDataSource qualifierBindingKeys], -[EODatabaseDataSource setQualifierBindings:], -[EODatabaseDataSource qualifierBindings]
- Misses EODevProject.h
- Misses _singleTableSubEntityDictionary, _singleTableSubEntityKey, _singleTableRestrictingQualifier, _fetchInfo, _reserved1, _reserved2, _reserved3, _flattenedAttNameToSnapshotKeyMapping, _sharedObjectFetchSpecs, isSingleTableEntity, -sharedObjectFetchSpecificationNames, -setSharedObjectFetchSpecificationsByName:, -addSharedObjectFetchSpecificationByName:, -removeSharedObjectFetchSpecificationByName:; EOEntityClassDescription definition is different - Misses EOEntityFSB.h; misses -[EOEntityClassDescription fetchSpecificationNamed:] - Misses EOExpressionArray->_array, -[NSObject(EOExpression) valueForSQLExpression:]
- Misses -[EOGenericRecord entity]
- Misses EOModel->_sharedObjectEntities, EOModel->_extraRefCount, -[EOModel entitiesWithSharedObjects], [EOModel prototypeAttributeNamed:], [EOModel availablePrototypeAttributeNames] - Misses +[EOModelGroup setClassDelegate:], +[EOModelGroup classDelegate], -[EOModelGroup entitiesWithSharedObjects]
- Misses EOProjectModelGroup.h
- Misses EOSchemaSynchronization.h
- Misses -[EOQualifier(EOModelExtensions) qualifierMigratedFromEntity:relationshipPath:]
- Misses sqlStrings.h


BTW, some people asked me how stable and functional GDL2 is, and how possible would it be to port applications written for Apple's EOF to GDL2 (based on OSX currently, but maybe fully ported on GNUStep). Can we get opinions from its main developers? What is the state of GDL2?

One last thing. EOInterface. I've heard rumors that some developers, who have rewritten something similar, would "give" it to GDL2. Some hope in there, or should we think about rewriting it?


Cheers,

Stéphane





reply via email to

[Prev in Thread] Current Thread [Next in Thread]