xref: /aosp_15_r20/external/antlr/runtime/ObjC/Framework/ACBTree.h (revision 16467b971bd3e2009fad32dd79016f2c7e421deb)
1*16467b97STreehugger Robot //
2*16467b97STreehugger Robot //  ACBtree.h
3*16467b97STreehugger Robot //  ST4
4*16467b97STreehugger Robot //
5*16467b97STreehugger Robot //  Created by Alan Condit on 4/18/11.
6*16467b97STreehugger Robot //  Copyright 2011 Alan Condit. All rights reserved.
7*16467b97STreehugger Robot //
8*16467b97STreehugger Robot 
9*16467b97STreehugger Robot typedef enum {
10*16467b97STreehugger Robot     BTNODE,
11*16467b97STreehugger Robot     LEAF
12*16467b97STreehugger Robot } NodeType;
13*16467b97STreehugger Robot 
14*16467b97STreehugger Robot #import <Foundation/Foundation.h>
15*16467b97STreehugger Robot 
16*16467b97STreehugger Robot @class AMutableDictionary;
17*16467b97STreehugger Robot 
18*16467b97STreehugger Robot #define BTNODESIZE 11
19*16467b97STreehugger Robot #define BTHNODESIZE ((BTNODESIZE-1)/2)
20*16467b97STreehugger Robot #define BTKeySize  38
21*16467b97STreehugger Robot #if defined FAILURE
22*16467b97STreehugger Robot #undef FAILURE
23*16467b97STreehugger Robot #endif
24*16467b97STreehugger Robot #define FAILURE -1
25*16467b97STreehugger Robot #if defined SUCCESS
26*16467b97STreehugger Robot #undef SUCCESS
27*16467b97STreehugger Robot #endif
28*16467b97STreehugger Robot #define SUCCESS 0
29*16467b97STreehugger Robot 
30*16467b97STreehugger Robot @interface ACBKey : NSObject {
31*16467b97STreehugger Robot     NSInteger recnum;               /*  record number                   */
32*16467b97STreehugger Robot     __strong NSString *key;         /*  key pointer id                  */
33*16467b97STreehugger Robot     char      kstr[BTKeySize];      /*  key entry                       */
34*16467b97STreehugger Robot }
35*16467b97STreehugger Robot 
36*16467b97STreehugger Robot @property (assign) NSInteger recnum;
37*16467b97STreehugger Robot @property (retain) NSString *key;
38*16467b97STreehugger Robot 
39*16467b97STreehugger Robot + (ACBKey *)newKey;
40*16467b97STreehugger Robot + (ACBKey *)newKeyWithKStr:(NSString *)aKey;
41*16467b97STreehugger Robot - (id) init;
42*16467b97STreehugger Robot - (id) initWithKStr:(NSString *)aKey;
43*16467b97STreehugger Robot - (void)dealloc;
44*16467b97STreehugger Robot - (NSString *) description;
45*16467b97STreehugger Robot @end
46*16467b97STreehugger Robot 
47*16467b97STreehugger Robot @interface ACBTree : NSObject {
48*16467b97STreehugger Robot     __strong AMutableDictionary *dict;  /* The dictionary that this node belongs to */
49*16467b97STreehugger Robot     __strong ACBTree *lnode;            /* pointer to left node            */
50*16467b97STreehugger Robot     __strong ACBTree *rnode;            /* pointer to right node           */
51*16467b97STreehugger Robot     __strong ACBKey  **keys;            /* pointer to keys                 */
52*16467b97STreehugger Robot     __strong ACBTree **btNodes;         /* pointers to btNodes             */
53*16467b97STreehugger Robot     __strong ACBKey  *keyArray[BTNODESIZE];
54*16467b97STreehugger Robot     __strong ACBTree *btNodeArray[BTNODESIZE];
55*16467b97STreehugger Robot     NSInteger lnodeid;                  /* nodeid of left node             */
56*16467b97STreehugger Robot     NSInteger rnodeid;                  /* nodeid of right node            */
57*16467b97STreehugger Robot     NSInteger nodeid;                   /* node id                         */
58*16467b97STreehugger Robot     NSInteger nodeType;                 /* 1 = node, 2 = leaf, -1 = unused */
59*16467b97STreehugger Robot     NSInteger numkeys;                  /* number of active entries        */
60*16467b97STreehugger Robot     NSInteger numrecs;                  /* number of records               */
61*16467b97STreehugger Robot     NSInteger updtd;                    /* modified since update flag      */
62*16467b97STreehugger Robot     NSInteger keylen;                   /* length of key                   */
63*16467b97STreehugger Robot     NSInteger kidx;
64*16467b97STreehugger Robot }
65*16467b97STreehugger Robot 
66*16467b97STreehugger Robot @property (retain) AMutableDictionary *dict;
67*16467b97STreehugger Robot @property (retain) ACBTree  *lnode;
68*16467b97STreehugger Robot @property (retain) ACBTree  *rnode;
69*16467b97STreehugger Robot @property (assign) ACBKey   **keys;
70*16467b97STreehugger Robot @property (assign) ACBTree  **btNodes;
71*16467b97STreehugger Robot @property (assign) NSInteger lnodeid;
72*16467b97STreehugger Robot @property (assign) NSInteger rnodeid;
73*16467b97STreehugger Robot @property (assign) NSInteger nodeid;
74*16467b97STreehugger Robot @property (assign) NSInteger nodeType;
75*16467b97STreehugger Robot @property (assign) NSInteger numkeys;
76*16467b97STreehugger Robot @property (assign) NSInteger numrecs;
77*16467b97STreehugger Robot @property (assign) NSInteger updtd;
78*16467b97STreehugger Robot @property (assign) NSInteger keylen;
79*16467b97STreehugger Robot @property (assign) NSInteger kidx;
80*16467b97STreehugger Robot 
81*16467b97STreehugger Robot + (ACBTree *) newNodeWithDictionary:(AMutableDictionary *)theDict;
82*16467b97STreehugger Robot 
83*16467b97STreehugger Robot - (id)initWithDictionary:(AMutableDictionary *)theDict;
84*16467b97STreehugger Robot - (void)dealloc;
85*16467b97STreehugger Robot 
86*16467b97STreehugger Robot - (ACBTree *)createnode:(ACBKey *)kp0;
87*16467b97STreehugger Robot - (ACBTree *)deletekey:(NSString *)dkey;
88*16467b97STreehugger Robot - (ACBTree *)insertkey:(ACBKey *)ikp value:(id)value;
89*16467b97STreehugger Robot - (ACBKey *)internaldelete:(ACBKey *)dkp;
90*16467b97STreehugger Robot - (ACBTree *) internalinsert:(ACBKey *)key value:(id)value split:(NSInteger *)h;
91*16467b97STreehugger Robot - (ACBTree *) insert:(ACBKey *)key value:(id)value index:(NSInteger)hi split:(NSInteger *)h;
92*16467b97STreehugger Robot - (NSInteger)delfrmnode:(ACBKey *)ikp;
93*16467b97STreehugger Robot - (NSInteger)insinnode:(ACBKey *)key value:(id)value;
94*16467b97STreehugger Robot - (void)mergenode:(NSInteger)i;
95*16467b97STreehugger Robot - (ACBTree *)splitnode:(NSInteger)idx;
96*16467b97STreehugger Robot - (ACBTree *)search:(id)key;
97*16467b97STreehugger Robot - (NSInteger)searchnode:(id)key match:(BOOL)match;
98*16467b97STreehugger Robot - (void)borrowleft:(NSInteger)i;
99*16467b97STreehugger Robot - (void)borrowright:(NSInteger)i;
100*16467b97STreehugger Robot - (void)rotateleft:(NSInteger)j;
101*16467b97STreehugger Robot - (void)rotateright:(NSInteger)j;
102*16467b97STreehugger Robot - (NSInteger) keyWalkLeaves;
103*16467b97STreehugger Robot - (NSInteger) objectWalkLeaves;
104*16467b97STreehugger Robot - (NSString *) description;
105*16467b97STreehugger Robot @end
106