]> git.saurik.com Git - cydia.git/commitdiff
Factor class Pcre into its own file.
authorJay Freeman (saurik) <saurik@saurik.com>
Mon, 28 Feb 2011 18:58:51 +0000 (10:58 -0800)
committerJay Freeman (saurik) <saurik@saurik.com>
Mon, 7 Mar 2011 10:41:28 +0000 (02:41 -0800)
MobileCydia.mm
UICaboodle/NSString-UICaboodle.h [new file with mode: 0644]
UICaboodle/PerlCompatibleRegEx.hpp [new file with mode: 0644]

index 35b5e7f5cf71cf6ec7d9167222da89766b74ce51..e8ee0c7dcf6f95533588866a0be5272d77136e98 100644 (file)
@@ -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_;
diff --git a/UICaboodle/NSString-UICaboodle.h b/UICaboodle/NSString-UICaboodle.h
new file mode 100644 (file)
index 0000000..f09f1c3
--- /dev/null
@@ -0,0 +1,48 @@
+/* Cydia - iPhone UIKit Front-End for Debian APT
+ * Copyright (C) 2008-2011  Jay Freeman (saurik)
+*/
+
+/* Modified BSD License {{{ */
+/*
+ *        Redistribution and use in source and binary
+ * forms, with or without modification, are permitted
+ * provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the
+ *    above copyright notice, this list of conditions
+ *    and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the
+ *    above copyright notice, this list of conditions
+ *    and the following disclaimer in the documentation
+ *    and/or other materials provided with the
+ *    distribution.
+ * 3. The name of the author may not be used to endorse
+ *    or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+/* }}} */
+
+#ifndef UICaboodle_NSString_Cydia_H
+#define UICaboodle_NSString_Cydia_H
+
+@interface NSString (UICaboodle)
++ (NSString *) stringWithUTF8BytesNoCopy:(const char *)bytes length:(int)length;
++ (NSString *) stringWithUTF8Bytes:(const char *)bytes length:(int)length;
+@end
+
+#endif//UICaboodle_NSString_Cydia_H
diff --git a/UICaboodle/PerlCompatibleRegEx.hpp b/UICaboodle/PerlCompatibleRegEx.hpp
new file mode 100644 (file)
index 0000000..f91c338
--- /dev/null
@@ -0,0 +1,117 @@
+/* Cydia - iPhone UIKit Front-End for Debian APT
+ * Copyright (C) 2008-2011  Jay Freeman (saurik)
+*/
+
+/* Modified BSD License {{{ */
+/*
+ *        Redistribution and use in source and binary
+ * forms, with or without modification, are permitted
+ * provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the
+ *    above copyright notice, this list of conditions
+ *    and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the
+ *    above copyright notice, this list of conditions
+ *    and the following disclaimer in the documentation
+ *    and/or other materials provided with the
+ *    distribution.
+ * 3. The name of the author may not be used to endorse
+ *    or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+/* }}} */
+
+#ifndef Cydia_PerlCompatibleRegEx_HPP
+#define Cydia_PerlCompatibleRegEx_HPP
+
+#include <pcre.h>
+
+#include "UICaboodle/NSString-UICaboodle.h"
+
+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) {
+            fprintf(stderr, "%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];
+    }
+};
+
+#endif//Cydia_PerlCompatibleRegEx_HPP