3 * The Cheat - The legendary universal game trainer for Mac OS X.
4 * http://www.dogcows.com/chaz/wiki/TheCheat
6 * Copyright (c) 2003-2010, Charles McGarvey et al.
8 * Distributable under the terms and conditions of the 2-clause BSD
9 * license; see the file COPYING for the legal text of the license.
13 #ifndef _CheaterTypes_H
14 #define _CheaterTypes_H
16 #import <Cocoa/Cocoa.h>
18 #include <mach/vm_types.h>
25 #if defined( __cplusplus )
26 #define CHEAT_EXPORT extern "C"
27 #define CHEAT_IMPORT extern "C"
29 #define CHEAT_EXPORT extern
30 #define CHEAT_IMPORT extern
33 #if !defined( CHEAT_STATIC_INLINE )
34 #define CHEAT_STATIC_INLINE static __inline__
37 #if !defined( CHEAT_EXTERN_INLINE )
38 #define CHEAT_EXTERN_INLINE extern __inline__
43 #pragma mark Miscellaneous Types
44 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
46 typedef mach_vm_address_t TCAddress
;
49 typedef unsigned char TCVariableType
;
52 TCInt32
= 1, // default
60 typedef unsigned char TCIntegerSign
;
62 TCSigned
= 0, // default
66 typedef unsigned char TCSearchOperator
;
68 TCEqual
= 0, // default
72 TCLessThanOrEqual
= 4, // not used
73 TCGreaterThanOrEqual
= 5 // not used
76 typedef unsigned char TCSearchType
;
78 TCGivenValue
= 0, // default
85 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
87 typedef struct _TCArray
97 #pragma mark Exported Array Functions
98 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
100 CHEAT_EXPORT TCArray
TCMakeArray( unsigned count
, unsigned size
);
101 CHEAT_EXPORT TCArray
TCMakeArrayWithBytes( unsigned count
, unsigned size
, void *bytes
);
102 CHEAT_EXPORT
void TCReleaseArray( TCArray array
);
104 CHEAT_EXPORT
void TCArrayAppendArray( TCArray array
, TCArray other
);
106 CHEAT_EXPORT NSString
*TCStringFromArray( TCArray array
);
110 #pragma mark Imported Array Functions
111 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
113 CHEAT_STATIC_INLINE
void *TCArrayBytes( TCArray array
)
115 return array
->_bytes
;
118 CHEAT_STATIC_INLINE
unsigned TCArrayElementCount( TCArray array
)
120 return array
->_count
;
123 CHEAT_STATIC_INLINE
unsigned TCArrayElementSize( TCArray array
)
128 CHEAT_STATIC_INLINE
void const *TCArrayElementAtIndex( TCArray array
, unsigned index
)
130 return array
->_bytes
+ index
* array
->_size
;
133 CHEAT_STATIC_INLINE
void TCArraySetElementAtIndex( TCArray array
, unsigned index
, void const *element
)
135 memcpy( array
->_bytes
+ index
* array
->_size
, element
, array
->_size
);
138 CHEAT_STATIC_INLINE
void TCArrayResize( TCArray array
, unsigned count
)
140 void *bytes
= realloc( array
->_bytes
, count
* array
->_size
);
143 array
->_bytes
= bytes
;
144 array
->_count
= count
;
148 CHEAT_STATIC_INLINE TCArray
TCArrayCopyElements( TCArray array
, unsigned count
)
150 return TCMakeArrayWithBytes( MIN(array
->_count
,count
), array
->_size
, array
->_bytes
);
153 CHEAT_STATIC_INLINE TCArray
TCArrayCopy( TCArray array
)
155 return TCArrayCopyElements( array
, array
->_count
);
158 CHEAT_STATIC_INLINE TCArray
TCArrayCopyContainer( TCArray array
, unsigned count
)
160 TCArray copy
= TCMakeArray( MIN(array
->_count
,count
), array
->_size
);
161 copy
->_bytes
= array
->_bytes
;
162 copy
->_ownsBytes
= NO
;
166 CHEAT_STATIC_INLINE
void TCArrayFill( TCArray array
, int filler
)
168 memset( array
->_bytes
, filler
, array
->_count
* array
->_size
);
173 #endif /* _CheaterTypes_H */