]> git.saurik.com Git - cycript.git/commitdiff
Fixed the #.prop case, made invalid bridging throw instead of assert, and added a...
authorJay Freeman (saurik) <saurik@saurik.com>
Sun, 15 Nov 2009 20:26:16 +0000 (20:26 +0000)
committerJay Freeman (saurik) <saurik@saurik.com>
Sun, 15 Nov 2009 20:26:16 +0000 (20:26 +0000)
Bridge.def
Library.cpp
Output.cpp
Parser.hpp
todo.txt

index 1332e447809b9db5704f0e64dcd91699b2cb4cc5..a5852b937cdd49c2cde30b27bc2fc3335ae1de9f 100644 (file)
@@ -11,6 +11,7 @@ T short s
 T int i
 T long l
 
 T int i
 T long l
 
+T byte C
 T uint I
 T ulong L
 T ushort S
 T uint I
 T ulong L
 T ushort S
@@ -21,7 +22,13 @@ T float f
 T double d
 
 T Boolean B
 T double d
 
 T Boolean B
+
+T SInt8 {char}
+T UInt8 {byte}
+T SInt16 {short}
+T UInt16 {ushort}
 T SInt32 {int}
 T SInt32 {int}
+T UInt32 {uint}
 
 S CGPoint "x"f"y"f
 S CGRect "origin"{CGPoint}"size"{CGSize}
 
 S CGPoint "x"f"y"f
 S CGRect "origin"{CGPoint}"size"{CGSize}
@@ -441,6 +448,17 @@ V UIWebViewScalesToFitScale f
 
 f AddressBook
 
 
 f AddressBook
 
+# Private
+
+F CPPhoneNumberCopyNetworkCountryCode @
+F ABCGetSharedAddressBook @
+F ABCFindPersonMatchingPhoneNumberWithCountry @@@@^i^i
+F ABCRecordCopyCompositeName @@
+F ABCFindPersonMatchingPhoneNumber @@@^i^i
+F ABCCopyLocalizedPropertyOrLabel @i
+
+# Public
+
 F ABAddressBookAddRecord B@@^@
 F ABAddressBookCopyArrayOfAllGroups @@
 F ABAddressBookCopyArrayOfAllPeople @@
 F ABAddressBookAddRecord B@@^@
 F ABAddressBookCopyArrayOfAllGroups @@
 F ABAddressBookCopyArrayOfAllPeople @@
@@ -603,6 +621,15 @@ V kABWorkLabel @
 V kABHomeLabel @
 V kABOtherLabel @
 
 V kABHomeLabel @
 V kABOtherLabel @
 
+f Calendar
+
+F CalDatabaseCopyEventOccurrencesInDateRange {CFArrayRef}^{CalDatabase}^{CalFilter}{CFGregorianDate}{CFGregorianDate}{CFTimeZoneRef}
+F CalFilterCreateWithDatabase ^{CalFilter}^{CalDatabase}
+
+F CalEventOccurrenceGetEvent @@
+F CalEventCopySummary @@
+F CalEventOccurrenceGetDate I@
+
 f CoreAnimation
 
 S CATransform3D "m11"{CGFloat}"m12"{CGFloat}"m13"{CGFloat}"m14"{CGFloat}"m21"{CGFloat}"m22"{CGFloat}"m23"{CGFloat}"m24"{CGFloat}"m31"{CGFloat}"m32"{CGFloat}"m33"{CGFloat}"m34"{CGFloat}"m41"{CGFloat}"m42"{CGFloat}"m43"{CGFloat}"m44"{CGFloat}
 f CoreAnimation
 
 S CATransform3D "m11"{CGFloat}"m12"{CGFloat}"m13"{CGFloat}"m14"{CGFloat}"m21"{CGFloat}"m22"{CGFloat}"m23"{CGFloat}"m24"{CGFloat}"m31"{CGFloat}"m32"{CGFloat}"m33"{CGFloat}"m34"{CGFloat}"m41"{CGFloat}"m42"{CGFloat}"m43"{CGFloat}"m44"{CGFloat}
@@ -783,7 +810,15 @@ F CFRangeMake {CFRange}{CFIndex}{CFIndex}
 
 # Time Utilities
 
 
 # Time Utilities
 
+F CFAbsoluteTimeAddGregorianUnits {CFAbsoluteTime}{CFAbsoluteTime}{CFTimeZoneRef}{CFGregorianUnits}
 F CFAbsoluteTimeGetCurrent {CFAbsoluteTime}
 F CFAbsoluteTimeGetCurrent {CFAbsoluteTime}
+F CFAbsoluteTimeGetDayOfWeek {SInt32}{CFAbsoluteTime}{CFTimeZoneRef}
+F CFAbsoluteTimeGetDayOfYear {SInt32}{CFAbsoluteTime}{CFTimeZoneRef}
+F CFAbsoluteTimeGetDifferenceAsGregorianUnits {CFGregorianUnits}{CFAbsoluteTime}{CFAbsoluteTime}{CFTimeZoneRef}{CFOptionFlags}
+F CFAbsoluteTimeGetGregorianDate {CFGregorianDate}{CFAbsoluteTime}{CFTimeZoneRef}
+F CFAbsoluteTimeGetWeekOfYear {SInt32}{CFAbsoluteTime}{CFTimeZoneRef}
+F CFGregorianDateGetAbsoluteTime {CFAbsoluteTime}{CFGregorianDate}{CFTimeZoneRef}
+F CFGregorianDateIsValid {Boolean}{CFGregorianDate}{CFOptionFlags}
 
 T CFAbsoluteTime {CFTimeInterval}
 S CFGregorianDate "year"{SInt32}"month"{SInt8}"day"{SInt8}"hour"{SInt8}"minute"{SInt8}"second"{double}
 
 T CFAbsoluteTime {CFTimeInterval}
 S CFGregorianDate "year"{SInt32}"month"{SInt8}"day"{SInt8}"hour"{SInt8}"minute"{SInt8}"second"{double}
@@ -1132,6 +1167,43 @@ T CFRunLoopTimerRef @
 
 T CFStringRef @
 
 
 T CFStringRef @
 
+# CFTimeZone
+
+F CFTimeZoneCreateWithName {CFTimeZoneRef}{CFAllocatorRef}{CFStringRef}{Boolean}
+F CFTimeZoneCreateWithTimeIntervalFromGMT {CFTimeZoneRef}{CFAllocatorRef}{CFTimeInterval}
+F CFTimeZoneCreate {CFTimeZoneRef}{CFAllocatorRef}{CFStringRef}{CFDataRef}
+
+F CFTimeZoneCopyAbbreviationDictionary {CFDictionaryRef}
+F CFTimeZoneCopyAbbreviation {CFStringRef}{CFTimeZoneRef}{CFAbsoluteTime}
+F CFTimeZoneCopyDefault {CFTimeZoneRef}
+F CFTimeZoneCopySystem {CFTimeZoneRef}
+F CFTimeZoneSetDefault v{CFTimeZoneRef}
+F CFTimeZoneCopyKnownNames {CFArrayRef}
+F CFTimeZoneResetSystem v
+F CFTimeZoneSetAbbreviationDictionary v{CFDictionaryRef}
+
+F CFTimeZoneGetName {CFStringRef}{CFTimeZoneRef}
+F CFTimeZoneCopyLocalizedName {CFStringRef}{CFTimeZoneRef}{CFTimeZoneNameStyle}{CFLocaleRef}
+F CFTimeZoneGetSecondsFromGMT {CFTimeInterval}{CFTimeZoneRef}{CFAbsoluteTime}
+F CFTimeZoneGetData {CFDataRef}{CFTimeZoneRef}
+
+F CFTimeZoneIsDaylightSavingTime {Boolean}{CFTimeZoneRef}{CFAbsoluteTime}
+F CFTimeZoneGetDaylightSavingTimeOffset {CFTimeInterval}{CFTimeZoneRef}{CFAbsoluteTime}
+F CFTimeZoneGetNextDaylightSavingTimeTransition {CFAbsoluteTime}{CFTimeZoneRef}{CFAbsoluteTime}
+
+F CFTimeZoneGetTypeID {CFTypeID}
+
+T CFTimeZoneNameStyle {CFIndex}
+T CFTimeZoneRef @
+# CFTimeZoneRef ^r{__CFTimeZoneRef}
+
+V kCFTimeZoneSystemTimeZoneDidChangeNotification {CFStringRef}
+
+C kCFTimeZoneNameStyleStandard 0
+C kCFTimeZoneNameStyleShortStandard 1
+C kCFTimeZoneNameStyleDaylightSaving 2
+C kCFTimeZoneNameStyleShortDaylightSaving 3
+
 # CFType
 
 F CFGetAllocator {CFAllocatorRef}{CFTypeRef}
 # CFType
 
 F CFGetAllocator {CFAllocatorRef}{CFTypeRef}
@@ -1280,9 +1352,6 @@ f CoreTelephony
 
 # most of this is garbage
 
 
 # most of this is garbage
 
-F _CTCallCopyAllMissedCallsAfterRowID {CFArrayRef}{CFAllocatorRef}l
-F _CTCallCopyAllMissedCallsSince {CFArrayRef}{CFAllocatorRef}{CFDateRef}
-
 T CTCallRef @
 
 # CTCallAddressBlocked
 T CTCallRef @
 
 # CTCallAddressBlocked
@@ -1294,8 +1363,8 @@ T CTCallRef @
 F CTCallCopyAddress {CFStringRef}{CFAllocatorRef}{CTCallRef}
 # CTCallCopyAllCallsSince
 # CTCallCopyAllIncomingCallsSince
 F CTCallCopyAddress {CFStringRef}{CFAllocatorRef}{CTCallRef}
 # CTCallCopyAllCallsSince
 # CTCallCopyAllIncomingCallsSince
-# CTCallCopyAllMissedCallsAfterRowID
-# CTCallCopyAllMissedCallsSince
+F CTCallCopyAllMissedCallsAfterRowID {CFArrayRef}{CFAllocatorRef}l
+F CTCallCopyAllMissedCallsSince {CFArrayRef}{CFAllocatorRef}{CFDateRef}
 # CTCallCopyAllOutgoingCallsSince
 # CTCallCopyName
 # CTCallCopyUUID
 # CTCallCopyAllOutgoingCallsSince
 # CTCallCopyName
 # CTCallCopyUUID
index f95cf9e805bde5df9d1ca4db1aaaa2c656ff7d6e..48062d41627b73f22eb936fa8974e4233c1d4db0 100644 (file)
@@ -1194,7 +1194,7 @@ static JSValueRef All_getProperty(JSContextRef context, JSObjectRef object, JSSt
 
     switch (mode) {
         default:
 
     switch (mode) {
         default:
-            _assert(false);
+            CYThrow("invalid mode from bridge table: %d", mode);
         case -1:
             return NULL;
 
         case -1:
             return NULL;
 
index 6a60504583d7d29aecf7a24bdd92fc7adc39c964..9ffc4f67037e790067db5ce971bd00d503f0eb94 100644 (file)
@@ -59,7 +59,7 @@ _finline CYFlags &operator |=(CYFlags &lhs, CYFlags rhs) {
 }
 
 _finline CYFlags CYLeft(CYFlags flags) {
 }
 
 _finline CYFlags CYLeft(CYFlags flags) {
-    return flags & ~CYNoDangle;
+    return flags & ~(CYNoDangle | CYNoInteger);
 }
 
 _finline CYFlags CYRight(CYFlags flags) {
 }
 
 _finline CYFlags CYRight(CYFlags flags) {
@@ -513,7 +513,11 @@ void CYNull::Output(CYOutput &out, CYFlags flags) const {
 void CYNumber::Output(CYOutput &out, CYFlags flags) const {
     std::ostringstream str;
     CYNumerify(str, Value());
 void CYNumber::Output(CYOutput &out, CYFlags flags) const {
     std::ostringstream str;
     CYNumerify(str, Value());
-    out << str.str().c_str();
+    std::string value(str.str());
+    out << value.c_str();
+    // XXX: this should probably also handle hex conversions and exponents
+    if ((flags & CYNoInteger) != 0 && value.find('.') == std::string::npos)
+        out << '.';
 }
 
 void CYNumber::PropertyName(CYOutput &out) const {
 }
 
 void CYNumber::PropertyName(CYOutput &out) const {
index bac656dabc5e404dbf19ef1b3251133c4962156b..a76faaa0c1df4398eb34c3164bb5eda0c376a696 100644 (file)
@@ -141,6 +141,7 @@ enum CYFlags {
     CYNoCall =       (1 << 3),
     CYNoRightHand =  (1 << 4),
     CYNoDangle =     (1 << 5),
     CYNoCall =       (1 << 3),
     CYNoRightHand =  (1 << 4),
     CYNoDangle =     (1 << 5),
+    CYNoInteger =    (1 << 6),
     CYNoBF =         (CYNoBrace | CYNoFunction),
 };
 
     CYNoBF =         (CYNoBrace | CYNoFunction),
 };
 
index 298b5179825ab782a71b5276f3ac0d65c6ea491e..14c0fb72d48e60912d26b389b5c08ecd486ea448 100644 (file)
--- a/todo.txt
+++ b/todo.txt
@@ -23,3 +23,4 @@ figure out what to do about global context refs: I really really want to retain
 the concept of NULL pooling is entirely incorrect and sad... bad... evil... need to work on this... really
 NSArray's .toString() and .toLocaleString() fail hard, as Array.prototype.to*String are Array-specific
 (4).toString() is legal, but I'm stripping the ()'s somehow in the serializer
 the concept of NULL pooling is entirely incorrect and sad... bad... evil... need to work on this... really
 NSArray's .toString() and .toLocaleString() fail hard, as Array.prototype.to*String are Array-specific
 (4).toString() is legal, but I'm stripping the ()'s somehow in the serializer
+applyOnMainThread, when done at console, loops the cyonifier