/** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ #import "NeoVimBuffer.h" @implementation NeoVimBuffer - (instancetype)initWithHandle:(NSInteger)handle fileName:(NSString *)fileName dirty:(bool)dirty current:(bool)current { self = [super init]; if (self == nil) { return nil; } _handle = handle; _fileName = fileName; _isDirty = dirty; _isCurrent = current; return self; } - (instancetype)initWithCoder:(NSCoder *)coder { self = [super init]; if (self) { NSNumber *objHandle = [coder decodeObjectForKey:@"handle"]; _handle = objHandle.integerValue; _fileName = [coder decodeObjectForKey:@"fileName"]; _isDirty = [coder decodeBoolForKey:@"dirty"]; _isCurrent = [coder decodeBoolForKey:@"current"]; } return self; } - (BOOL)isEqual:(id)other { if (other == self) return YES; if (!other || ![[other class] isEqual:[self class]]) return NO; return [self isEqualToBuffer:other]; } - (BOOL)isEqualToBuffer:(NeoVimBuffer *)buffer { if (self == buffer) return YES; if (buffer == nil) return NO; if (self.handle != buffer.handle) return NO; return YES; } - (NSUInteger)hash { return (NSUInteger) self.handle; } - (void)encodeWithCoder:(NSCoder *)coder { [coder encodeObject:@(self.handle) forKey:@"handle"]; [coder encodeObject:self.fileName forKey:@"fileName"]; [coder encodeBool:self.isDirty forKey:@"dirty"]; [coder encodeBool:self.isCurrent forKey:@"current"]; } - (NSString *)description { NSMutableString *description = [NSMutableString stringWithFormat:@"<%@: ", NSStringFromClass([self class])]; [description appendFormat:@"self.handle=%li", self.handle]; [description appendFormat:@", self.fileName=%@", self.fileName]; [description appendFormat:@", self.dirty=%d", self.isDirty]; [description appendFormat:@", self.current=%d", self.isCurrent]; [description appendString:@">"]; return description; } - (bool)isTransient { if (self.isDirty) { return NO; } if (self.fileName != nil) { return NO; } return YES; } @end