Mercurial > projects > dstep
diff dstep/coredata/NSManagedObjectContext.d @ 16:19885b43130e
Huge update, the bridge actually works now
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Sun, 03 Jan 2010 22:06:11 +0100 |
parents | |
children | b9de51448c6b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dstep/coredata/NSManagedObjectContext.d Sun Jan 03 22:06:11 2010 +0100 @@ -0,0 +1,400 @@ +/** + * Copyright: Copyright (c) 2009 Jacob Carlborg. + * Authors: Jacob Carlborg + * Version: Initial created: Sep 25, 2009 + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0) + */ +module dstep.coredata.NSManagedObjectContext; + +import dstep.coredata.CoreDataDefines; + +import dstep.coredata.NSFetchRequest; +import dstep.coredata.NSManagedObject; +import dstep.coredata.NSManagedObjectID; +import dstep.coredata.NSPersistentStore; +import dstep.coredata.NSPersistentStoreCoordinator; +import dstep.corefoundation.CFArray; +import dstep.corefoundation.CFDictionary; +import dstep.foundation.NSArray; +import dstep.foundation.NSCoder; +import dstep.foundation.NSDictionary; +import dstep.foundation.NSDate; +import dstep.foundation.NSError; +import dstep.foundation.NSLock; +import dstep.foundation.NSNotification; +import dstep.foundation.NSObjCRuntime; +import dstep.foundation.NSObject; +import dstep.foundation.NSUndoManager; +import dstep.foundation.NSSet; +import dstep.foundation.NSString; +import dstep.objc.bridge.Bridge; +import dstep.objc.objc; + +import bindings = dstep.coredata.NSManagedObjectContext_bindings; + +private +{ + NSString NSManagedObjectContextDidSaveNotification_; + NSString NSManagedObjectContextObjectsDidChangeNotification_; + NSString NSInsertedObjectsKey_; + NSString NSUpdatedObjectsKey_; + NSString NSDeletedObjectsKey_; + NSString NSRefreshedObjectsKey_; + NSString NSInvalidatedObjectsKey_; + NSString NSInvalidatedAllObjectsKey_; + NSObject NSErrorMergePolicy_; + NSObject NSMergeByPropertyStoreTrumpMergePolicy_; + NSObject NSMergeByPropertyObjectTrumpMergePolicy_; + NSObject NSOverwriteMergePolicy_; + NSObject NSRollbackMergePolicy_; +} + +NSString NSManagedObjectContextDidSaveNotification () +{ + if (NSManagedObjectContextDidSaveNotification_) + return NSManagedObjectContextDidSaveNotification_; + + return NSManagedObjectContextDidSaveNotification_ = new NSString(bindings.NSManagedObjectContextDidSaveNotification); +} + +NSString NSManagedObjectContextObjectsDidChangeNotification () +{ + if (NSManagedObjectContextObjectsDidChangeNotification_) + return NSManagedObjectContextObjectsDidChangeNotification_; + + return NSManagedObjectContextObjectsDidChangeNotification_ = new NSString(bindings.NSManagedObjectContextObjectsDidChangeNotification); +} + +NSString NSInsertedObjectsKey () +{ + if (NSInsertedObjectsKey_) + return NSInsertedObjectsKey_; + + return NSInsertedObjectsKey_ = new NSString(bindings.NSInsertedObjectsKey); +} + +NSString NSUpdatedObjectsKey () +{ + if (NSUpdatedObjectsKey_) + return NSUpdatedObjectsKey_; + + return NSUpdatedObjectsKey_ = new NSString(bindings.NSUpdatedObjectsKey); +} + +NSString NSDeletedObjectsKey () +{ + if (NSDeletedObjectsKey_) + return NSDeletedObjectsKey_; + + return NSDeletedObjectsKey_ = new NSString(bindings.NSDeletedObjectsKey); +} + +NSString NSRefreshedObjectsKey () +{ + if (NSRefreshedObjectsKey_) + return NSRefreshedObjectsKey_; + + return NSRefreshedObjectsKey_ = new NSString(bindings.NSRefreshedObjectsKey); +} + +NSString NSInvalidatedObjectsKey () +{ + if (NSInvalidatedObjectsKey_) + return NSInvalidatedObjectsKey_; + + return NSInvalidatedObjectsKey_ = new NSString(bindings.NSInvalidatedObjectsKey); +} + +NSString NSInvalidatedAllObjectsKey () +{ + if (NSInvalidatedAllObjectsKey_) + return NSInvalidatedAllObjectsKey_; + + return NSInvalidatedAllObjectsKey_ = new NSString(bindings.NSInvalidatedAllObjectsKey); +} + +NSObject NSErrorMergePolicy () +{ + if (NSErrorMergePolicy_) + return NSErrorMergePolicy_; + + return NSErrorMergePolicy_ = new NSObject(bindings.NSErrorMergePolicy); +} + +NSObject NSMergeByPropertyStoreTrumpMergePolicy () +{ + if (NSMergeByPropertyStoreTrumpMergePolicy_) + return NSMergeByPropertyStoreTrumpMergePolicy_; + + return NSMergeByPropertyStoreTrumpMergePolicy_ = new NSObject(bindings.NSMergeByPropertyStoreTrumpMergePolicy); +} + +NSObject NSMergeByPropertyObjectTrumpMergePolicy () +{ + if (NSMergeByPropertyObjectTrumpMergePolicy_) + return NSMergeByPropertyObjectTrumpMergePolicy_; + + return NSMergeByPropertyObjectTrumpMergePolicy_ = new NSObject(bindings.NSMergeByPropertyObjectTrumpMergePolicy); +} + +NSObject NSOverwriteMergePolicy () +{ + if (NSOverwriteMergePolicy_) + return NSOverwriteMergePolicy_; + + return NSOverwriteMergePolicy_ = new NSObject(bindings.NSOverwriteMergePolicy); +} + +NSObject NSRollbackMergePolicy () +{ + if (NSRollbackMergePolicy_) + return NSRollbackMergePolicy_; + + return NSRollbackMergePolicy_ = new NSObject(bindings.NSRollbackMergePolicy); +} + +class NSManagedObjectContext : NSObject, INSCoding, INSLocking +{ + mixin (ObjcWrap); + + void setPersistentStoreCoordinator (NSPersistentStoreCoordinator coordinator) + { + return invokeObjcSelf!(void, "setPersistentStoreCoordinator:", NSPersistentStoreCoordinator)(coordinator); + } + + NSPersistentStoreCoordinator persistentStoreCoordinator () + { + return invokeObjcSelf!(NSPersistentStoreCoordinator, "persistentStoreCoordinator"); + } + + void setUndoManager (NSUndoManager undoManager) + { + return invokeObjcSelf!(void, "setUndoManager:", NSUndoManager)(undoManager); + } + + NSUndoManager undoManager () + { + return invokeObjcSelf!(NSUndoManager, "undoManager"); + } + + bool hasChanges () + { + return invokeObjcSelf!(bool, "hasChanges"); + } + + NSManagedObject objectRegisteredForID (NSManagedObjectID objectID) + { + return invokeObjcSelf!(NSManagedObject, "objectRegisteredForID:", NSManagedObjectID)(objectID); + } + + NSManagedObject objectWithID (NSManagedObjectID objectID) + { + return invokeObjcSelf!(NSManagedObject, "objectWithID:", NSManagedObjectID)(objectID); + } + + NSArray executeFetchRequest (NSFetchRequest request, ref NSError error) + { + id __arg1; + + if (error) + __arg1 = error.objcObject; + + NSArray result = invokeObjcSelf!(NSArray, "executeFetchRequest:error:", NSFetchRequest, id*)(request, &__arg1); + + if (__arg1) + error = new NSError(__arg1); + + return result; + } + + NSUInteger countForFetchRequest (NSFetchRequest request, ref NSError error) + { + id __arg1; + + if (error) + __arg1 = error.objcObject; + + NSUInteger result = invokeObjcSelf!(NSUInteger, "countForFetchRequest:error:", NSFetchRequest, id*)(request, &__arg1); + + if (__arg1) + error = new NSError(__arg1); + + return result; + } + + void insertObject (NSManagedObject object) + { + return invokeObjcSelf!(void, "insertObject:", NSManagedObject)(object); + } + + void deleteObject (NSManagedObject object) + { + return invokeObjcSelf!(void, "deleteObject:", NSManagedObject)(object); + } + + void refreshObject (NSManagedObject object, bool flag) + { + return invokeObjcSelf!(void, "refreshObject:mergeChanges:", NSManagedObject, bool)(object, flag); + } + + void detectConflictsForObject (NSManagedObject object) + { + return invokeObjcSelf!(void, "detectConflictsForObject:", NSManagedObject)(object); + } + + void observeValueForKeyPath (NSString keyPath, Object object, NSDictionary change, void* context) + { + return invokeObjcSelf!(void, "observeValueForKeyPath:ofObject:change:context:", NSString, Object, NSDictionary, void*)(keyPath, object, change, context); + } + + void processPendingChanges () + { + return invokeObjcSelf!(void, "processPendingChanges"); + } + + void assignObject (Object object, NSPersistentStore store) + { + return invokeObjcSelf!(void, "assignObject:toPersistentStore:", Object, NSPersistentStore)(object, store); + } + + NSSet insertedObjects () + { + return invokeObjcSelf!(NSSet, "insertedObjects"); + } + + NSSet updatedObjects () + { + return invokeObjcSelf!(NSSet, "updatedObjects"); + } + + NSSet deletedObjects () + { + return invokeObjcSelf!(NSSet, "deletedObjects"); + } + + NSSet registeredObjects () + { + return invokeObjcSelf!(NSSet, "registeredObjects"); + } + + void undo () + { + return invokeObjcSelf!(void, "undo"); + } + + void redo () + { + return invokeObjcSelf!(void, "redo"); + } + + void reset () + { + return invokeObjcSelf!(void, "reset"); + } + + void rollback () + { + return invokeObjcSelf!(void, "rollback"); + } + + bool save (ref NSError error) + { + id __arg0; + + if (error) + __arg0 = error.objcObject; + + bool result = invokeObjcSelf!(bool, "save:", id*)(&__arg0); + + if (__arg0) + error = new NSError(__arg0); + + return result; + } + + void lock () + { + return invokeObjcSelf!(void, "lock"); + } + + void unlock () + { + return invokeObjcSelf!(void, "unlock"); + } + + bool tryLock () + { + return invokeObjcSelf!(bool, "tryLock"); + } + + bool propagatesDeletesAtEndOfEvent () + { + return invokeObjcSelf!(bool, "propagatesDeletesAtEndOfEvent"); + } + + void setPropagatesDeletesAtEndOfEvent (bool flag) + { + return invokeObjcSelf!(void, "setPropagatesDeletesAtEndOfEvent:", bool)(flag); + } + + bool retainsRegisteredObjects () + { + return invokeObjcSelf!(bool, "retainsRegisteredObjects"); + } + + void setRetainsRegisteredObjects (bool flag) + { + return invokeObjcSelf!(void, "setRetainsRegisteredObjects:", bool)(flag); + } + + double stalenessInterval () + { + return invokeObjcSelf!(double, "stalenessInterval"); + } + + void setStalenessInterval (double expiration) + { + return invokeObjcSelf!(void, "setStalenessInterval:", double)(expiration); + } + + void setMergePolicy (Object mergePolicy) + { + return invokeObjcSelf!(void, "setMergePolicy:", Object)(mergePolicy); + } + + Object mergePolicy () + { + return invokeObjcSelf!(Object, "mergePolicy"); + } + + bool obtainPermanentIDsForObjects (NSArray objects, ref NSError error) + { + id __arg1; + + if (error) + __arg1 = error.objcObject; + + bool result = invokeObjcSelf!(bool, "obtainPermanentIDsForObjects:error:", NSArray, id*)(objects, &__arg1); + + if (__arg1) + error = new NSError(__arg1); + + return result; + } + + void mergeChangesFromContextDidSaveNotification (NSNotification notification) + { + return invokeObjcSelf!(void, "mergeChangesFromContextDidSaveNotification:", NSNotification)(notification); + } + + void encodeWithCoder (NSCoder aCoder) + { + return invokeObjcSelf!(void, "encodeWithCoder:", NSCoder)(aCoder); + } + + typeof(this) initWithCoder (NSCoder aDecoder) + { + return invokeObjcSelf!(typeof(this), "initWithCoder:", NSCoder)(aDecoder); + } +} +