Initial commit
This commit is contained in:
59
Torque/SDK/lib/maxsdk40/genhier.h
Normal file
59
Torque/SDK/lib/maxsdk40/genhier.h
Normal file
@@ -0,0 +1,59 @@
|
||||
/**********************************************************************
|
||||
*<
|
||||
FILE: hierclas.h
|
||||
|
||||
DESCRIPTION: Simple utility class for describing hierarchies
|
||||
|
||||
CREATED BY: Tom Hudson
|
||||
|
||||
HISTORY: Created 3 July 1995
|
||||
|
||||
*> Copyright (c) 1995, All Rights Reserved.
|
||||
**********************************************************************/
|
||||
|
||||
#ifndef __HIERCLAS__H
|
||||
#define __HIERCLAS__H
|
||||
|
||||
#define INVALID_HIERARCHY -1
|
||||
|
||||
class HierarchyEntry {
|
||||
public:
|
||||
int data;
|
||||
int children;
|
||||
HierarchyEntry *parent;
|
||||
HierarchyEntry *sibling;
|
||||
HierarchyEntry *child;
|
||||
TSTR sortKey;
|
||||
UtilExport HierarchyEntry();
|
||||
UtilExport HierarchyEntry(int d, HierarchyEntry *p, HierarchyEntry *s);
|
||||
UtilExport int HierarchyLevel();
|
||||
UtilExport void AddChild(int d);
|
||||
UtilExport int GetChild(int index);
|
||||
int Children() { return children; }
|
||||
UtilExport void Sort();
|
||||
};
|
||||
|
||||
class GenericHierarchy {
|
||||
private:
|
||||
HierarchyEntry root;
|
||||
void FreeTree(HierarchyEntry* start = NULL);
|
||||
BOOL isSorted;
|
||||
void CopyTree(int parent, HierarchyEntry* ptr);
|
||||
public:
|
||||
GenericHierarchy() { root = HierarchyEntry(-1,NULL,NULL); isSorted = FALSE; }
|
||||
UtilExport ~GenericHierarchy();
|
||||
UtilExport void AddEntry(int data, int parent = -1); // Add one entry, given its parent
|
||||
UtilExport int Entries(); // Total number of members in the hierarchy
|
||||
UtilExport HierarchyEntry* GetStart() { return root.child; } // Get the first item under the root
|
||||
UtilExport HierarchyEntry* FindEntry(int data, HierarchyEntry* start = NULL);
|
||||
UtilExport int NumberOfChildren(int data); // The number of children for this item
|
||||
UtilExport int GetChild(int data, int index); // Get the nth child of this item
|
||||
UtilExport void New(); // Clear out the hierarchy tree
|
||||
UtilExport void Sort(); // Sort tree by children/siblings
|
||||
UtilExport BOOL IsCompatible(GenericHierarchy& hier); // Are they compatible?
|
||||
UtilExport void Dump(HierarchyEntry* start = NULL); // DebugPrint the tree
|
||||
UtilExport GenericHierarchy& operator=(GenericHierarchy& from); // Copy operator
|
||||
UtilExport TSTR& SortKey(); // Get the sort key for the hierarchy
|
||||
};
|
||||
|
||||
#endif __HIERCLAS__H
|
||||
Reference in New Issue
Block a user