{"action":"created","comment":{"url":"https://api.github.com/repos/runrev/livecode/pulls/comments/24595558","id":24595558,"diff_hunk":"@@ -216,41 +304,1102 @@ bool __MCNumberCopyDescription(__MCNumber *self, MCStringRef& r_string)\n \n hash_t __MCNumberHash(__MCNumber *self)\n {\n-\tif (MCNumberIsInteger(self))\n-\t\treturn MCHashInteger(self -> integer);\n+    switch(self -> flags & kMCNumberFlagRepMask)\n+    {\n+        case kMCNumberFlagSignedIntegerRep:\n+            return MCHashInteger(self -> integer);\n+        case kMCNumberFlagUnsignedIntegerRep:\n+            return MCHashInteger((integer_t)self -> unsigned_integer);\n+        default:\n+            break;\n+    }\n+    \n \treturn MCHashDouble(self -> real);\n }\n \n bool __MCNumberIsEqualTo(__MCNumber *self, __MCNumber *p_other_self)\n {\n-\treturn MCNumberCompareTo(self, p_other_self) == 0;\n+    if ((self -> flags & kMCNumberFlagRepMask) != (p_other_self -> flags & kMCNumberFlagRepMask))\n+        return false;\n+    \n+    switch(self -> flags & kMCNumberFlagRepMask)\n+    {\n+        case kMCNumberFlagSignedIntegerRep:\n+            return self -> integer == p_other_self -> integer;\n+        case kMCNumberFlagUnsignedIntegerRep:\n+            return self -> unsigned_integer == p_other_self -> unsigned_integer;\n+        default:\n+            break;\n+    }\n+    \n+\treturn self -> real == p_other_self -> real;\n }\n \n ////////////////////////////////////////////////////////////////////////////////\n \n-MCNumberRef kMCZero;\n-MCNumberRef kMCOne;\n-MCNumberRef kMCMinusOne;\n+static inline bool __checked_signed_add(int32_t x, int32_t y, int32_t *z)\n+{\n+    if (((y > 0) && (x > (INT32_MAX - y))) ||\n+       ((y < 0) && (x < (INT32_MIN - y))))\n+        return false;\n+    \n+    *z = x + y;\n+\n+    return true;\n+}\n \n-bool __MCNumberInitialize(void)\n+static inline bool __checked_signed_subtract(int32_t x, int32_t y, int32_t *z)\n {\n-    if (!MCNumberCreateWithInteger(0, kMCZero))\n+    if ((y > 0 && x < INT32_MIN + y) ||\n+        (y < 0 && x > INT32_MAX + y))\n         return false;\n     \n-    if (!MCNumberCreateWithInteger(1, kMCOne))\n+    *z = x - y;\n+    \n+    return true;\n+}\n+\n+static inline bool __checked_signed_multiply(int32_t x, int32_t y, int32_t *z)\n+{\n+    int64_t w;\n+    w = (int64_t)x * (int64_t)y;\n+    if ((w > INT32_MAX) || (w < INT32_MIN))\n         return false;\n-\t\t\n-    if (!MCNumberCreateWithInteger(-1, kMCMinusOne))\n+    \n+    *z = (int32_t)w;\n+    \n+    return true;\n+}\n+\n+static inline bool __checked_unsigned_add(uint32_t x, uint32_t y, uint32_t *z)\n+{\n+    if (UINT32_MAX - x < y)\n         return false;\n-\t\t\n+    \n+    *z = x + y;\n+    \n     return true;\n }\n \n-void __MCNumberFinalize(void)\n+static inline bool __checked_unsigned_subtract(uint32_t x, uint32_t y, uint32_t *z)\n+{\n+    if (x < y)\n+        return false;\n+    \n+    *z = x - y;\n+    \n+    return true;\n+}\n+\n+static inline bool __checked_unsigned_multiply(uint32_t x, uint32_t y, uint32_t *z)\n+{\n+    uint64_t w;\n+    w = (uint64_t)x * (uint64_t)y;\n+    if ((w > INT64_MAX) || (w < INT64_MIN))\n+        return false;\n+    \n+    *z = (uint32_t)w;\n+    \n+    return true;\n+}\n+\n+////////////////////////////////////////////////////////////////////////////////\n+\n+// The MCNumber operation implementation is optimized for working with the same\n+// data type. Other codepaths will be slower.\n+\n+enum\n+{\n+    kMCNumberBinaryTypeSignedIntegerBySignedInteger = (kMCNumberFlagSignedIntegerRep << kMCNumberFlagRepBitCount) | kMCNumberFlagSignedIntegerRep,\n+    kMCNumberBinaryTypeSignedIntegerByUnsignedInteger = (kMCNumberFlagSignedIntegerRep << kMCNumberFlagRepBitCount) | kMCNumberFlagUnsignedIntegerRep,\n+    kMCNumberBinaryTypeSignedIntegerByDouble = (kMCNumberFlagSignedIntegerRep << kMCNumberFlagRepBitCount) | kMCNumberFlagDoubleRep,\n+    kMCNumberBinaryTypeUnsignedIntegerBySignedInteger = (kMCNumberFlagUnsignedIntegerRep << kMCNumberFlagRepBitCount) | kMCNumberFlagSignedIntegerRep,\n+    kMCNumberBinaryTypeUnsignedIntegerByUnsignedInteger = (kMCNumberFlagUnsignedIntegerRep << kMCNumberFlagRepBitCount) | kMCNumberFlagUnsignedIntegerRep,\n+    kMCNumberBinaryTypeUnsignedIntegerByDouble = (kMCNumberFlagUnsignedIntegerRep << kMCNumberFlagRepBitCount) | kMCNumberFlagDoubleRep,\n+    kMCNumberBinaryTypeDoubleBySignedInteger = (kMCNumberFlagDoubleRep << kMCNumberFlagRepBitCount) | kMCNumberFlagSignedIntegerRep,\n+    kMCNumberBinaryTypeDoubleByUnsignedInteger = (kMCNumberFlagDoubleRep << kMCNumberFlagRepBitCount) | kMCNumberFlagUnsignedIntegerRep,\n+    kMCNumberBinaryTypeDoubleByDouble = (kMCNumberFlagDoubleRep << kMCNumberFlagRepBitCount) | kMCNumberFlagDoubleRep,\n+};\n+\n+static inline intenum_t __MCNumberComputeBinaryType(MCNumberRef x, MCNumberRef y)\n+{\n+    return ((x -> flags & kMCNumberFlagRepMask) << kMCNumberFlagRepBitCount) | (y -> flags & kMCNumberFlagRepMask);\n+}\n+\n+//////////\n+\n+// This type must be big enough to be able to hold the result of any arithmetic\n+// binary operation performed on a combination of integer_t and uinteger_t.\n+typedef int64_t bigint_t;\n+\n+struct __MCNumberOperationAdd\n+{\n+    static inline double double_by_double(double x, double y)\n+    {\n+        return x + y;\n+    }\n+ \n+    static inline bigint_t bigint_by_bigint(bigint_t x, bigint_t y)\n+    {\n+        return x + y;\n+    }\n+    \n+    static inline bool signed_by_signed(integer_t x, integer_t y, integer_t& r_value)\n+    {\n+        return __checked_signed_add(x, y, &r_value);\n+    }\n+    \n+    static inline bool unsigned_by_unsigned(uinteger_t x, uinteger_t y, uinteger_t& r_value)\n+    {\n+        return __checked_unsigned_add(x, y, &r_value);\n+    }\n+    \n+    static inline bool signed_by_unsigned(integer_t x, uinteger_t y, integer_t& r_value)\n+    {\n+        // As we are guaranteed that y will be in the range (INT_MAX, UINT_MAX]\n+        // if x is positive, we cannot produce an integer_t.\n+        if (x > 0)\n+            return false;\n+        \n+        // if x <= 0 then\n+        //   x + y === -(-x) + y === y - (-x)\n+        uinteger_t z;\n+        if (!__checked_unsigned_subtract(y, (uinteger_t)-x, &z))\n+            return false;\n+        \n+        if (z > INT32_MAX)\n+            return false;\n+        \n+        r_value = (integer_t)z;\n+        \n+        return true;\n+    }\n+    \n+    static inline bool unsigned_by_signed(uinteger_t x, integer_t y, integer_t& r_value)\n+    {\n+        // As we are guaranteed that x will be in the range (INT_MAX, UINT_MAX]\n+        // if y is positive, we cannot produce an integer_t.\n+        if (y > 0)\n+            return false;\n+        \n+        // if y <= 0 then\n+        //   x + y === x + -(-y) === x - (-y)\n+        uinteger_t z;\n+        if (!__checked_unsigned_subtract(x, (uinteger_t)-y, &z))\n+            return false;\n+        \n+        if (z > INT32_MAX)\n+            return false;\n+        \n+        r_value = (integer_t)z;\n+        \n+        return true;\n+    }\n+};\n+\n+struct __MCNumberOperationSubtract\n+{\n+    static inline double double_by_double(double x, double y)\n+    {\n+        return x - y;\n+    }\n+    \n+    static inline bigint_t bigint_by_bigint(bigint_t x, bigint_t y)\n+    {\n+        return x - y;\n+    }\n+    \n+    static inline bool signed_by_signed(integer_t x, integer_t y, integer_t& r_value)\n+    {\n+        return __checked_signed_subtract(x, y, &r_value);\n+    }\n+    \n+    static inline bool unsigned_by_unsigned(uinteger_t x, uinteger_t y, uinteger_t& r_value)\n+    {\n+        return __checked_unsigned_subtract(x, y, &r_value);\n+    }\n+    \n+    static inline bool signed_by_unsigned(integer_t x, uinteger_t y, integer_t& r_value)\n+    {\n+        // As we are guaranteed that y will be in the range (INT_MAX, UINT_MAX]\n+        // if x is negative, we cannot produce an integer_t\n+        if (x < 0)\n+            return false;\n+        \n+        // x - y === -(y - x)\n+        uinteger_t z;\n+        if (!__checked_unsigned_subtract(y, x, &z))\n+            return false;\n+        \n+        if (z > -INT32_MIN)\n+            return false;\n+        \n+        r_value = -z;\n+        \n+        return true;\n+    }\n+    \n+    static inline bool unsigned_by_signed(uinteger_t x, integer_t y, integer_t& r_value)\n+    {\n+        // As we are guaranteed that x will be in the range (INT_MAX, UINT_MAX]\n+        // if y is negative, we cannot produce an integer_t\n+        if (y < 0)\n+            return false;\n+        \n+        // y is now known to be non-negative.\n+        uinteger_t z;\n+        if (!__checked_unsigned_subtract(x, (uinteger_t)y, &z))\n+            return false;\n+        \n+        if (z > INT32_MAX)\n+            return false;\n+        \n+        r_value = (integer_t)z;\n+        \n+        return true;\n+    }\n+};\n+\n+struct __MCNumberOperationMultiply\n+{\n+    static inline double double_by_double(double x, double y)\n+    {\n+        return x * y;\n+    }\n+    \n+    static inline bigint_t bigint_by_bigint(bigint_t x, bigint_t y)\n+    {\n+        return x * y;\n+    }\n+    \n+    static inline bool signed_by_signed(integer_t x, integer_t y, integer_t& r_value)\n+    {\n+        return __checked_signed_multiply(x, y, &r_value);\n+    }\n+    \n+    static inline bool unsigned_by_unsigned(uinteger_t x, uinteger_t y, uinteger_t& r_value)\n+    {\n+        return __checked_unsigned_multiply(x, y, &r_value);\n+    }\n+    \n+    static inline bool signed_by_unsigned(integer_t x, uinteger_t y, integer_t& r_value)\n+    {\n+        // We are guaranteed that y is in the range (INT_MAX, UINT_MAX] so\n+        // x * y will only fit into an integer_t if x is 0.\n+        if (x == 0)\n+        {\n+            r_value = 0;\n+            return true;\n+        }\n+        \n+        return false;\n+    }\n+    \n+    static inline bool unsigned_by_signed(uinteger_t x, integer_t y, integer_t& r_value)\n+    {\n+        // We are guaranteed that y is in the range (INT_MAX, UINT_MAX] so\n+        // x * y will only fit into an integer_t if y is 0.\n+        if (y == 0)\n+        {\n+            r_value = 0;\n+            return true;\n+        }\n+        \n+        return false;\n+    }\n+};\n+\n+// The '/' operator always produces reals (use div or mod for integer ops).","path":"libfoundation/src/foundation-number.cpp","position":544,"original_position":544,"commit_id":"703fbb79112dc598019b1da7406d9ae9ad5bfd25","original_commit_id":"703fbb79112dc598019b1da7406d9ae9ad5bfd25","user":{"login":"peter-b","id":47528,"avatar_url":"https://avatars.githubusercontent.com/u/47528?v=3","gravatar_id":"","url":"https://api.github.com/users/peter-b","html_url":"https://github.com/peter-b","followers_url":"https://api.github.com/users/peter-b/followers","following_url":"https://api.github.com/users/peter-b/following{/other_user}","gists_url":"https://api.github.com/users/peter-b/gists{/gist_id}","starred_url":"https://api.github.com/users/peter-b/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/peter-b/subscriptions","organizations_url":"https://api.github.com/users/peter-b/orgs","repos_url":"https://api.github.com/users/peter-b/repos","events_url":"https://api.github.com/users/peter-b/events{/privacy}","received_events_url":"https://api.github.com/users/peter-b/received_events","type":"User","site_admin":false},"body":"If the author has specified integer inputs and the output is going into integer storage, it doesn't seem unreasonable to infer that `/` should be interpreted as `div`... :question: ","created_at":"2015-02-12T16:42:53Z","updated_at":"2015-02-12T16:42:53Z","html_url":"https://github.com/runrev/livecode/pull/1826#discussion_r24595558","pull_request_url":"https://api.github.com/repos/runrev/livecode/pulls/1826","_links":{"self":{"href":"https://api.github.com/repos/runrev/livecode/pulls/comments/24595558"},"html":{"href":"https://github.com/runrev/livecode/pull/1826#discussion_r24595558"},"pull_request":{"href":"https://api.github.com/repos/runrev/livecode/pulls/1826"}}},"pull_request":{"url":"https://api.github.com/repos/runrev/livecode/pulls/1826","id":29099091,"html_url":"https://github.com/runrev/livecode/pull/1826","diff_url":"https://github.com/runrev/livecode/pull/1826.diff","patch_url":"https://github.com/runrev/livecode/pull/1826.patch","issue_url":"https://api.github.com/repos/runrev/livecode/issues/1826","number":1826,"state":"open","locked":false,"title":"[[ WIP ]] Work on sorting out MCNumberRef.","user":{"login":"runrevmark","id":3985298,"avatar_url":"https://avatars.githubusercontent.com/u/3985298?v=3","gravatar_id":"","url":"https://api.github.com/users/runrevmark","html_url":"https://github.com/runrevmark","followers_url":"https://api.github.com/users/runrevmark/followers","following_url":"https://api.github.com/users/runrevmark/following{/other_user}","gists_url":"https://api.github.com/users/runrevmark/gists{/gist_id}","starred_url":"https://api.github.com/users/runrevmark/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/runrevmark/subscriptions","organizations_url":"https://api.github.com/users/runrevmark/orgs","repos_url":"https://api.github.com/users/runrevmark/repos","events_url":"https://api.github.com/users/runrevmark/events{/privacy}","received_events_url":"https://api.github.com/users/runrevmark/received_events","type":"User","site_admin":false},"body":"","created_at":"2015-02-11T15:22:04Z","updated_at":"2015-02-12T16:42:53Z","closed_at":null,"merged_at":null,"merge_commit_sha":"1b8a11d397f0d7f5138462b950f42887b9f03e96","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/runrev/livecode/pulls/1826/commits","review_comments_url":"https://api.github.com/repos/runrev/livecode/pulls/1826/comments","review_comment_url":"https://api.github.com/repos/runrev/livecode/pulls/comments/{number}","comments_url":"https://api.github.com/repos/runrev/livecode/issues/1826/comments","statuses_url":"https://api.github.com/repos/runrev/livecode/statuses/703fbb79112dc598019b1da7406d9ae9ad5bfd25","head":{"label":"runrevmark:feature-lcb_proper_integers","ref":"feature-lcb_proper_integers","sha":"703fbb79112dc598019b1da7406d9ae9ad5bfd25","user":{"login":"runrevmark","id":3985298,"avatar_url":"https://avatars.githubusercontent.com/u/3985298?v=3","gravatar_id":"","url":"https://api.github.com/users/runrevmark","html_url":"https://github.com/runrevmark","followers_url":"https://api.github.com/users/runrevmark/followers","following_url":"https://api.github.com/users/runrevmark/following{/other_user}","gists_url":"https://api.github.com/users/runrevmark/gists{/gist_id}","starred_url":"https://api.github.com/users/runrevmark/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/runrevmark/subscriptions","organizations_url":"https://api.github.com/users/runrevmark/orgs","repos_url":"https://api.github.com/users/runrevmark/repos","events_url":"https://api.github.com/users/runrevmark/events{/privacy}","received_events_url":"https://api.github.com/users/runrevmark/received_events","type":"User","site_admin":false},"repo":{"id":9373954,"name":"livecode","full_name":"runrevmark/livecode","owner":{"login":"runrevmark","id":3985298,"avatar_url":"https://avatars.githubusercontent.com/u/3985298?v=3","gravatar_id":"","url":"https://api.github.com/users/runrevmark","html_url":"https://github.com/runrevmark","followers_url":"https://api.github.com/users/runrevmark/followers","following_url":"https://api.github.com/users/runrevmark/following{/other_user}","gists_url":"https://api.github.com/users/runrevmark/gists{/gist_id}","starred_url":"https://api.github.com/users/runrevmark/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/runrevmark/subscriptions","organizations_url":"https://api.github.com/users/runrevmark/orgs","repos_url":"https://api.github.com/users/runrevmark/repos","events_url":"https://api.github.com/users/runrevmark/events{/privacy}","received_events_url":"https://api.github.com/users/runrevmark/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/runrevmark/livecode","description":"","fork":true,"url":"https://api.github.com/repos/runrevmark/livecode","forks_url":"https://api.github.com/repos/runrevmark/livecode/forks","keys_url":"https://api.github.com/repos/runrevmark/livecode/keys{/key_id}","collaborators_url":"https://api.github.com/repos/runrevmark/livecode/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/runrevmark/livecode/teams","hooks_url":"https://api.github.com/repos/runrevmark/livecode/hooks","issue_events_url":"https://api.github.com/repos/runrevmark/livecode/issues/events{/number}","events_url":"https://api.github.com/repos/runrevmark/livecode/events","assignees_url":"https://api.github.com/repos/runrevmark/livecode/assignees{/user}","branches_url":"https://api.github.com/repos/runrevmark/livecode/branches{/branch}","tags_url":"https://api.github.com/repos/runrevmark/livecode/tags","blobs_url":"https://api.github.com/repos/runrevmark/livecode/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/runrevmark/livecode/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/runrevmark/livecode/git/refs{/sha}","trees_url":"https://api.github.com/repos/runrevmark/livecode/git/trees{/sha}","statuses_url":"https://api.github.com/repos/runrevmark/livecode/statuses/{sha}","languages_url":"https://api.github.com/repos/runrevmark/livecode/languages","stargazers_url":"https://api.github.com/repos/runrevmark/livecode/stargazers","contributors_url":"https://api.github.com/repos/runrevmark/livecode/contributors","subscribers_url":"https://api.github.com/repos/runrevmark/livecode/subscribers","subscription_url":"https://api.github.com/repos/runrevmark/livecode/subscription","commits_url":"https://api.github.com/repos/runrevmark/livecode/commits{/sha}","git_commits_url":"https://api.github.com/repos/runrevmark/livecode/git/commits{/sha}","comments_url":"https://api.github.com/repos/runrevmark/livecode/comments{/number}","issue_comment_url":"https://api.github.com/repos/runrevmark/livecode/issues/comments/{number}","contents_url":"https://api.github.com/repos/runrevmark/livecode/contents/{+path}","compare_url":"https://api.github.com/repos/runrevmark/livecode/compare/{base}...{head}","merges_url":"https://api.github.com/repos/runrevmark/livecode/merges","archive_url":"https://api.github.com/repos/runrevmark/livecode/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/runrevmark/livecode/downloads","issues_url":"https://api.github.com/repos/runrevmark/livecode/issues{/number}","pulls_url":"https://api.github.com/repos/runrevmark/livecode/pulls{/number}","milestones_url":"https://api.github.com/repos/runrevmark/livecode/milestones{/number}","notifications_url":"https://api.github.com/repos/runrevmark/livecode/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/runrevmark/livecode/labels{/name}","releases_url":"https://api.github.com/repos/runrevmark/livecode/releases{/id}","created_at":"2013-04-11T15:43:35Z","updated_at":"2015-02-10T10:01:50Z","pushed_at":"2015-02-12T15:33:14Z","git_url":"git://github.com/runrevmark/livecode.git","ssh_url":"git@github.com:runrevmark/livecode.git","clone_url":"https://github.com/runrevmark/livecode.git","svn_url":"https://github.com/runrevmark/livecode","homepage":null,"size":59168,"stargazers_count":2,"watchers_count":2,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":2,"default_branch":"master"}},"base":{"label":"runrev:develop","ref":"develop","sha":"22a2fa129e27c314f4e990f526a498b5082d5cfd","user":{"login":"runrev","id":3985749,"avatar_url":"https://avatars.githubusercontent.com/u/3985749?v=3","gravatar_id":"","url":"https://api.github.com/users/runrev","html_url":"https://github.com/runrev","followers_url":"https://api.github.com/users/runrev/followers","following_url":"https://api.github.com/users/runrev/following{/other_user}","gists_url":"https://api.github.com/users/runrev/gists{/gist_id}","starred_url":"https://api.github.com/users/runrev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/runrev/subscriptions","organizations_url":"https://api.github.com/users/runrev/orgs","repos_url":"https://api.github.com/users/runrev/repos","events_url":"https://api.github.com/users/runrev/events{/privacy}","received_events_url":"https://api.github.com/users/runrev/received_events","type":"Organization","site_admin":false},"repo":{"id":9334445,"name":"livecode","full_name":"runrev/livecode","owner":{"login":"runrev","id":3985749,"avatar_url":"https://avatars.githubusercontent.com/u/3985749?v=3","gravatar_id":"","url":"https://api.github.com/users/runrev","html_url":"https://github.com/runrev","followers_url":"https://api.github.com/users/runrev/followers","following_url":"https://api.github.com/users/runrev/following{/other_user}","gists_url":"https://api.github.com/users/runrev/gists{/gist_id}","starred_url":"https://api.github.com/users/runrev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/runrev/subscriptions","organizations_url":"https://api.github.com/users/runrev/orgs","repos_url":"https://api.github.com/users/runrev/repos","events_url":"https://api.github.com/users/runrev/events{/privacy}","received_events_url":"https://api.github.com/users/runrev/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/runrev/livecode","description":"","fork":false,"url":"https://api.github.com/repos/runrev/livecode","forks_url":"https://api.github.com/repos/runrev/livecode/forks","keys_url":"https://api.github.com/repos/runrev/livecode/keys{/key_id}","collaborators_url":"https://api.github.com/repos/runrev/livecode/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/runrev/livecode/teams","hooks_url":"https://api.github.com/repos/runrev/livecode/hooks","issue_events_url":"https://api.github.com/repos/runrev/livecode/issues/events{/number}","events_url":"https://api.github.com/repos/runrev/livecode/events","assignees_url":"https://api.github.com/repos/runrev/livecode/assignees{/user}","branches_url":"https://api.github.com/repos/runrev/livecode/branches{/branch}","tags_url":"https://api.github.com/repos/runrev/livecode/tags","blobs_url":"https://api.github.com/repos/runrev/livecode/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/runrev/livecode/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/runrev/livecode/git/refs{/sha}","trees_url":"https://api.github.com/repos/runrev/livecode/git/trees{/sha}","statuses_url":"https://api.github.com/repos/runrev/livecode/statuses/{sha}","languages_url":"https://api.github.com/repos/runrev/livecode/languages","stargazers_url":"https://api.github.com/repos/runrev/livecode/stargazers","contributors_url":"https://api.github.com/repos/runrev/livecode/contributors","subscribers_url":"https://api.github.com/repos/runrev/livecode/subscribers","subscription_url":"https://api.github.com/repos/runrev/livecode/subscription","commits_url":"https://api.github.com/repos/runrev/livecode/commits{/sha}","git_commits_url":"https://api.github.com/repos/runrev/livecode/git/commits{/sha}","comments_url":"https://api.github.com/repos/runrev/livecode/comments{/number}","issue_comment_url":"https://api.github.com/repos/runrev/livecode/issues/comments/{number}","contents_url":"https://api.github.com/repos/runrev/livecode/contents/{+path}","compare_url":"https://api.github.com/repos/runrev/livecode/compare/{base}...{head}","merges_url":"https://api.github.com/repos/runrev/livecode/merges","archive_url":"https://api.github.com/repos/runrev/livecode/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/runrev/livecode/downloads","issues_url":"https://api.github.com/repos/runrev/livecode/issues{/number}","pulls_url":"https://api.github.com/repos/runrev/livecode/pulls{/number}","milestones_url":"https://api.github.com/repos/runrev/livecode/milestones{/number}","notifications_url":"https://api.github.com/repos/runrev/livecode/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/runrev/livecode/labels{/name}","releases_url":"https://api.github.com/repos/runrev/livecode/releases{/id}","created_at":"2013-04-10T00:15:57Z","updated_at":"2015-02-12T16:12:13Z","pushed_at":"2015-02-12T16:12:13Z","git_url":"git://github.com/runrev/livecode.git","ssh_url":"git@github.com:runrev/livecode.git","clone_url":"https://github.com/runrev/livecode.git","svn_url":"https://github.com/runrev/livecode","homepage":null,"size":120163,"stargazers_count":77,"watchers_count":77,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":68,"mirror_url":null,"open_issues_count":67,"forks":68,"open_issues":67,"watchers":77,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/runrev/livecode/pulls/1826"},"html":{"href":"https://github.com/runrev/livecode/pull/1826"},"issue":{"href":"https://api.github.com/repos/runrev/livecode/issues/1826"},"comments":{"href":"https://api.github.com/repos/runrev/livecode/issues/1826/comments"},"review_comments":{"href":"https://api.github.com/repos/runrev/livecode/pulls/1826/comments"},"review_comment":{"href":"https://api.github.com/repos/runrev/livecode/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/runrev/livecode/pulls/1826/commits"},"statuses":{"href":"https://api.github.com/repos/runrev/livecode/statuses/703fbb79112dc598019b1da7406d9ae9ad5bfd25"}}}}