Mercurial > projects > dstep
view dstep/foundation/NSMapTable.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 | 89f3c3ef1fd2 |
children | b9de51448c6b |
line wrap: on
line source
/** * Copyright: Copyright (c) 2009 Jacob Carlborg. * Authors: Jacob Carlborg * Version: Initial created: Aug 3, 2009 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0) */ module dstep.foundation.NSMapTable; import dstep.foundation.NSArray; import dstep.foundation.NSCoder; import dstep.foundation.NSDictionary; import dstep.foundation.NSEnumerator; import dstep.foundation.NSMapTable; import dstep.foundation.NSObjCRuntime; import dstep.foundation.NSObject; import dstep.foundation.NSPointerFunctions; import dstep.foundation.NSString; import dstep.foundation.NSZone; import dstep.objc.bridge.Bridge; import dstep.objc.objc; import bindings = dstep.foundation.NSMapTable_bindings; alias NSUInteger NSMapTableOptions; extern (C) { extern { const NSMapTableKeyCallBacks NSIntegerMapKeyCallBacks; const NSMapTableKeyCallBacks NSNonOwnedPointerMapKeyCallBacks; const NSMapTableKeyCallBacks NSNonOwnedPointerOrNullMapKeyCallBacks; const NSMapTableKeyCallBacks NSNonRetainedObjectMapKeyCallBacks; const NSMapTableKeyCallBacks NSObjectMapKeyCallBacks; const NSMapTableKeyCallBacks NSOwnedPointerMapKeyCallBacks; const NSMapTableValueCallBacks NSIntegerMapValueCallBacks; const NSMapTableValueCallBacks NSNonOwnedPointerMapValueCallBacks; const NSMapTableValueCallBacks NSObjectMapValueCallBacks; const NSMapTableValueCallBacks NSNonRetainedObjectMapValueCallBacks; const NSMapTableValueCallBacks NSOwnedPointerMapValueCallBacks; } } enum { NSMapTableStrongMemory = 0, NSMapTableZeroingWeakMemory = NSPointerFunctionsZeroingWeakMemory, NSMapTableCopyIn = NSPointerFunctionsCopyIn, NSMapTableObjectPointerPersonality = NSPointerFunctionsObjectPointerPersonality } struct NSMapEnumerator { NSUInteger _pi; NSUInteger _si; void* _bs; } struct NSMapTableKeyCallBacks { extern (C) uint function (id table, /*const*/ void*) hash; extern (C) bool function (id table, /*const*/ void*, /*const*/ void*) isEqual; extern (C) void function (id table, /*const*/ void*) retain; extern (C) void function (id table, void*) release; extern (C) id function (id table, /*const*/ void*) describe; /*const*/ void* notAKeyMarker; } struct NSMapTableValueCallBacks { extern (C) void function (id table, /*const*/ void*) retain; extern (C) void function (id table, /*const*/ void*) release; extern (C) id function (id table, /*const*/ void*) describe; } class NSMapTable : NSObject, INSCopying, INSCoding, INSFastEnumeration { mixin (ObjcWrap); this () { super(typeof(this).alloc.init.objcObject); } typeof(this) init () { return invokeObjcSelf!(typeof(this), "init"); } Object initWithKeyOptions (uint keyOptions, uint valueOptions, NSUInteger initialCapacity) { return invokeObjcSelf!(Object, "initWithKeyOptions:valueOptions:capacity:", uint, uint, NSUInteger)(keyOptions, valueOptions, initialCapacity); } this (uint keyOptions, uint valueOptions, NSUInteger initialCapacity) { typeof(this).alloc.initWithKeyOptions(keyOptions, valueOptions, initialCapacity); } Object initWithKeyPointerFunctions (NSPointerFunctions keyFunctions, NSPointerFunctions valueFunctions, NSUInteger initialCapacity) { return invokeObjcSelf!(Object, "initWithKeyPointerFunctions:valuePointerFunctions:capacity:", NSPointerFunctions, NSPointerFunctions, NSUInteger)(keyFunctions, valueFunctions, initialCapacity); } this (NSPointerFunctions keyFunctions, NSPointerFunctions valueFunctions, NSUInteger initialCapacity) { typeof(this).alloc.initWithKeyPointerFunctions(keyFunctions, valueFunctions, initialCapacity); } static Object mapTableWithKeyOptions (uint keyOptions, uint valueOptions) { return invokeObjcSuperClass!(Object, "mapTableWithKeyOptions:valueOptions:", uint, uint)(keyOptions, valueOptions); } static Object mapTableWithStrongToStrongObjects () { return invokeObjcSuperClass!(Object, "mapTableWithStrongToStrongObjects"); } static Object mapTableWithWeakToStrongObjects () { return invokeObjcSuperClass!(Object, "mapTableWithWeakToStrongObjects"); } static Object mapTableWithStrongToWeakObjects () { return invokeObjcSuperClass!(Object, "mapTableWithStrongToWeakObjects"); } static Object mapTableWithWeakToWeakObjects () { return invokeObjcSuperClass!(Object, "mapTableWithWeakToWeakObjects"); } NSPointerFunctions keyPointerFunctions () { return invokeObjcSelf!(NSPointerFunctions, "keyPointerFunctions"); } NSPointerFunctions valuePointerFunctions () { return invokeObjcSelf!(NSPointerFunctions, "valuePointerFunctions"); } Object objectForKey (Object aKey) { return invokeObjcSelf!(Object, "objectForKey:", Object)(aKey); } void removeObjectForKey (Object aKey) { return invokeObjcSelf!(void, "removeObjectForKey:", Object)(aKey); } void setObject (Object anObject, Object aKey) { return invokeObjcSelf!(void, "setObject:forKey:", Object, Object)(anObject, aKey); } NSUInteger count () { return invokeObjcSelf!(NSUInteger, "count"); } NSEnumerator keyEnumerator () { return invokeObjcSelf!(NSEnumerator, "keyEnumerator"); } NSEnumerator objectEnumerator () { return invokeObjcSelf!(NSEnumerator, "objectEnumerator"); } void removeAllObjects () { return invokeObjcSelf!(void, "removeAllObjects"); } NSDictionary dictionaryRepresentation () { return invokeObjcSelf!(NSDictionary, "dictionaryRepresentation"); } Object copyWithZone (NSZone* zone) { return invokeObjcSelf!(Object, "copyWithZone:", NSZone*)(zone); } void encodeWithCoder (NSCoder aCoder) { return invokeObjcSelf!(void, "encodeWithCoder:", NSCoder)(aCoder); } Object initWithCoder (NSCoder aDecoder) { return invokeObjcSelf!(Object, "initWithCoder:", NSCoder)(aDecoder); } this (NSCoder aDecoder) { typeof(this).alloc.initWithCoder(aDecoder); } NSUInteger countByEnumeratingWithState (NSFastEnumerationState* state, id* stackbuf, NSUInteger len) { return invokeObjcSelf!(NSUInteger, "countByEnumeratingWithState:objects:count:", NSFastEnumerationState*, id*, NSUInteger)(state, stackbuf, len); } } void NSFreeMapTable (NSMapTable table) { return Bridge.invokeObjcFunction!(void, bindings.NSFreeMapTable, NSMapTable)(table); } void NSResetMapTable (NSMapTable table) { return Bridge.invokeObjcFunction!(void, bindings.NSResetMapTable, NSMapTable)(table); } bool NSCompareMapTables (NSMapTable table1, NSMapTable table2) { return Bridge.invokeObjcFunction!(bool, bindings.NSCompareMapTables, NSMapTable, NSMapTable)(table1, table2); } NSMapTable NSCopyMapTableWithZone (NSMapTable table, NSZone* zone) { return Bridge.invokeObjcFunction!(NSMapTable, bindings.NSCopyMapTableWithZone, NSMapTable, NSZone*)(table, zone); } bool NSMapMember (NSMapTable table, void* key, void** originalKey, void** value) { return Bridge.invokeObjcFunction!(bool, bindings.NSMapMember, NSMapTable, void*, void**, void**)(table, key, originalKey, value); } void* NSMapGet (NSMapTable table, void* key) { return Bridge.invokeObjcFunction!(void*, bindings.NSMapGet, NSMapTable, void*)(table, key); } void NSMapInsert (NSMapTable table, void* key, void* value) { return Bridge.invokeObjcFunction!(void, bindings.NSMapInsert, NSMapTable, void*, void*)(table, key, value); } void NSMapInsertKnownAbsent (NSMapTable table, void* key, void* value) { return Bridge.invokeObjcFunction!(void, bindings.NSMapInsertKnownAbsent, NSMapTable, void*, void*)(table, key, value); } void* NSMapInsertIfAbsent (NSMapTable table, void* key, void* value) { return Bridge.invokeObjcFunction!(void*, bindings.NSMapInsertIfAbsent, NSMapTable, void*, void*)(table, key, value); } void NSMapRemove (NSMapTable table, void* key) { return Bridge.invokeObjcFunction!(void, bindings.NSMapRemove, NSMapTable, void*)(table, key); } NSMapEnumerator NSEnumerateMapTable (NSMapTable table) { return Bridge.invokeObjcFunction!(NSMapEnumerator, bindings.NSEnumerateMapTable, NSMapTable)(table); } NSUInteger NSCountMapTable (NSMapTable table) { return Bridge.invokeObjcFunction!(NSUInteger, bindings.NSCountMapTable, NSMapTable)(table); } NSString NSStringFromMapTable (NSMapTable table) { return Bridge.invokeObjcFunction!(NSString, bindings.NSStringFromMapTable, NSMapTable)(table); } NSArray NSAllMapTableKeys (NSMapTable table) { return Bridge.invokeObjcFunction!(NSArray, bindings.NSAllMapTableKeys, NSMapTable)(table); } NSArray NSAllMapTableValues (NSMapTable table) { return Bridge.invokeObjcFunction!(NSArray, bindings.NSAllMapTableValues, NSMapTable)(table); } NSMapTable NSCreateMapTableWithZone (NSMapTableKeyCallBacks keyCallBacks, NSMapTableValueCallBacks valueCallBacks, NSUInteger capacity, NSZone* zone) { return Bridge.invokeObjcFunction!(NSMapTable, bindings.NSCreateMapTableWithZone, NSMapTableKeyCallBacks, NSMapTableValueCallBacks, NSUInteger, NSZone*)(keyCallBacks, valueCallBacks, capacity, zone); } NSMapTable NSCreateMapTable (NSMapTableKeyCallBacks keyCallBacks, NSMapTableValueCallBacks valueCallBacks, NSUInteger capacity) { return Bridge.invokeObjcFunction!(NSMapTable, bindings.NSCreateMapTable, NSMapTableKeyCallBacks, NSMapTableValueCallBacks, NSUInteger)(keyCallBacks, valueCallBacks, capacity); } extern (C) { bool NSNextMapEnumeratorPair (NSMapEnumerator* enumerator, void** key, void** value); void NSEndMapTableEnumeration (NSMapEnumerator* enumerator); }