diff options
author | gtm.daemon <gtm.daemon@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3> | 2010-01-15 23:01:01 +0000 |
---|---|---|
committer | gtm.daemon <gtm.daemon@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3> | 2010-01-15 23:01:01 +0000 |
commit | 2bb0d1179cb0fe86385eaf087f9a924d1802910f (patch) | |
tree | d216356f43945142a277bcd06b7a290e8743e2b7 /Foundation/GTMStringEncoding.h | |
parent | b2fa9805eb63d5daa1dd8fab1edf0c85fb7ebfc0 (diff) |
[Author: iwade]
Added GTMStringEncoding which is a generic base 2-128 encoder/decoder with support for custom character maps.
R=thomasvl
APPROVED=thomasvl
DELTA=723 (723 added, 0 deleted, 0 changed)
Diffstat (limited to 'Foundation/GTMStringEncoding.h')
-rw-r--r-- | Foundation/GTMStringEncoding.h | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/Foundation/GTMStringEncoding.h b/Foundation/GTMStringEncoding.h new file mode 100644 index 0000000..b74f2d9 --- /dev/null +++ b/Foundation/GTMStringEncoding.h @@ -0,0 +1,88 @@ +// +// GTMStringEncoding.h +// +// Copyright 2010 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); you may not +// use this file except in compliance with the License. You may obtain a copy +// of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +// License for the specific language governing permissions and limitations under +// the License. +// + +#import <Foundation/Foundation.h> +#import "GTMDefines.h" + +// A generic class for arbitrary base-2 to 128 string encoding and decoding. +@interface GTMStringEncoding : NSObject { + @private + NSData *charMapData_; + char *charMap_; + int reverseCharMap_[128]; + int shift_; + int mask_; + BOOL doPad_; + char paddingChar_; + int padLen_; +} + +// Create a new, autoreleased GTMStringEncoding object with a standard encoding. ++ (id)binaryStringEncoding; ++ (id)hexStringEncoding; ++ (id)rfc4648Base32StringEncoding; ++ (id)rfc4648Base32HexStringEncoding; ++ (id)crockfordBase32StringEncoding; ++ (id)rfc4648Base64StringEncoding; ++ (id)rfc4648Base64WebsafeStringEncoding; + +// Create a new, autoreleased GTMStringEncoding object with the given string, +// as described below. ++ (id)stringEncodingWithString:(NSString *)string; + +// Initialize a new GTMStringEncoding object with the string. +// +// The length of the string must be a power of 2, at least 2 and at most 128. +// Only 7-bit ASCII characters are permitted in the string. +// +// These characters are the canonical set emitted during encoding. +// If the characters have alternatives (e.g. case, easily transposed) then use +// addDecodeSynonyms: to configure them. +- (id)initWithString:(NSString *)string; + +// Add decoding synonyms as specified in the synonyms argument. +// +// It should be a sequence of one previously reverse mapped character, +// followed by one or more non-reverse mapped character synonyms. +// Only 7-bit ASCII characters are permitted in the string. +// +// e.g. If a GTMStringEncoder object has already been initialised with a set +// of characters excluding I, L and O (to avoid confusion with digits) and you +// want to accept them as digits you can call addDecodeSynonyms:@"0oO1iIlL". +- (void)addDecodeSynonyms:(NSString *)synonyms; + +// A sequence of characters to ignore if they occur during encoding. +// Only 7-bit ASCII characters are permitted in the string. +- (void)ignoreCharacters:(NSString *)chars; + +// Indicates whether padding is performed during encoding. +- (BOOL)doPad; +- (void)setDoPad:(BOOL)doPad; + +// Sets the padding character to use during encoding. +- (void)setPaddingChar:(char)c; + +// Encode a raw binary buffer to a 7-bit ASCII string. +- (NSString *)encode:(NSData *)data; +- (NSString *)encodeString:(NSString *)string; + +// Decode a 7-bit ASCII string to a raw binary buffer. +- (NSData *)decode:(NSString *)string; +- (NSString *)stringByDecoding:(NSString *)string; + +@end |