2 // **********************************************************************
3 // The Cheat - A universal game cheater for Mac OS X
4 // (C) 2003-2005 Chaz McGarvey (BrokenZipper)
6 // This program is free software; you can redistribute it and/or modify
7 // it under the terms of the GNU General Public License as published by
8 // the Free Software Foundation; either version 1, or (at your option)
11 // This program is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License
17 // along with this program; if not, write to the Free Software
18 // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
22 #ifndef _CheaterTypes_H
23 #define _CheaterTypes_H
25 #import <Cocoa/Cocoa.h>
27 #include <mach/vm_types.h>
34 #if defined( __cplusplus )
35 #define CHEAT_EXPORT extern "C"
36 #define CHEAT_IMPORT extern "C"
38 #define CHEAT_EXPORT extern
39 #define CHEAT_IMPORT extern
42 #if !defined( CHEAT_STATIC_INLINE )
43 #define CHEAT_STATIC_INLINE static __inline__
46 #if !defined( CHEAT_EXTERN_INLINE )
47 #define CHEAT_EXTERN_INLINE extern __inline__
52 #pragma mark Miscellaneous Types
53 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
55 typedef vm_address_t TCAddress
;
58 typedef unsigned char TCVariableType
;
61 TCInt32
= 1, // default
69 typedef unsigned char TCIntegerSign
;
71 TCSigned
= 0, // default
75 typedef unsigned char TCSearchOperator
;
77 TCEqual
= 0, // default
81 TCLessThanOrEqual
= 4, // not used
82 TCGreaterThanOrEqual
= 5 // not used
85 typedef unsigned char TCSearchType
;
87 TCGivenValue
= 0, // default
94 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
96 typedef struct _TCArray
106 #pragma mark Exported Array Functions
107 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
109 CHEAT_EXPORT TCArray
TCMakeArray( unsigned count
, unsigned size
);
110 CHEAT_EXPORT TCArray
TCMakeArrayWithBytes( unsigned count
, unsigned size
, void *bytes
);
111 CHEAT_EXPORT
void TCReleaseArray( TCArray array
);
113 CHEAT_EXPORT
void TCArrayAppendArray( TCArray array
, TCArray other
);
115 CHEAT_EXPORT NSString
*TCStringFromArray( TCArray array
);
119 #pragma mark Imported Array Functions
120 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
122 CHEAT_STATIC_INLINE
void *TCArrayBytes( TCArray array
)
124 return array
->_bytes
;
127 CHEAT_STATIC_INLINE
unsigned TCArrayElementCount( TCArray array
)
129 return array
->_count
;
132 CHEAT_STATIC_INLINE
unsigned TCArrayElementSize( TCArray array
)
137 CHEAT_STATIC_INLINE
void const *TCArrayElementAtIndex( TCArray array
, unsigned index
)
139 return array
->_bytes
+ index
* array
->_size
;
142 CHEAT_STATIC_INLINE
void TCArraySetElementAtIndex( TCArray array
, unsigned index
, void const *element
)
144 memcpy( array
->_bytes
+ index
* array
->_size
, element
, array
->_size
);
147 CHEAT_STATIC_INLINE
void TCArrayResize( TCArray array
, unsigned count
)
149 void *bytes
= realloc( array
->_bytes
, count
* array
->_size
);
152 array
->_bytes
= bytes
;
153 array
->_count
= count
;
157 CHEAT_STATIC_INLINE TCArray
TCArrayCopyElements( TCArray array
, unsigned count
)
159 return TCMakeArrayWithBytes( MIN(array
->_count
,count
), array
->_size
, array
->_bytes
);
162 CHEAT_STATIC_INLINE TCArray
TCArrayCopy( TCArray array
)
164 return TCArrayCopyElements( array
, array
->_count
);
167 CHEAT_STATIC_INLINE TCArray
TCArrayCopyContainer( TCArray array
, unsigned count
)
169 TCArray copy
= TCMakeArray( MIN(array
->_count
,count
), array
->_size
);
170 copy
->_bytes
= array
->_bytes
;
171 copy
->_ownsBytes
= NO
;
175 CHEAT_STATIC_INLINE
void TCArrayFill( TCArray array
, int filler
)
177 memset( array
->_bytes
, filler
, array
->_count
* array
->_size
);
182 #endif /* _CheaterTypes_H */