]> Dogcows Code - chaz/thecheat/blob - CheaterTypes.h
The Cheat 1.2
[chaz/thecheat] / CheaterTypes.h
1 //
2 // CheaterTypes.h
3 // The Cheat
4 //
5 // Created by Chaz McGarvey on 12/23/04.
6 // Copyright 2004 Chaz McGarvey. All rights reserved.
7 //
8
9 #ifndef _CheaterTypes_H
10 #define _CheaterTypes_H
11
12 #import <Cocoa/Cocoa.h>
13
14 #include <mach/vm_types.h>
15
16 #include <stdlib.h>
17 #include <string.h>
18
19
20 /* Compiler macros */
21 #if defined( __cplusplus )
22 #define CHEAT_EXPORT extern "C"
23 #define CHEAT_IMPORT extern "C"
24 #else
25 #define CHEAT_EXPORT extern
26 #define CHEAT_IMPORT extern
27 #endif
28
29 #if !defined( CHEAT_STATIC_INLINE )
30 #define CHEAT_STATIC_INLINE static __inline__
31 #endif
32
33 #if !defined( CHEAT_EXTERN_INLINE )
34 #define CHEAT_EXTERN_INLINE extern __inline__
35 #endif
36
37
38 #pragma mark -
39 #pragma mark Miscellaneous Types
40 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
41
42 typedef vm_address_t TCAddress;
43
44
45 typedef unsigned char TCVariableType;
46 enum {
47 TCInt64 = 0,
48 TCInt32 = 1, // default
49 TCInt16 = 2,
50 TCInt8 = 3,
51 TCString = 4,
52 TCFloat = 5,
53 TCDouble = 6
54 };
55
56 typedef unsigned char TCIntegerSign;
57 enum {
58 TCSigned = 0, // default
59 TCUnsigned = 1
60 };
61
62 typedef unsigned char TCSearchOperator;
63 enum {
64 TCEqual = 0, // default
65 TCNotEqual = 1,
66 TCLessThan = 2,
67 TCGreaterThan = 3,
68 TCLessThanOrEqual = 4, // not used
69 TCGreaterThanOrEqual = 5 // not used
70 };
71
72 typedef unsigned char TCSearchType;
73 enum {
74 TCGivenValue = 0, // default
75 TCLastValue = 1
76 };
77
78
79 #pragma mark -
80 #pragma mark TCArray
81 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
82
83 typedef struct _TCArray
84 {
85 void *_bytes;
86 unsigned _count;
87 unsigned _size;
88 BOOL _ownsBytes;
89 } *TCArray;
90
91
92 #pragma mark -
93 #pragma mark Exported Array Functions
94 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
95
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 );
99
100 CHEAT_EXPORT void TCArrayAppendArray( TCArray array, TCArray other );
101
102 CHEAT_EXPORT NSString *TCStringFromArray( TCArray array );
103
104
105 #pragma mark -
106 #pragma mark Imported Array Functions
107 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
108
109 CHEAT_STATIC_INLINE void *TCArrayBytes( TCArray array )
110 {
111 return array->_bytes;
112 }
113
114 CHEAT_STATIC_INLINE unsigned TCArrayElementCount( TCArray array )
115 {
116 return array->_count;
117 }
118
119 CHEAT_STATIC_INLINE unsigned TCArrayElementSize( TCArray array )
120 {
121 return array->_size;
122 }
123
124 CHEAT_STATIC_INLINE void const *TCArrayElementAtIndex( TCArray array, unsigned index )
125 {
126 return array->_bytes + index * array->_size;
127 }
128
129 CHEAT_STATIC_INLINE void TCArraySetElementAtIndex( TCArray array, unsigned index, void const *element )
130 {
131 memcpy( array->_bytes + index * array->_size, element, array->_size );
132 }
133
134 CHEAT_STATIC_INLINE void TCArrayResize( TCArray array, unsigned count )
135 {
136 void *bytes = realloc( array->_bytes, count * array->_size );
137
138 if ( bytes ) {
139 array->_bytes = bytes;
140 array->_count = count;
141 }
142 }
143
144 CHEAT_STATIC_INLINE TCArray TCArrayCopyElements( TCArray array, unsigned count )
145 {
146 return TCMakeArrayWithBytes( MIN(array->_count,count), array->_size, array->_bytes );
147 }
148
149 CHEAT_STATIC_INLINE TCArray TCArrayCopy( TCArray array )
150 {
151 return TCArrayCopyElements( array, array->_count );
152 }
153
154 CHEAT_STATIC_INLINE TCArray TCArrayCopyContainer( TCArray array, unsigned count )
155 {
156 TCArray copy = TCMakeArray( MIN(array->_count,count), array->_size );
157 copy->_bytes = array->_bytes;
158 copy->_ownsBytes = NO;
159 return copy;
160 }
161
162 CHEAT_STATIC_INLINE void TCArrayFill( TCArray array, int filler )
163 {
164 memset( array->_bytes, filler, array->_count * array->_size );
165 }
166
167
168
169 #endif /* _CheaterTypes_H */
170
This page took 0.037618 seconds and 4 git commands to generate.