--- /dev/null
+//
+// CheaterTypes.m
+// The Cheat
+//
+// Created by Chaz McGarvey on 12/29/04.
+// Copyright 2004 Chaz McGarvey. All rights reserved.
+//
+
+#import "CheaterTypes.h"
+
+
+TCArray TCMakeArray( unsigned count, unsigned size )
+{
+ TCArray array = (TCArray)malloc( sizeof(struct _TCArray) );
+
+ if ( array ) {
+ array->_bytes = malloc( count * size );
+
+ if ( array->_bytes ) {
+ array->_count = count;
+ array->_size = size;
+ array->_ownsBytes = YES;
+ }
+ else {
+ free( array );
+ return NULL;
+ }
+ }
+ return array;
+}
+
+TCArray TCMakeArrayWithBytes( unsigned count, unsigned size, void *bytes )
+{
+ TCArray array = TCMakeArray( count, size );
+
+ if ( array && bytes ) {
+ memcpy( array->_bytes, bytes, count * size );
+ }
+ return array;
+}
+
+void TCReleaseArray( TCArray array )
+{
+ if ( array && array->_ownsBytes ) {
+ free( array->_bytes );
+ free( array );
+ }
+}
+
+
+void TCArrayAppendArray( TCArray array, TCArray other )
+{
+ unsigned oldCount = array->_count;
+ unsigned count = oldCount + other->_count;
+
+ if ( array->_size != other->_size ) {
+ return;
+ }
+
+ TCArrayResize( array, count );
+ if ( array->_count == count ) {
+ memcpy( array->_bytes + oldCount * array->_size, other->_bytes, other->_count * other->_size );
+ }
+}
+
+
+NSString *TCStringFromArray( TCArray array )
+{
+ return [NSString stringWithFormat:@"{%p,%u,%u}", array->_bytes, array->_count, array->_size];
+}
+
+