File: AccessorMacros.h

package info (click to toggle)
gridlock.app 1.10-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,556 kB
  • sloc: objc: 10,334; ansic: 669; makefile: 12
file content (104 lines) | stat: -rw-r--r-- 2,596 bytes parent folder | download | duplicates (7)
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