Mercurial > projects > dstep
view dstep/foundation/NSDebug.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 |
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.NSDebug; import dstep.foundation.NSAutoreleasePool; import dstep.foundation.NSDate; import dstep.foundation.NSObjCRuntime; import dstep.foundation.NSObject; import dstep.foundation.NSPort; import dstep.objc.bridge.Bridge; import dstep.objc.objc; import bindings = dstep.foundation.NSDebug_bindings; extern (C) { extern { bool NSDebugEnabled; bool NSZombieEnabled; bool NSDeallocateZombies; bool NSHangOnUncaughtException; bool NSKeepAllocationStatistics; } } const TNSAutoreleasePoolDebugging = ` static void enableRelease (bool enable) { return invokeObjcSuperClass!(void, "enableRelease:", bool)(enable); } static void showPools () { return invokeObjcSuperClass!(void, "showPools"); } static void resetTotalAutoreleasedObjects () { return invokeObjcSuperClass!(void, "resetTotalAutoreleasedObjects"); } static NSUInteger totalAutoreleasedObjects () { return invokeObjcSuperClass!(NSUInteger, "totalAutoreleasedObjects"); } static void enableFreedObjectCheck (bool enable) { return invokeObjcSuperClass!(void, "enableFreedObjectCheck:", bool)(enable); } static NSUInteger autoreleasedObjectCount () { return invokeObjcSuperClass!(NSUInteger, "autoreleasedObjectCount"); } static NSUInteger topAutoreleasePoolCount () { return invokeObjcSuperClass!(NSUInteger, "topAutoreleasePoolCount"); } static NSUInteger poolCountHighWaterMark () { return invokeObjcSuperClass!(NSUInteger, "poolCountHighWaterMark"); } static void setPoolCountHighWaterMark (NSUInteger count) { return invokeObjcSuperClass!(void, "setPoolCountHighWaterMark:", NSUInteger)(count); } static NSUInteger poolCountHighWaterResolution () { return invokeObjcSuperClass!(NSUInteger, "poolCountHighWaterResolution"); } static void setPoolCountHighWaterResolution (NSUInteger res) { return invokeObjcSuperClass!(void, "setPoolCountHighWaterResolution:", NSUInteger)(res); } `; bool NSIsFreedObject (Object anObject) { return Bridge.invokeObjcFunction!(bool, bindings.NSIsFreedObject, Object)(anObject); } void NSRecordAllocationEvent (int eventType, Object object) { return Bridge.invokeObjcFunction!(void, bindings.NSRecordAllocationEvent, int, Object)(eventType, object); } extern (C) { void* NSFrameAddress (NSUInteger frame); void* NSReturnAddress (NSUInteger frame); NSUInteger NSCountFrames (); void _NSAutoreleaseNoPool (void* object); void _NSAutoreleaseFreedObject (void* freedObject); void _NSAutoreleaseHighWaterLog (NSUInteger count); }