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