--- /dev/null
+//
+// ITByteStream.h
+// ITFoundation
+//
+// Created by Alexander Strange on Thu Feb 27 2003.
+// Copyright (c) 2003 __MyCompanyName__. All rights reserved.
+//
+
+#import "ITByteStream.h"
+
+// TODO: Add NSCopying/NSCoding support
+
+@implementation ITByteStream
+-(id) init
+{
+ if (self == [super init])
+ {
+ data = [[NSMutableData alloc] init];
+ }
+ return self;
+}
+
+-(id) initWithStream:(ITByteStream*)stream
+{
+ if (self == [super init])
+ {
+ data = [stream->data copy];
+ }
+ return 0;
+}
+
+-(void) dealloc
+{
+ [data release];
+ [super dealloc];
+}
+
+-(int) availableDataLength
+{
+ return [data length];
+}
+
+-(NSData*) readDataOfLength:(int)length
+{
+ NSData *ret, *tmp;
+ NSRange range = {0, length};
+ ret = [data subdataWithRange:range];
+#if MAC_OS_X_VERSION_10_2 <= MAC_OS_X_VERSION_MAX_ALLOWED
+ [data replaceBytesInRange:range withBytes:nil length:0]; // this should delete off the end. should test.
+#else
+ range = {length, [data length]};
+ tmp = [data subdataWithRange:range];
+ [data setData:tmp]; // maybe i should add a lock to this? it would be bad if someone was writing when it was reading...
+#endif
+ return ret;
+}
+
+-(void) writeData:(NSData*)_data
+{
+ [data appendData:_data];
+}
+@end