5 // Created by Chaz McGarvey on 12/23/04.
6 // Copyright 2004 Chaz McGarvey. All rights reserved.
9 #ifndef _CheaterTypes_H
10 #define _CheaterTypes_H
12 #import <Cocoa/Cocoa.h>
14 #include <mach/vm_types.h>
21 #if defined( __cplusplus )
22 #define CHEAT_EXPORT extern "C"
23 #define CHEAT_IMPORT extern "C"
25 #define CHEAT_EXPORT extern
26 #define CHEAT_IMPORT extern
29 #if !defined( CHEAT_STATIC_INLINE )
30 #define CHEAT_STATIC_INLINE static __inline__
33 #if !defined( CHEAT_EXTERN_INLINE )
34 #define CHEAT_EXTERN_INLINE extern __inline__
39 #pragma mark Miscellaneous Types
40 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
42 typedef vm_address_t TCAddress
;
45 typedef unsigned char TCVariableType
;
48 TCInt32
= 1, // default
56 typedef unsigned char TCIntegerSign
;
58 TCSigned
= 0, // default
62 typedef unsigned char TCSearchOperator
;
64 TCEqual
= 0, // default
68 TCLessThanOrEqual
= 4, // not used
69 TCGreaterThanOrEqual
= 5 // not used
72 typedef unsigned char TCSearchType
;
74 TCGivenValue
= 0, // default
81 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
83 typedef struct _TCArray
93 #pragma mark Exported Array Functions
94 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
96 CHEAT_EXPORT TCArray
TCMakeArray( unsigned count
, unsigned size
);
97 CHEAT_EXPORT TCArray
TCMakeArrayWithBytes( unsigned count
, unsigned size
, void *bytes
);
98 CHEAT_EXPORT
void TCReleaseArray( TCArray array
);
100 CHEAT_EXPORT
void TCArrayAppendArray( TCArray array
, TCArray other
);
102 CHEAT_EXPORT NSString
*TCStringFromArray( TCArray array
);
106 #pragma mark Imported Array Functions
107 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
109 CHEAT_STATIC_INLINE
void *TCArrayBytes( TCArray array
)
111 return array
->_bytes
;
114 CHEAT_STATIC_INLINE
unsigned TCArrayElementCount( TCArray array
)
116 return array
->_count
;
119 CHEAT_STATIC_INLINE
unsigned TCArrayElementSize( TCArray array
)
124 CHEAT_STATIC_INLINE
void const *TCArrayElementAtIndex( TCArray array
, unsigned index
)
126 return array
->_bytes
+ index
* array
->_size
;
129 CHEAT_STATIC_INLINE
void TCArraySetElementAtIndex( TCArray array
, unsigned index
, void const *element
)
131 memcpy( array
->_bytes
+ index
* array
->_size
, element
, array
->_size
);
134 CHEAT_STATIC_INLINE
void TCArrayResize( TCArray array
, unsigned count
)
136 void *bytes
= realloc( array
->_bytes
, count
* array
->_size
);
139 array
->_bytes
= bytes
;
140 array
->_count
= count
;
144 CHEAT_STATIC_INLINE TCArray
TCArrayCopyElements( TCArray array
, unsigned count
)
146 return TCMakeArrayWithBytes( MIN(array
->_count
,count
), array
->_size
, array
->_bytes
);
149 CHEAT_STATIC_INLINE TCArray
TCArrayCopy( TCArray array
)
151 return TCArrayCopyElements( array
, array
->_count
);
154 CHEAT_STATIC_INLINE TCArray
TCArrayCopyContainer( TCArray array
, unsigned count
)
156 TCArray copy
= TCMakeArray( MIN(array
->_count
,count
), array
->_size
);
157 copy
->_bytes
= array
->_bytes
;
158 copy
->_ownsBytes
= NO
;
162 CHEAT_STATIC_INLINE
void TCArrayFill( TCArray array
, int filler
)
164 memset( array
->_bytes
, filler
, array
->_count
* array
->_size
);
169 #endif /* _CheaterTypes_H */