Mercurial > projects > dstep
diff 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 diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dstep/coreservices/carboncore/AVLTree.d Sat Aug 01 15:03:28 2009 +0200 @@ -0,0 +1,82 @@ +/** + * 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); +} \ No newline at end of file