brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 75d3239 Raw
77 lines · plain
1#import <objc/NSObject.h>2 3typedef struct {4    unsigned char fieldOne : 1;5    unsigned char fieldTwo : 1;6    unsigned char fieldThree : 1;7    unsigned char fieldFour : 1;8    unsigned char fieldFive : 1;9} UCBitFields;10 11@interface HasBitfield : NSObject {12@public13    unsigned field1 : 1;14    unsigned field2 : 1;15};16 17-(id)init;18@end19 20@implementation HasBitfield21-(id)init {22    self = [super init];23    field1 = 0;24    field2 = 1;25    return self;26}27@end28 29@interface ContainsAHasBitfield : NSObject {30@public31    HasBitfield *hb;32};33-(id)init;34@end35 36@implementation  ContainsAHasBitfield37-(id)init {38    self = [super init];39    hb = [[HasBitfield alloc] init];40    return self;41}42 43@end44 45@interface HasBitfield2 : NSObject {46@public47  unsigned int x;48 49  unsigned field1 : 15;50  unsigned field2 : 4;51  unsigned field3 : 4;52}53@end54 55@implementation HasBitfield256- (id)init {57  return (self = [super init]);58}59@end60 61int main(int argc, const char * argv[]) {62    ContainsAHasBitfield *chb = [[ContainsAHasBitfield alloc] init];63    HasBitfield2 *hb2 = [[HasBitfield2 alloc] init];64 65    hb2->x = 100;66    hb2->field1 = 10;67    hb2->field2 = 3;68    hb2->field3 = 4;69 70    UCBitFields myField = {0};71    myField.fieldTwo = 1;72    myField.fieldFive = 1;73 74    return 0; // break here75}76 77