]> git.saurik.com Git - cydia.git/commitdiff
Copy _H<> into Menes.
authorJay Freeman (saurik) <saurik@saurik.com>
Mon, 7 Mar 2011 14:30:37 +0000 (06:30 -0800)
committerJay Freeman (saurik) <saurik@saurik.com>
Tue, 8 Mar 2011 09:50:03 +0000 (01:50 -0800)
Menes/Menes.h
Menes/ObjectHandle.h [new file with mode: 0644]
MobileCydia.mm

index 99f302978a0ec0b7670f6b47c5c43d7f8ab6bcb3..090367273c7bc531a7f552bfd501c209099f3181 100644 (file)
@@ -40,6 +40,8 @@
 #ifndef Menes_Menes_H
 #define Menes_Menes_H
 
+#include "Menes/ObjectHandle.h"
+
 #include "Menes/invocationWithSelector.h"
 #include "Menes/radixSortWithSelector.h"
 #include "Menes/yieldToSelector.h"
diff --git a/Menes/ObjectHandle.h b/Menes/ObjectHandle.h
new file mode 100644 (file)
index 0000000..fa446a5
--- /dev/null
@@ -0,0 +1,92 @@
+/* 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_ObjectHandle_H
+#define Menes_ObjectHandle_H
+
+template <typename Type_>
+class MenesObjectHandle {
+  private:
+    Type_ *value_;
+
+    _finline void Retain_() {
+        if (value_ != nil)
+            CFRetain((CFTypeRef) value_);
+    }
+
+    _finline void Clear_() {
+        if (value_ != nil)
+            CFRelease((CFTypeRef) value_);
+    }
+
+  public:
+    _finline MenesObjectHandle(const MenesObjectHandle &rhs) :
+        value_(rhs.value_ == nil ? nil : (Type_ *) CFRetain((CFTypeRef) rhs.value_))
+    {
+    }
+
+    _finline MenesObjectHandle(Type_ *value = NULL, bool mended = false) :
+        value_(value)
+    {
+        if (!mended)
+            Retain_();
+    }
+
+    _finline ~MenesObjectHandle() {
+        Clear_();
+    }
+
+    _finline operator Type_ *() const {
+        return value_;
+    }
+
+    _finline MenesObjectHandle &operator =(Type_ *value) {
+        if (value_ != value) {
+            Type_ *old(value_);
+            value_ = value;
+            Retain_();
+            if (old != nil)
+                CFRelease((CFTypeRef) old);
+        } return *this;
+    }
+};
+
+#define _H MenesObjectHandle
+
+#endif//Menes_ObjectHandle_H
index 0a5f640d52bc13251660539c98f9f195b9e4649d..ace39b4b6118f0244872079609cabf1399908f80 100644 (file)
@@ -120,6 +120,7 @@ extern "C" {
 
 #include <Cytore.hpp>
 
+#include <CydiaSubstrate/CydiaSubstrate.h>
 #include "Menes/Menes.h"
 
 #include "CyteKit/PerlCompatibleRegEx.hpp"
@@ -131,8 +132,6 @@ extern "C" {
 #include "Cydia/ProgressEvent.h"
 
 #include "SDURLCache/SDURLCache.h"
-
-#include <CydiaSubstrate/CydiaSubstrate.h>
 /* }}} */
 
 /* Profiler {{{ */