source: golgotha/src/max_plugin/sdk_inc/genhier.h @ 80

Last change on this file since 80 was 80, checked in by Sam Hocevar, 11 years ago
  • Adding the Golgotha source code. Not sure what's going to be interesting in there, but since it's all public domain, there's certainly stuff to pick up.
  • Property svn:keywords set to Id
File size: 2.2 KB
Line 
1/**********************************************************************
2 *<
3        FILE: hierclas.h
4
5        DESCRIPTION: Simple utility class for describing hierarchies
6
7        CREATED BY: Tom Hudson
8
9        HISTORY: Created 3 July 1995
10
11 *>     Copyright (c) 1995, All Rights Reserved.
12 **********************************************************************/
13
14#ifndef __HIERCLAS__H
15#define __HIERCLAS__H
16
17#define INVALID_HIERARCHY -1
18
19class HierarchyEntry {
20        public:
21                int data;
22                int children;
23                HierarchyEntry *parent;
24                HierarchyEntry *sibling;
25                HierarchyEntry *child;
26                TSTR sortKey;
27                UtilExport HierarchyEntry();
28                UtilExport HierarchyEntry(int d, HierarchyEntry *p, HierarchyEntry *s);
29                UtilExport int HierarchyLevel();
30                UtilExport void AddChild(int d);
31                UtilExport int GetChild(int index);
32                int Children() { return children; }
33                UtilExport void Sort();
34        };
35
36class GenericHierarchy {
37        private:
38                HierarchyEntry root;
39                void FreeTree(HierarchyEntry* start = NULL);
40                BOOL isSorted;
41                void CopyTree(int parent, HierarchyEntry* ptr);
42        public:
43                GenericHierarchy() { root = HierarchyEntry(-1,NULL,NULL); isSorted = FALSE; }
44                UtilExport ~GenericHierarchy();
45                UtilExport void AddEntry(int data, int parent = -1);            // Add one entry, given its parent
46                UtilExport int Entries() { return root.children; }                      // Total number of members in the hierarchy
47                UtilExport HierarchyEntry* GetStart() { return root.child; } // Get the first item under the root
48                UtilExport HierarchyEntry* FindEntry(int data, HierarchyEntry* start = NULL);
49                UtilExport int NumberOfChildren(int data);                                      // The number of children for this item
50                UtilExport int GetChild(int data, int index);                           // Get the nth child of this item
51                UtilExport void New();                                                                          // Clear out the hierarchy tree
52                UtilExport void Sort();                                                                         // Sort tree by children/siblings
53                UtilExport BOOL IsCompatible(GenericHierarchy& hier);           // Are they compatible?
54                UtilExport void Dump(HierarchyEntry* start = NULL);                     // DebugPrint the tree
55                UtilExport GenericHierarchy& operator=(GenericHierarchy& from); // Copy operator
56                UtilExport TSTR& SortKey();                                                                     // Get the sort key for the hierarchy
57        };
58
59#endif __HIERCLAS__H
Note: See TracBrowser for help on using the repository browser.