]> git.saurik.com Git - cydia.git/commitdiff
Automate set{Delegate,DataSource}:nil using _H<>.
authorJay Freeman (saurik) <saurik@saurik.com>
Mon, 7 Mar 2011 14:53:52 +0000 (06:53 -0800)
committerJay Freeman (saurik) <saurik@saurik.com>
Tue, 8 Mar 2011 09:50:04 +0000 (01:50 -0800)
CyteKit/TableViewCell.h
CyteKit/WebViewController.h
CyteKit/WebViewController.mm
Menes/ObjectHandle.h
MobileCydia.mm

index 27fd6503a8c91626be94e3cd722c69037392706b..719b16bfcbe2aeae8050bf262f942dbf2f31fb4b 100644 (file)
@@ -44,7 +44,7 @@
 
 #include <UIKit/UIKit.h>
 
-#include <CydiaSubstrate/CydiaSubstrate.h>
+#include <Menes/ObjectHandle.h>
 
 @protocol CyteTableViewCellDelegate
 - (void) drawContentRect:(CGRect)rect;
@@ -57,7 +57,7 @@
 @end
 
 @interface CYTableViewCell : UITableViewCell {
-    _H<CyteTableViewCellContentView> content_;
+    _H<CyteTableViewCellContentView, 1> content_;
     bool highlighted_;
 }
 
index 0954b38e69bb4acc79cfb6741211cedfbc103841..76bdd82da9859993b18dcbc5da1a870fd1482800 100644 (file)
@@ -46,7 +46,7 @@
 #include <UIKit/UIKit.h>
 #include <MessageUI/MessageUI.h>
 
-#include <CydiaSubstrate/CydiaSubstrate.h>
+#include <Menes/ObjectHandle.h>
 
 @class IndirectDelegate;
 
     MFMailComposeViewControllerDelegate,
     UIWebViewDelegate
 > {
-    _transient CyteWebView *webview_;
+    _H<CyteWebView, 1> webview_;
     _transient UIScrollView *scroller_;
 
     _H<UIActivityIndicatorView> indicator_;
-    _H<IndirectDelegate> indirect_;
+    _H<IndirectDelegate, 1> indirect_;
     _H<NSURLAuthenticationChallenge> challenge_;
 
     bool error_;
index 03f0b95b2ab3acbf66a8c35a4a68797aa9963e58..ca2f89ad771e328823569a4713e6f72d730813e9 100644 (file)
@@ -25,6 +25,9 @@ extern NSString * const kCAFilterNearest;
 #include <WebKit/DOMHTMLBodyElement.h>
 #include <WebKit/DOMRGBColor.h>
 
+#include <dlfcn.h>
+#include <objc/runtime.h>
+
 #define ForSaurik 0
 #define DefaultTimeout_ 120.0
 
@@ -138,9 +141,6 @@ float CYScrollViewDecelerationRateNormal;
     NSLog(@"[CyteWebViewController dealloc]");
 #endif
 
-    [webview_ setDelegate:nil];
-    [indirect_ setDelegate:nil];
-
     if ([loading_ count] != 0)
         [delegate_ releaseNetworkActivityIndicator];
 
@@ -919,7 +919,7 @@ float CYScrollViewDecelerationRateNormal;
 }
 
 - (void) dispatchEvent:(NSString *)event {
-    [webview_ dispatchEvent:event];
+    [(CyteWebView *) webview_ dispatchEvent:event];
 }
 
 - (bool) hidesNavigationBar {
index 716e6f44615d2aa7ac92215339ac953ec73fb1d1..cd01509cdbde2dbe31caddab4585351d3b054bcd 100644 (file)
 #ifndef Menes_ObjectHandle_H
 #define Menes_ObjectHandle_H
 
+template <typename Type_, unsigned Delegate_>
+struct MenesObjectHandle_;
+
 template <typename Type_>
+struct MenesObjectHandle_<Type_, 0> {
+    static _finline void Execute(Type_ *value) {
+    }
+};
+
+template <typename Type_>
+struct MenesObjectHandle_<Type_, 1> {
+    static _finline void Execute(Type_ *value) {
+        [value setDelegate:nil];
+    }
+};
+
+template <typename Type_>
+struct MenesObjectHandle_<Type_, 2> {
+    static _finline void Execute(Type_ *value) {
+        [value setDelegate:nil];
+        [value setDataSource:nil];
+    }
+};
+
+template <typename Type_, unsigned Delegate_ = 0>
 class MenesObjectHandle {
   private:
     Type_ *value_;
@@ -51,8 +75,10 @@ class MenesObjectHandle {
     }
 
     _finline void Clear_() {
-        if (value_ != nil)
+        if (value_ != nil) {
+            MenesObjectHandle_<Type_, Delegate_>::Execute(value_);
             CFRelease((CFTypeRef) value_);
+        }
     }
 
   public:
index 92bce95c33f2c9c48050b472ab7fd19e67d4e7f8..4e0343a040c98e7d7ae1187f3d23100fb443b659 100644 (file)
@@ -4896,7 +4896,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
     ProgressDelegate
 > {
     _transient Database *database_;
-    _H<CydiaProgressData> progress_;
+    _H<CydiaProgressData, 1> progress_;
     unsigned cancel_;
 }
 
@@ -4913,7 +4913,6 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
 
 - (void) dealloc {
     [database_ setProgressDelegate:nil];
-    [progress_ setDelegate:nil];
     [super dealloc];
 }
 
@@ -5511,7 +5510,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
     _H<Package> package_;
     _H<NSString> name_;
     _H<NSMutableArray> files_;
-    _H<UITableView> list_;
+    _H<UITableView, 2> list_;
 }
 
 - (id) initWithDatabase:(Database *)database;
@@ -5521,12 +5520,6 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
 
 @implementation FileTable
 
-- (void) dealloc {
-    [(UITableView *) list_ setDataSource:nil];
-    [list_ setDelegate:nil];
-    [super dealloc];
-}
-
 - (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
     return files_ == nil ? 0 : [files_ count];
 }
@@ -5803,7 +5796,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
     unsigned era_;
     _H<NSArray> packages_;
     _H<NSMutableArray> sections_;
-    _H<UITableView> list_;
+    _H<UITableView, 2> list_;
     _H<NSMutableArray> index_;
     _H<NSMutableDictionary> indices_;
     _H<NSString> title_;
@@ -5819,12 +5812,6 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
 
 @implementation PackageListController
 
-- (void) dealloc {
-    [list_ setDataSource:nil];
-    [list_ setDelegate:nil];
-    [super dealloc];
-}
-
 - (bool) isSummarized {
     return false;
 }
@@ -6467,7 +6454,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
     ProgressDelegate
 > {
     _transient Database *database_;
-    _H<RefreshBar> refreshbar_;
+    _H<RefreshBar, 1> refreshbar_;
 
     bool dropped_;
     bool updating_;
@@ -6546,7 +6533,6 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
 }
 
 - (void) dealloc {
-    [refreshbar_ setDelegate:nil];
     [[NSNotificationCenter defaultCenter] removeObserver:self];
 
     [super dealloc];
@@ -6932,7 +6918,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
     _transient Database *database_;
     _H<NSMutableArray> sections_;
     _H<NSMutableArray> filtered_;
-    _H<UITableView> list_;
+    _H<UITableView, 2> list_;
 }
 
 - (id) initWithDatabase:(Database *)database;
@@ -7134,7 +7120,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
     unsigned era_;
     _H<NSArray> packages_;
     _H<NSMutableArray> sections_;
-    _H<UITableView> list_;
+    _H<UITableView, 2> list_;
     unsigned upgrades_;
 }
 
@@ -7365,7 +7351,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
 @interface SearchController : FilteredPackageListController <
     UISearchBarDelegate
 > {
-    _H<UISearchBar> search_;
+    _H<UISearchBar, 1> search_;
     BOOL searchloaded_;
 }
 
@@ -7376,11 +7362,6 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
 
 @implementation SearchController
 
-- (void) dealloc {
-    [search_ setDelegate:nil];
-    [super dealloc];
-}
-
 - (NSURL *) navigationURL {
     if ([search_ text] == nil || [[search_ text] isEqualToString:@""])
         return [NSURL URLWithString:@"cydia://search"];
@@ -7491,7 +7472,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
     _transient Database *database_;
     _H<NSString> name_;
     _H<Package> package_;
-    _H<UITableView> table_;
+    _H<UITableView, 2> table_;
     _H<UISwitch> subscribedSwitch_;
     _H<UISwitch> ignoredSwitch_;
     _H<UITableViewCell> subscribedCell_;
@@ -7677,10 +7658,6 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
 
 @implementation InstalledController
 
-- (void) dealloc {
-    [super dealloc];
-}
-
 - (NSURL *) navigationURL {
     return [NSURL URLWithString:@"cydia://installed"];
 }
@@ -7845,7 +7822,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
     UITableViewDelegate
 > {
     _transient Database *database_;
-    _H<UITableView> list_;
+    _H<UITableView, 2> list_;
     _H<NSMutableArray> sources_;
     int offset_;
 
@@ -8286,7 +8263,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
     _transient Database *database_;
     // XXX: ok, "roledelegate_"?...
     _transient id roledelegate_;
-    _H<UITableView> table_;
+    _H<UITableView, 2> table_;
     _H<UISegmentedControl> segment_;
     _H<UIView> container_;
 }