xref: /llvm-project/lldb/test/API/lang/objc/objc-property/main.m (revision 6919c58262b0bab682ab48903e714d70a489418b)
199451b44SJordan Rupprecht#import <Foundation/Foundation.h>
299451b44SJordan Rupprecht
399451b44SJordan Rupprecht@protocol MyProtocol
499451b44SJordan Rupprecht
599451b44SJordan Rupprecht-(const char *)hello;
699451b44SJordan Rupprecht
799451b44SJordan Rupprecht@end
899451b44SJordan Rupprecht
999451b44SJordan Rupprechtstatic int _class_int = 123;
1099451b44SJordan Rupprecht
1199451b44SJordan Rupprecht@interface BaseClass : NSObject
1299451b44SJordan Rupprecht{
1399451b44SJordan Rupprecht  int _backedInt;
1499451b44SJordan Rupprecht  int _access_count;
1599451b44SJordan Rupprecht}
1699451b44SJordan Rupprecht
1799451b44SJordan Rupprecht- (int) nonexistantInt;
1899451b44SJordan Rupprecht- (void) setNonexistantInt: (int) in_int;
1999451b44SJordan Rupprecht
2099451b44SJordan Rupprecht- (int) myGetUnbackedInt;
2199451b44SJordan Rupprecht- (void) mySetUnbackedInt: (int) in_int;
2299451b44SJordan Rupprecht
2399451b44SJordan Rupprecht- (int) getAccessCount;
2499451b44SJordan Rupprecht
25*6919c582SRaphael Isemann+ (int) propConflict;
26*6919c582SRaphael Isemann
2799451b44SJordan Rupprecht+(BaseClass *) baseClassWithBackedInt: (int) inInt andUnbackedInt: (int) inOtherInt;
2899451b44SJordan Rupprecht
2999451b44SJordan Rupprecht@property(getter=myGetUnbackedInt,setter=mySetUnbackedInt:) int unbackedInt;
3099451b44SJordan Rupprecht@property int backedInt;
3199451b44SJordan Rupprecht@property (nonatomic, assign) id <MyProtocol> idWithProtocol;
3299451b44SJordan Rupprecht@property(class) int classInt;
33*6919c582SRaphael Isemann@property(getter=propConflict,readonly) int propConflict;
34*6919c582SRaphael Isemann@property(readonly,class) int propConflict;
3599451b44SJordan Rupprecht@end
3699451b44SJordan Rupprecht
3799451b44SJordan Rupprecht@implementation BaseClass
3899451b44SJordan Rupprecht@synthesize unbackedInt;
3999451b44SJordan Rupprecht@synthesize backedInt = _backedInt;
4099451b44SJordan Rupprecht
4199451b44SJordan Rupprecht+ (BaseClass *) baseClassWithBackedInt: (int) inInt andUnbackedInt: (int) inOtherInt
4299451b44SJordan Rupprecht{
4399451b44SJordan Rupprecht  BaseClass *new = [[BaseClass alloc] init];
4499451b44SJordan Rupprecht
4599451b44SJordan Rupprecht  new->_backedInt = inInt;
4699451b44SJordan Rupprecht  new->unbackedInt = inOtherInt;
4799451b44SJordan Rupprecht
4899451b44SJordan Rupprecht  return new;
4999451b44SJordan Rupprecht}
5099451b44SJordan Rupprecht
5199451b44SJordan Rupprecht- (int) myGetUnbackedInt
5299451b44SJordan Rupprecht{
5399451b44SJordan Rupprecht  // NSLog (@"Getting BaseClass::unbackedInt - %d.\n", unbackedInt);
5499451b44SJordan Rupprecht  _access_count++;
5599451b44SJordan Rupprecht  return unbackedInt;
5699451b44SJordan Rupprecht}
5799451b44SJordan Rupprecht
5899451b44SJordan Rupprecht- (void) mySetUnbackedInt: (int) in_int
5999451b44SJordan Rupprecht{
6099451b44SJordan Rupprecht  // NSLog (@"Setting BaseClass::unbackedInt from %d to %d.", unbackedInt, in_int);
6199451b44SJordan Rupprecht  _access_count++;
6299451b44SJordan Rupprecht  unbackedInt = in_int;
6399451b44SJordan Rupprecht}
6499451b44SJordan Rupprecht
6599451b44SJordan Rupprecht- (int) nonexistantInt
6699451b44SJordan Rupprecht{
6799451b44SJordan Rupprecht  // NSLog (@"Getting BaseClass::nonexistantInt - %d.\n", 5);
6899451b44SJordan Rupprecht  _access_count++;
6999451b44SJordan Rupprecht  return 6;
7099451b44SJordan Rupprecht}
7199451b44SJordan Rupprecht
7299451b44SJordan Rupprecht- (void) setNonexistantInt: (int) in_int
7399451b44SJordan Rupprecht{
7499451b44SJordan Rupprecht  // NSLog (@"Setting BaseClass::nonexistantInt from 7 to %d.", in_int);
7599451b44SJordan Rupprecht  _access_count++;
7699451b44SJordan Rupprecht}
7799451b44SJordan Rupprecht
7899451b44SJordan Rupprecht+ (int) classInt
7999451b44SJordan Rupprecht{
8099451b44SJordan Rupprecht    return _class_int;
8199451b44SJordan Rupprecht}
8299451b44SJordan Rupprecht
8399451b44SJordan Rupprecht+ (void) setClassInt:(int) n
8499451b44SJordan Rupprecht{
8599451b44SJordan Rupprecht    _class_int = n;
8699451b44SJordan Rupprecht}
8799451b44SJordan Rupprecht
8899451b44SJordan Rupprecht- (int) getAccessCount
8999451b44SJordan Rupprecht{
9099451b44SJordan Rupprecht  return _access_count;
9199451b44SJordan Rupprecht}
92*6919c582SRaphael Isemann
93*6919c582SRaphael Isemann- (int) propConflict
94*6919c582SRaphael Isemann{
95*6919c582SRaphael Isemann  return 4;
96*6919c582SRaphael Isemann}
97*6919c582SRaphael Isemann+ (int) propConflict
98*6919c582SRaphael Isemann{
99*6919c582SRaphael Isemann  return 6;
100*6919c582SRaphael Isemann}
10199451b44SJordan Rupprecht@end
10299451b44SJordan Rupprecht
10399451b44SJordan Rupprechttypedef BaseClass TypedefBaseClass;
10499451b44SJordan Rupprecht
10599451b44SJordan Rupprechtint
10699451b44SJordan Rupprechtmain ()
10799451b44SJordan Rupprecht{
10899451b44SJordan Rupprecht  BaseClass *mine = [BaseClass baseClassWithBackedInt: 10 andUnbackedInt: 20];
10999451b44SJordan Rupprecht  TypedefBaseClass *typedefd = mine;
110*6919c582SRaphael Isemann  int propConflict = mine.propConflict + BaseClass.propConflict;
11199451b44SJordan Rupprecht
11299451b44SJordan Rupprecht  // Set a breakpoint here.
11399451b44SJordan Rupprecht  int nonexistant = mine.nonexistantInt;
11499451b44SJordan Rupprecht
11599451b44SJordan Rupprecht  int backedInt = mine.backedInt;
11699451b44SJordan Rupprecht
11799451b44SJordan Rupprecht  int unbackedInt = mine.unbackedInt;
11899451b44SJordan Rupprecht
11999451b44SJordan Rupprecht  id idWithProtocol = mine.idWithProtocol;
12099451b44SJordan Rupprecht
12199451b44SJordan Rupprecht  NSLog (@"Results for %p: nonexistant: %d backed: %d unbacked: %d accessCount: %d.",
12299451b44SJordan Rupprecht         mine,
12399451b44SJordan Rupprecht         nonexistant,
12499451b44SJordan Rupprecht         backedInt,
12599451b44SJordan Rupprecht         unbackedInt,
12699451b44SJordan Rupprecht         [mine getAccessCount]);
12799451b44SJordan Rupprecht  return 0;
12899451b44SJordan Rupprecht
12999451b44SJordan Rupprecht}
13099451b44SJordan Rupprecht
131