10825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville// 20825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville// ANTLRUniqueIDMap.h 30825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville// ANTLR 40825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville// 50825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville// Created by Alan Condit on 7/7/10. 60825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville// [The "BSD licence"] 70825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville// Copyright (c) 2010 Alan Condit 80825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville// All rights reserved. 90825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville// 100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville// Redistribution and use in source and binary forms, with or without 110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville// modification, are permitted provided that the following conditions 120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville// are met: 130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville// 1. Redistributions of source code must retain the above copyright 140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville// notice, this list of conditions and the following disclaimer. 150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville// 2. Redistributions in binary form must reproduce the above copyright 160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville// notice, this list of conditions and the following disclaimer in the 170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville// documentation and/or other materials provided with the distribution. 180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville// 3. The name of the author may not be used to endorse or promote products 19ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville// derived from this software without specific prior written permission. 200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville// 2105ef3b65972826780859b9acbd1fa9580d099832Alex Yakavenka// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 2205ef3b65972826780859b9acbd1fa9580d099832Alex Yakavenka// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 2305ef3b65972826780859b9acbd1fa9580d099832Alex Yakavenka// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville#import <Cocoa/Cocoa.h> 330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville#import "ANTLRPtrBuffer.h" 340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville#import "ANTLRNodeMapElement.h" 350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville#define SUCCESS 0 370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville#define FAILURE -1 380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville#define HASHSIZE 101 390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville#define HBUFSIZE 0x2000 400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville@interface ANTLRUniqueIDMap : ANTLRPtrBuffer { 420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville NSInteger lastHash; 430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville} 440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville@property (getter=getLastHash, setter=setLastHash) NSInteger lastHash; 460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 47e97be3971cb6b55e019433c32524cc60ce0d037bWink Saville+ (id)newANTLRUniqueIDMap; 480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville+ (id)newANTLRUniqueIDMapWithLen:(NSInteger)aHashSize; 490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville- (id)init; 510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville- (id)initWithLen:(NSInteger)cnt; 52ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville- (void)dealloc; 530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville// Instance Methods 540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville- (NSInteger)count; 55- (NSInteger)size; 56/* clear -- reinitialize the maplist array */ 57- (void) clear; 58 59- (void)deleteANTLRUniqueIDMap:(ANTLRNodeMapElement *)np; 60- (void)delete_chain:(ANTLRNodeMapElement *)np; 61- (id)getNode:(id<ANTLRTree>)aNode; 62- (void)putID:(id)anID Node:(id<ANTLRTree>)aNode; 63 64@end 65