view 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 source

/**
 * 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);
	}
}