Mercurial > projects > dstep
view dstep/coreservices/carboncore/AVLTree.d @ 11:07194b026fa4
Added bindings to a couple of frameworks, new license + some other things
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Sat, 01 Aug 2009 15:03:28 +0200 |
parents | |
children |
line wrap: on
line source
/** * Copyright: Copyright (c) 2009 Jacob Carlborg. * Authors: Jacob Carlborg * Version: Initial created: Jul 21, 2009 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0) */ module dstep.coreservices.carboncore.AVLTree; //import dstep.AvailabilityMacros; import dstep.coreservices.carboncore.MacTypes; import dstep.coreservices.carboncore.MixedMode; import dstep.internal.Types; alias ushort AVLVisitStage; alias ushort AVLOrder; alias ushort AVLNodeType; alias AVLTreeStruct*[][] AVLTreePtr; alias AVLCompareItemsProcPtr AVLCompareItemsUPP; alias AVLItemSizeProcPtr AVLItemSizeUPP; alias AVLDisposeItemProcPtr AVLDisposeItemUPP; alias AVLWalkProcPtr AVLWalkUPP; extern (C) { alias short function (AVLTreePtr, void*, ushort, ushort, uint, int, void*) AVLWalkProcPtr; alias uint function (AVLTreePtr, void*) AVLItemSizeProcPtr; alias int function (AVLTreePtr, void*, void*, ushort) AVLCompareItemsProcPtr; alias void function (AVLTreePtr, void*) AVLDisposeItemProcPtr; } enum { kAVLPreOrder = 0, kAVLInOrder = 1, kAVLPostOrder = 2 } enum { kLeftToRight = 0, kRightToLeft = 1 } enum { kAVLIsTree = 0, kAVLIsLeftBranch = 1, kAVLIsRightBranch = 2, kAVLIsLeaf = 3, kAVLNullNode = 4 } enum { errItemAlreadyInTree = -960, errNotValidTree = -961, errItemNotFoundInTree = -962, errCanNotInsertWhileWalkProcInProgress = -963, errTreeIsLocked = -964 } struct AVLTreeStruct { uint signature; c_ulong[8] privateStuff; } extern (C) { AVLCompareItemsUPP NewAVLCompareItemsUPP (AVLCompareItemsProcPtr userRoutine); AVLItemSizeUPP NewAVLItemSizeUPP (AVLItemSizeProcPtr userRoutine); AVLDisposeItemUPP NewAVLDisposeItemUPP (AVLDisposeItemProcPtr userRoutine); AVLWalkUPP NewAVLWalkUPP (AVLWalkProcPtr userRoutine); void DisposeAVLCompareItemsUPP (AVLCompareItemsUPP userUPP); void DisposeAVLItemSizeUPP (AVLItemSizeUPP userUPP); void DisposeAVLDisposeItemUPP (AVLDisposeItemUPP userUPP); void DisposeAVLWalkUPP (AVLWalkUPP userUPP); int InvokeAVLCompareItemsUPP (AVLTreePtr tree, void* i1, void* i2, ushort nd_typ, AVLCompareItemsUPP userUPP); uint InvokeAVLItemSizeUPP (AVLTreePtr tree, void* itemPtr, AVLItemSizeUPP userUPP); void InvokeAVLDisposeItemUPP (AVLTreePtr tree, void* dataP, AVLDisposeItemUPP userUPP); short InvokeAVLWalkUPP (AVLTreePtr tree, void* dataPtr, ushort visitStage, ushort node, uint level, int balance, void* refCon, AVLWalkUPP userUPP); }