[Top][All Lists]
[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
- GDL2 - TODO needs to be updated,
Stéphane Corthésy <=