When referencing `NSObject`, it's enough to import `objc/NSObject.h`. Importing `Foundation` is unnecessary in these cases. Differential Revision: https://reviews.llvm.org/D99867
77 lines
1.3 KiB
Objective-C
77 lines
1.3 KiB
Objective-C
#import <objc/NSObject.h>
|
|
|
|
typedef struct {
|
|
unsigned char fieldOne : 1;
|
|
unsigned char fieldTwo : 1;
|
|
unsigned char fieldThree : 1;
|
|
unsigned char fieldFour : 1;
|
|
unsigned char fieldFive : 1;
|
|
} UCBitFields;
|
|
|
|
@interface HasBitfield : NSObject {
|
|
@public
|
|
unsigned field1 : 1;
|
|
unsigned field2 : 1;
|
|
};
|
|
|
|
-(id)init;
|
|
@end
|
|
|
|
@implementation HasBitfield
|
|
-(id)init {
|
|
self = [super init];
|
|
field1 = 0;
|
|
field2 = 1;
|
|
return self;
|
|
}
|
|
@end
|
|
|
|
@interface ContainsAHasBitfield : NSObject {
|
|
@public
|
|
HasBitfield *hb;
|
|
};
|
|
-(id)init;
|
|
@end
|
|
|
|
@implementation ContainsAHasBitfield
|
|
-(id)init {
|
|
self = [super init];
|
|
hb = [[HasBitfield alloc] init];
|
|
return self;
|
|
}
|
|
|
|
@end
|
|
|
|
@interface HasBitfield2 : NSObject {
|
|
@public
|
|
unsigned int x;
|
|
|
|
unsigned field1 : 15;
|
|
unsigned field2 : 4;
|
|
unsigned field3 : 4;
|
|
}
|
|
@end
|
|
|
|
@implementation HasBitfield2
|
|
- (id)init {
|
|
return (self = [super init]);
|
|
}
|
|
@end
|
|
|
|
int main(int argc, const char * argv[]) {
|
|
ContainsAHasBitfield *chb = [[ContainsAHasBitfield alloc] init];
|
|
HasBitfield2 *hb2 = [[HasBitfield2 alloc] init];
|
|
|
|
hb2->x = 100;
|
|
hb2->field1 = 10;
|
|
hb2->field2 = 3;
|
|
hb2->field3 = 4;
|
|
|
|
UCBitFields myField = {0};
|
|
myField.fieldTwo = 1;
|
|
myField.fieldFive = 1;
|
|
|
|
return 0; // break here
|
|
}
|
|
|