]> git.saurik.com Git - cydia.git/commitdiff
Separate out Menes/NSObject-MenesYieldToSelector.*.
authorJay Freeman (saurik) <saurik@saurik.com>
Tue, 1 Mar 2011 16:59:25 +0000 (08:59 -0800)
committerJay Freeman (saurik) <saurik@saurik.com>
Mon, 7 Mar 2011 10:41:33 +0000 (02:41 -0800)
Menes/Menes.h [new file with mode: 0644]
Menes/NSObject-MenesYieldToSelector.h [new file with mode: 0644]
Menes/NSObject-MenesYieldToSelector.mm [new file with mode: 0644]
MobileCydia.mm
makefile

diff --git a/Menes/Menes.h b/Menes/Menes.h
new file mode 100644 (file)
index 0000000..8c0540e
--- /dev/null
@@ -0,0 +1,45 @@
+/* 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 Menes_Menes_H
+#define Menes_Menes_H
+
+#include "Menes/NSObject-MenesYieldToSelector.h"
+
+#endif//Menes_Menes_H
diff --git a/Menes/NSObject-MenesYieldToSelector.h b/Menes/NSObject-MenesYieldToSelector.h
new file mode 100644 (file)
index 0000000..e0ebd56
--- /dev/null
@@ -0,0 +1,50 @@
+/* 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 Menes_NSObject_MenesYieldToSelector_H
+#define Menes_NSObject_MenesYieldToSelector_H
+
+#include <Foundation/Foundation.h>
+
+@interface NSObject (MenesYieldToSelector)
+- (id) yieldToSelector:(SEL)selector withObject:(id)object;
+- (id) yieldToSelector:(SEL)selector;
+@end
+
+#endif//Menes_NSObject_MenesYieldToSelector_H
diff --git a/Menes/NSObject-MenesYieldToSelector.mm b/Menes/NSObject-MenesYieldToSelector.mm
new file mode 100644 (file)
index 0000000..5967781
--- /dev/null
@@ -0,0 +1,103 @@
+/* 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.
+*/
+/* }}} */
+
+#include "Menes/NSObject-MenesYieldToSelector.h"
+
+@implementation NSObject (MenesYieldToSelector)
+
+- (void) doNothing {
+}
+
+- (void) _yieldToContext:(NSMutableArray *)context {
+    NSAutoreleasePool *pool([[NSAutoreleasePool alloc] init]);
+
+    SEL selector(reinterpret_cast<SEL>([[context objectAtIndex:0] pointerValue]));
+    id object([[context objectAtIndex:1] nonretainedObjectValue]);
+    volatile bool &stopped(*reinterpret_cast<bool *>([[context objectAtIndex:2] pointerValue]));
+
+    /* XXX: deal with exceptions */
+    id value([self performSelector:selector withObject:object]);
+
+    NSMethodSignature *signature([self methodSignatureForSelector:selector]);
+    [context removeAllObjects];
+    if ([signature methodReturnLength] != 0 && value != nil)
+        [context addObject:value];
+
+    stopped = true;
+
+    [self
+        performSelectorOnMainThread:@selector(doNothing)
+        withObject:nil
+        waitUntilDone:NO
+    ];
+
+    [pool release];
+}
+
+- (id) yieldToSelector:(SEL)selector withObject:(id)object {
+    volatile bool stopped(false);
+
+    NSMutableArray *context([NSMutableArray arrayWithObjects:
+        [NSValue valueWithPointer:selector],
+        [NSValue valueWithNonretainedObject:object],
+        [NSValue valueWithPointer:const_cast<bool *>(&stopped)],
+    nil]);
+
+    NSThread *thread([[[NSThread alloc]
+        initWithTarget:self
+        selector:@selector(_yieldToContext:)
+        object:context
+    ] autorelease]);
+
+    [thread start];
+
+    NSRunLoop *loop([NSRunLoop currentRunLoop]);
+    NSDate *future([NSDate distantFuture]);
+    NSString *mode([loop currentMode] ?: NSDefaultRunLoopMode);
+
+    while (!stopped && [loop runMode:mode beforeDate:future]);
+
+    return [context count] == 0 ? nil : [context objectAtIndex:0];
+}
+
+- (id) yieldToSelector:(SEL)selector {
+    return [self yieldToSelector:selector withObject:nil];
+}
+
+@end
index 048d3f534a6eb99985b13c0504e3e68928d9da0f..b29fd9900c0d005f175c91c64e8fa536f6227325 100644 (file)
@@ -125,6 +125,8 @@ extern "C" {
 #include "CyteKit/PerlCompatibleRegEx.hpp"
 #include "CyteKit/WebScriptObject-Cyte.h"
 
+#include "Menes/Menes.h"
+
 #include "SDURLCache/SDURLCache.h"
 
 #include <CydiaSubstrate/CydiaSubstrate.h>
@@ -269,73 +271,6 @@ static _finline void UpdateExternalStatus(uint64_t newStatus) {
     notify_post("com.saurik.Cydia.status");
 }
 
-/* [NSObject yieldToSelector:(withObject:)] {{{*/
-@interface NSObject (Cydia)
-- (id) yieldToSelector:(SEL)selector withObject:(id)object;
-- (id) yieldToSelector:(SEL)selector;
-@end
-
-@implementation NSObject (Cydia)
-
-- (void) doNothing {
-}
-
-- (void) _yieldToContext:(NSMutableArray *)context { _pooled
-    SEL selector(reinterpret_cast<SEL>([[context objectAtIndex:0] pointerValue]));
-    id object([[context objectAtIndex:1] nonretainedObjectValue]);
-    volatile bool &stopped(*reinterpret_cast<bool *>([[context objectAtIndex:2] pointerValue]));
-
-    /* XXX: deal with exceptions */
-    id value([self performSelector:selector withObject:object]);
-
-    NSMethodSignature *signature([self methodSignatureForSelector:selector]);
-    [context removeAllObjects];
-    if ([signature methodReturnLength] != 0 && value != nil)
-        [context addObject:value];
-
-    stopped = true;
-
-    [self
-        performSelectorOnMainThread:@selector(doNothing)
-        withObject:nil
-        waitUntilDone:NO
-    ];
-}
-
-- (id) yieldToSelector:(SEL)selector withObject:(id)object {
-    volatile bool stopped(false);
-
-    NSMutableArray *context([NSMutableArray arrayWithObjects:
-        [NSValue valueWithPointer:selector],
-        [NSValue valueWithNonretainedObject:object],
-        [NSValue valueWithPointer:const_cast<bool *>(&stopped)],
-    nil]);
-
-    NSThread *thread([[[NSThread alloc]
-        initWithTarget:self
-        selector:@selector(_yieldToContext:)
-        object:context
-    ] autorelease]);
-
-    [thread start];
-
-    NSRunLoop *loop([NSRunLoop currentRunLoop]);
-    NSDate *future([NSDate distantFuture]);
-    NSString *mode([loop currentMode] ?: NSDefaultRunLoopMode);
-
-_trace();
-    while (!stopped && [loop runMode:mode beforeDate:future]);
-_trace();
-
-    return [context count] == 0 ? nil : [context objectAtIndex:0];
-}
-
-- (id) yieldToSelector:(SEL)selector {
-    return [self yieldToSelector:selector withObject:nil];
-}
-
-@end
-/* }}} */
 
 /* Cydia Alert View {{{ */
 @interface CYAlertView : UIAlertView {
index 98a3ef2e3b9acadd5ab3748a9d126e54a5ce7fdf..9baf510fa75dfd02e62da3f867e9e548a4589635 100644 (file)
--- a/makefile
+++ b/makefile
@@ -70,7 +70,7 @@ sysroot:
        @echo 1>&2
        @exit 1
 
-MobileCydia: sysroot MobileCydia.mm CyteKit/*.h CyteKit/*.mm SDURLCache/SDURLCache.h SDURLCache/SDURLCache.m iPhonePrivate.h lookup3.o Cytore.hpp
+MobileCydia: sysroot MobileCydia.mm CyteKit/*.h CyteKit/*.mm Menes/*.h Menes/*.mm SDURLCache/SDURLCache.h SDURLCache/SDURLCache.m iPhonePrivate.h lookup3.o Cytore.hpp
        $(cycc) $(filter %.mm,$^) $(filter %.o,$^) $(foreach m,$(filter %.m,$^),-x objective-c++ $(m)) $(flags) $(link) $(uikit) -DCYDIA_VERSION='"$(version)"'
        ldid -Slaunch.xml $@ || { rm -f $@ && false; }