1// 2// ANTLRIntArray.h 3// ANTLR 4// 5// Copyright (c) 2010 Ian Michell 2010 Alan Condit 6// All rights reserved. 7// 8// Redistribution and use in source and binary forms, with or without 9// modification, are permitted provided that the following conditions 10// are met: 11// 1. Redistributions of source code must retain the above copyright 12// notice, this list of conditions and the following disclaimer. 13// 2. Redistributions in binary form must reproduce the above copyright 14// notice, this list of conditions and the following disclaimer in the 15// documentation and/or other materials provided with the distribution. 16// 3. The name of the author may not be used to endorse or promote products 17// derived from this software without specific prior written permission. 18// 19// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 20// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 21// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 22// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 23// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 24// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 28// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 30#import <Cocoa/Cocoa.h> 31 32#define ANTLR_INT_ARRAY_INITIAL_SIZE 10 33 34@interface ANTLRIntArray : NSObject 35{ 36 NSUInteger BuffSize; 37 NSUInteger count; 38 NSInteger idx; 39 NSMutableData *buffer; 40 __strong NSInteger *intBuffer; 41 BOOL SPARSE; 42} 43 44+ (ANTLRIntArray *)newArray; 45+ (ANTLRIntArray *)newArrayWithLen:(NSUInteger)aLen; 46 47- (id) init; 48- (id) initWithLen:(NSUInteger)aLen; 49 50- (void) dealloc; 51 52- (id) copyWithZone:(NSZone *)aZone; 53 54- (void) addInteger:(NSInteger) value; 55- (NSInteger) pop; 56- (void) push:(NSInteger) value; 57- (NSInteger) integerAtIndex:(NSUInteger) index; 58- (void) insertInteger:(NSInteger)anInteger AtIndex:(NSUInteger) anIndex; 59- (NSInteger)removeIntegerAtIndex:(NSUInteger) anIndex; 60- (void)replaceInteger:(NSInteger)aValue AtIndex:(NSUInteger)anIndex; 61- (void) reset; 62 63- (NSUInteger) count; 64- (NSUInteger) size; 65- (void) ensureCapacity:(NSUInteger) anIndex; 66 67@property (assign) NSUInteger BuffSize; 68@property (assign) NSUInteger count; 69@property (assign) NSInteger idx; 70@property (retain) NSMutableData *buffer; 71@property (assign) NSInteger *intBuffer; 72@property (assign) BOOL SPARSE; 73 74@end 75