ComponentKit/Core/Swift/RCDimension_SwiftBridge.mm (51 lines of code) (raw):
/*
* Copyright (c) 2014-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
*/
#import <ComponentKit/RCDimension_SwiftBridge.h>
#import <ComponentKit/RCDimension_SwiftBridge+Internal.h>
#import <ComponentKit/CKCasting.h>
@implementation RCDimension_SwiftBridge {
RCRelativeDimension _dimension;
}
- (instancetype)initWithDimension:(const RCRelativeDimension &)dimension
{
self = [super init];
_dimension = dimension;
return self;
}
- (instancetype)init
{
return [self initWithDimension:{}];
}
- (instancetype)initWithPoints:(CGFloat)points
{
return [self initWithDimension:{points}];
}
- (instancetype)initWithPercent:(CGFloat)percent
{
return [self initWithDimension:RCRelativeDimension::Percent(percent)];
}
+ (instancetype)autoInstance
{
return [[self alloc] initWithDimension:RCRelativeDimension::Auto()];
}
- (const RCRelativeDimension &)dimension
{
return _dimension;
}
- (BOOL)isEqual:(id)other
{
if (other == nil) {
return NO;
} else if (other == self) {
return YES;
} else {
// Intentionally treat passing a different type as a programming error
return _dimension == CK::objCForceCast<RCDimension_SwiftBridge>(other)->_dimension;
}
}
- (NSUInteger)hash
{
return std::hash<RCRelativeDimension>{}(_dimension);
}
- (NSString *)description
{
return _dimension.description();
}
@end