diff options
Diffstat (limited to 'src/objc/utils')
-rw-r--r-- | src/objc/utils/MCOIndexSet+Private.h | 5 | ||||
-rw-r--r-- | src/objc/utils/MCOIndexSet.h | 28 | ||||
-rw-r--r-- | src/objc/utils/MCOOperation.h | 7 | ||||
-rw-r--r-- | src/objc/utils/MCORange.h | 30 | ||||
-rw-r--r-- | src/objc/utils/MCORange.mm | 2 | ||||
-rw-r--r-- | src/objc/utils/MCOUtils.h | 5 |
6 files changed, 66 insertions, 11 deletions
diff --git a/src/objc/utils/MCOIndexSet+Private.h b/src/objc/utils/MCOIndexSet+Private.h index 78a3554e..ef9111fa 100644 --- a/src/objc/utils/MCOIndexSet+Private.h +++ b/src/objc/utils/MCOIndexSet+Private.h @@ -6,8 +6,9 @@ // Copyright (c) 2013 MailCore. All rights reserved. // -#ifndef mailcore2_MCOIndexSet_Private_h -#define mailcore2_MCOIndexSet_Private_h +#ifndef __MAILCORE_MCOINDEXSET_PRIVATE_H_ + +#define __MAILCORE_MCOINDEXSET_PRIVATE_H_ #ifdef __cplusplus @interface MCOIndexSet (Private) diff --git a/src/objc/utils/MCOIndexSet.h b/src/objc/utils/MCOIndexSet.h index 83e6f169..5f02935d 100644 --- a/src/objc/utils/MCOIndexSet.h +++ b/src/objc/utils/MCOIndexSet.h @@ -6,32 +6,52 @@ // Copyright (c) 2013 MailCore. All rights reserved. // -#import <Foundation/Foundation.h> - -#import <MailCore/MCORange.h> - #ifndef __MAILCORE_MCOINDEXSET_H_ #define __MAILCORE_MCOINDEXSET_H_ +#import <Foundation/Foundation.h> + +#import <MailCore/MCORange.h> + // similar to NSMutableIndexSet but supports int64_t @interface MCOIndexSet : NSObject <NSCopying> +// Creates an empty index set. + (MCOIndexSet *) indexSet; + +// Creates an index set that contains a range of integers. + (MCOIndexSet *) indexSetWithRange:(MCORange)range; + +// Creates an index set with a single integer. + (MCOIndexSet *) indexSetWithIndex:(uint64_t)idx; +// Returns the number of integers in that index set. - (unsigned int) count; + +// Adds an integer to the index set. - (void) addIndex:(uint64_t)idx; + +// Removes an integer from the index set. - (void) removeIndex:(uint64_t)idx; + +// Returns YES if the index set contains the given integer. - (BOOL) containsIndex:(uint64_t)idx; +// Adds a range of integers to the index set. - (void) addRange:(MCORange)range; + +// Removes a range of integers from the index set. - (void) removeRange:(MCORange)range; + +// Removes all integers that are not in the given range. - (void) intersectsRange:(MCORange)range; +// Returns all the ranges of ths index set. - (MCORange *) allRanges; + +// Returns the number of ranges in this index set. - (unsigned int) rangesCount; @end diff --git a/src/objc/utils/MCOOperation.h b/src/objc/utils/MCOOperation.h index e44ea236..7893f917 100644 --- a/src/objc/utils/MCOOperation.h +++ b/src/objc/utils/MCOOperation.h @@ -13,9 +13,16 @@ #import <Foundation/Foundation.h> @interface MCOOperation : NSObject + @property (readonly) BOOL isCancelled; +// This methods is called on the main thread when the asynchronous operation is finished. +// Needs to be overriden by subclasses. +- (void)operationCompleted; + +// Cancel the operation. - (void)cancel; + @end #endif diff --git a/src/objc/utils/MCORange.h b/src/objc/utils/MCORange.h index a42e0928..4fdb9233 100644 --- a/src/objc/utils/MCORange.h +++ b/src/objc/utils/MCORange.h @@ -6,8 +6,9 @@ // Copyright (c) 2013 MailCore. All rights reserved. // -#ifndef mailcore2_MCORange_h -#define mailcore2_MCORange_h +#ifndef __MAILCORE_MCORANGE_H_ + +#define __MAILCORE_MCORANGE_H_ #import <Foundation/Foundation.h> @@ -22,22 +23,45 @@ extern "C" { @class MCOIndexSet; typedef struct { + // first integer of the range. uint64_t location; + + // length of the range. uint64_t length; } MCORange; -extern MCORange RangeEmpty; +// Constants for an emtpy range. +extern MCORange MCORangeEmpty; +// Returns a new range given a location and length. MCORange MCORangeMake(uint64_t location, uint64_t length); + +// Returns an index set that is the result of sustracting a range from a range. MCOIndexSet * MCORangeRemoveRange(MCORange range1, MCORange range2); + +// Returns an index set that is the result of the union a range from a range. MCOIndexSet * MCORangeUnion(MCORange range1, MCORange range2); + #ifdef __cplusplus + +// Returns a C++ range from an Objective-C range. mailcore::Range MCORangeToMCRange(MCORange range); + +// Returns an Objective-C range from a C++ range. MCORange MCORangeWithMCRange(mailcore::Range range); + #endif + +// Returns the intersection of two ranges. MCORange MCORangeIntersection(MCORange range1, MCORange range2); + +// Returns YES if two given ranges have an intersection. BOOL MCORangeHasIntersection(MCORange range1, MCORange range2); + +// Returns left bound of a range. uint64_t MCORangeLeftBound(MCORange range); + +// Returns right bound of a range. uint64_t MCORangeRightBound(MCORange range); #ifdef __cplusplus diff --git a/src/objc/utils/MCORange.mm b/src/objc/utils/MCORange.mm index d1681f14..36c7720c 100644 --- a/src/objc/utils/MCORange.mm +++ b/src/objc/utils/MCORange.mm @@ -13,6 +13,8 @@ #include <string.h> +MCORange MCORangeEmpty = {UINT64_MAX, 0}; + MCORange MCORangeMake(uint64_t location, uint64_t length) { MCORange result; diff --git a/src/objc/utils/MCOUtils.h b/src/objc/utils/MCOUtils.h index bc4f716c..3a2c8d82 100644 --- a/src/objc/utils/MCOUtils.h +++ b/src/objc/utils/MCOUtils.h @@ -6,8 +6,9 @@ // Copyright (c) 2013 MailCore. All rights reserved. // -#ifndef mailcore2_MCOUtils_h -#define mailcore2_MCOUtils_h +#ifndef __MAILCORE_MCOUTILS_H_ + +#define __MAILCORE_MCOUTILS_H_ #import <MailCore/MCOObjectWrapper.h> #import <MailCore/NSData+MCO.h> |