1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
|
/*
Taken from Marcel Weiher's MPWFoundation framework.
*/
//--- This file expands the accessor macros
#define newBool(x) (x ? [[NSNumber numberWithBool:x] retain] : nil)
#define newInt(x) [[NSNumber numberWithInt:x] retain]
#define newChar(x) [[NSNumber numberWithChar:x] retain]
#define makeBool(x) (x ? [NSNumber numberWithBool:x] : nil)
#define makeInt(x) [NSNumber numberWithInt:x]
#define makeChar(x) [NSNumber numberWithChar:x]
#define toInt(x) [x intValue]
#define toBool(x) [x boolValue]
#define toString(x) [x stringValue]
#define ASSIGN_ID(var,value)\
{\
id tempValue=(value);\
if ( tempValue!=var) { \
if ( tempValue!=(id)self ) \
[tempValue retain]; \
if ( var && var!=(id)self) \
[var release]; \
var = tempValue; \
} \
}\
#define setAccessor( var,setVar ) \
-(void)setVar:newVar { \
ASSIGN_ID(var,newVar)\
} \
#define readAccessor( var )\
-var { return var; }
#define relayReadAccessor( var, delegate ) \
-var\
{\
if ( var ) {\
return var;\
} else {\
return [delegate var];\
}\
}\
#define idAccessor( var, setVar ) \
readAccessor( var )\
setAccessor(var,setVar )
#define relayAccessor( var, setVar, delegate )\
relayReadAccessor( var , delegate )\
setAccessor( var, setVar )
#define idAccessor_h( var,setVar ) -(void)setVar:newVar; \
-var;
#define scalarAccessor( scalarType, var, setVar ) \
-(void)setVar:(scalarType)newVar { var=newVar; } \
-(scalarType)var { return var; }
#define scalarAccessor_h( scalarType, var, setVar ) \
-(void)setVar:(scalarType)newVar; \
-(scalarType)var;
#define intAccessor( var, setVar ) scalarAccessor( int, var, setVar )
#define intAccessor_h( var, setVar ) scalarAccessor_h( int, var, setVar )
#define floatAccessor(var,setVar ) scalarAccessor( float, var, setVar )
#define floatAccessor_h(var,setVar ) scalarAccessor_h( float, var, setVar )
#define boolAccessor(var,setVar ) scalarAccessor( BOOL, var, setVar )
#define boolAccessor_h(var,setVar ) scalarAccessor_h( BOOL, var, setVar )
//--- compatibility:
//#define accessor idAccessor
//#define accessor_h idAccessor_h
//---- RETAIN/RELEASE Macros for GNUStep compatibility
#ifndef RETAIN
#define RETAIN(x) ([(x) retain])
#endif
#ifndef RELEASE
#define RELEASE(x) ([(x) release])
#endif
#ifndef AUTORELEASE
#define AUTORELEASE(x) ([(x) autorelease])
#endif
#ifndef DESTROY
#define DESTROY(x) ([(x) release])
#endif
#ifndef ASSIGN
#define ASSIGN(var,value) ASSIGN_ID(var,value)
#endif
#ifndef ASSIGNCOPY
#define ASSIGNCOPY(var,value) ASSIGN(var,[(value) copy])
#endif
|