summaryrefslogtreecommitdiff
path: root/MobileCydia.mm
diff options
context:
space:
mode:
authorJay Freeman (saurik) <saurik@saurik.com>2011-02-28 10:58:51 -0800
committerJay Freeman (saurik) <saurik@saurik.com>2011-03-07 02:41:28 -0800
commit449ef9d5e3846f1b4d517973eecb4c068fe276f9 (patch)
tree0089c611766a37e0e9009aebbeb21ded7dd55eaf /MobileCydia.mm
parent8b836b87ad4bb7e2bdbff38878d62f403d76d520 (diff)
Factor class Pcre into its own file.
Diffstat (limited to 'MobileCydia.mm')
-rw-r--r--MobileCydia.mm83
1 files changed, 8 insertions, 75 deletions
diff --git a/MobileCydia.mm b/MobileCydia.mm
index 35b5e7f..e8ee0c7 100644
--- a/MobileCydia.mm
+++ b/MobileCydia.mm
@@ -117,11 +117,13 @@ extern "C" {
#include <cstring>
#include <errno.h>
-#include <pcre.h>
#include <Cytore.hpp>
#include "UICaboodle/BrowserView.h"
+#include "UICaboodle/NSString-UICaboodle.h"
+#include "UICaboodle/PerlCompatibleRegEx.hpp"
+
#include "SDURLCache/SDURLCache.h"
#include "substrate.h"
@@ -617,14 +619,12 @@ NSUInteger DOMNodeList$countByEnumeratingWithState$objects$count$(DOMNodeList *s
/* Cydia NSString Additions {{{ */
@interface NSString (Cydia)
-+ (NSString *) stringWithUTF8BytesNoCopy:(const char *)bytes length:(int)length;
-+ (NSString *) stringWithUTF8Bytes:(const char *)bytes length:(int)length;
- (NSComparisonResult) compareByPath:(NSString *)other;
- (NSString *) stringByCachingURLWithCurrentCDN;
- (NSString *) stringByAddingPercentEscapesIncludingReserved;
@end
-@implementation NSString (Cydia)
+@implementation NSString (UICaboodle)
+ (NSString *) stringWithUTF8BytesNoCopy:(const char *)bytes length:(int)length {
return [[[NSString alloc] initWithBytesNoCopy:const_cast<char *>(bytes) length:length encoding:NSUTF8StringEncoding freeWhenDone:NO] autorelease];
@@ -634,6 +634,10 @@ NSUInteger DOMNodeList$countByEnumeratingWithState$objects$count$(DOMNodeList *s
return [[[NSString alloc] initWithBytes:bytes length:length encoding:NSUTF8StringEncoding] autorelease];
}
+@end
+
+@implementation NSString (Cydia)
+
- (NSComparisonResult) compareByPath:(NSString *)other {
NSString *prefix = [self commonPrefixWithString:other options:0];
size_t length = [prefix length];
@@ -827,77 +831,6 @@ struct NSStringMapEqual :
};
/* }}} */
-/* Perl-Compatible RegEx {{{ */
-class Pcre {
- private:
- pcre *code_;
- pcre_extra *study_;
- int capture_;
- int *matches_;
- const char *data_;
-
- public:
- Pcre() :
- code_(NULL),
- study_(NULL)
- {
- }
-
- Pcre(const char *regex) :
- code_(NULL),
- study_(NULL)
- {
- this->operator =(regex);
- }
-
- void operator =(const char *regex) {
- _assert(code_ == NULL);
-
- const char *error;
- int offset;
- code_ = pcre_compile(regex, 0, &error, &offset, NULL);
-
- if (code_ == NULL) {
- lprintf("%d:%s\n", offset, error);
- _assert(false);
- }
-
- pcre_fullinfo(code_, study_, PCRE_INFO_CAPTURECOUNT, &capture_);
- matches_ = new int[(capture_ + 1) * 3];
- }
-
- ~Pcre() {
- pcre_free(code_);
- delete matches_;
- }
-
- NSString *operator [](size_t match) const {
- return [NSString stringWithUTF8Bytes:(data_ + matches_[match * 2]) length:(matches_[match * 2 + 1] - matches_[match * 2])];
- }
-
- _finline bool operator ()(NSString *data) {
- // XXX: length is for characters, not for bytes
- return operator ()([data UTF8String], [data length]);
- }
-
- _finline bool operator ()(const char *data) {
- return operator ()(data, strlen(data));
- }
-
- bool operator ()(const char *data, size_t size) {
- data_ = data;
- return pcre_exec(code_, study_, data, size, 0, 0, matches_, (capture_ + 1) * 3) >= 0;
- }
-
- NSString *operator ->*(NSString *format) const {
- id values[capture_];
- for (int i(0); i != capture_; ++i)
- values[i] = this->operator [](i + 1);
-
- return [[[NSString alloc] initWithFormat:format arguments:reinterpret_cast<va_list>(values)] autorelease];
- }
-};
-/* }}} */
/* Mime Addresses {{{ */
@interface Address : NSObject {
NSString *name_;