// Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef FLUTTER_FML_STRING_RANGE_SANITIZATION_H_ #define FLUTTER_FML_STRING_RANGE_SANITIZATION_H_ #include namespace fml { // Returns a range encompassing the grapheme cluster in which |index| is located. // // A nil |text| or an index greater than or equal to text.length will result in // `NSRange(NSNotFound, 0)`. NSRange RangeForCharacterAtIndex(NSString* text, NSUInteger index); // Returns a range encompassing the grapheme clusters falling in |range|. // // This method will not alter the length of the input range, but will ensure // that the range's location is not in the middle of a multi-byte unicode // sequence. // // An invalid range will result in `NSRange(NSNotFound, 0)`. NSRange RangeForCharactersInRange(NSString* text, NSRange range); } // namespace fml #endif // FLUTTER_FML_STRING_RANGE_SANITIZATION_H_