Revert "begin to remove SkLONGLONG and wean Skia off of Sk64"

This reverts commit 784890196fdab96289f9389db43aca01f35db0f9.

Revert "use LL suffix for 64bit literal"

This reverts commit 9634295aff9bffd7a3875a0ca4a9b1a27d0793fc.

BUG=

Review URL: https://codereview.chromium.org/116543009

git-svn-id: http://skia.googlecode.com/svn/trunk@12790 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/include/config/SkUserConfig.h b/include/config/SkUserConfig.h
index ec791d9..534c79d 100644
--- a/include/config/SkUserConfig.h
+++ b/include/config/SkUserConfig.h
@@ -88,6 +88,12 @@
 //#define SK_UINT8_BITFIELD_LENDIAN
 
 
+/*  Some compilers don't support long long for 64bit integers. If yours does
+    not, define this to the appropriate type.
+ */
+//#define SkLONGLONG int64_t
+
+
 /*  To write debug messages to a console, skia will call SkDebugf(...) following
     printf conventions (e.g. const char* format, ...). If you want to redirect
     this to something other than printf, define yours here
diff --git a/include/core/Sk64.h b/include/core/Sk64.h
index 0097449..eba8b68 100644
--- a/include/core/Sk64.h
+++ b/include/core/Sk64.h
@@ -17,17 +17,9 @@
     Sk64 is a 64-bit math package that does not require long long support from the compiler.
 */
 struct SK_API Sk64 {
-private:
     int32_t  fHi;   //!< the high 32 bits of the number (including sign)
     uint32_t fLo;   //!< the low 32 bits of the number
 
-public:
-    int32_t hi() const { return fHi; }
-    uint32_t lo() const { return fLo; }
-
-    int64_t as64() const { return ((int64_t)fHi << 32) | fLo; }
-    int64_t getLongLong() const { return this->as64(); }
-
     /** Returns non-zero if the Sk64 can be represented as a signed 32 bit integer
     */
     SkBool is32() const { return fHi == ((int32_t)fLo >> 31); }
@@ -177,8 +169,9 @@
         return a.fHi > b.fHi || (a.fHi == b.fHi && a.fLo >= b.fLo);
     }
 
-    // Private to unittests. Parameter is (skiatest::Reporter*)
-    static void UnitTestWithReporter(void* skiatest_reporter);
+#ifdef SkLONGLONG
+    SkLONGLONG getLongLong() const;
+#endif
 };
 
 #endif
diff --git a/include/core/SkFixed.h b/include/core/SkFixed.h
index 42a9eec..580d94b 100644
--- a/include/core/SkFixed.h
+++ b/include/core/SkFixed.h
@@ -118,11 +118,11 @@
 #ifdef SkLONGLONG
     inline SkFixed SkFixedMul_longlong(SkFixed a, SkFixed b)
     {
-        return (SkFixed)((int64_t)a * b >> 16);
+        return (SkFixed)((SkLONGLONG)a * b >> 16);
     }
     inline SkFixed SkFixedSquare_longlong(SkFixed value)
     {
-        return (SkFixed)((int64_t)value * value >> 16);
+        return (SkFixed)((SkLONGLONG)value * value >> 16);
     }
     #define SkFixedMul(a,b)     SkFixedMul_longlong(a,b)
     #define SkFixedSquare(a)    SkFixedSquare_longlong(a)
diff --git a/include/core/SkPostConfig.h b/include/core/SkPostConfig.h
index 2156519..323d1e8 100644
--- a/include/core/SkPostConfig.h
+++ b/include/core/SkPostConfig.h
@@ -227,13 +227,13 @@
 
 //////////////////////////////////////////////////////////////////////
 
-// TODO: rebaseline as needed so we can remove this flag entirely.
-//  - all platforms have int64_t now
-//  - we have slightly different fixed math results because of this check
-//    since we don't define this for linux/android
 #if defined(SK_BUILD_FOR_WIN32) || defined(SK_BUILD_FOR_MAC)
 #  ifndef SkLONGLONG
-#    define SkLONGLONG int64_t
+#    ifdef SK_BUILD_FOR_WIN32
+#      define SkLONGLONG __int64
+#    else
+#      define SkLONGLONG long long
+#    endif
 #  endif
 #endif
 
diff --git a/include/utils/SkCamera.h b/include/utils/SkCamera.h
index 2e5e342..ad74c81 100644
--- a/include/utils/SkCamera.h
+++ b/include/utils/SkCamera.h
@@ -1,3 +1,4 @@
+
 /*
  * Copyright 2006 The Android Open Source Project
  *
@@ -5,11 +6,15 @@
  * found in the LICENSE file.
  */
 
+
+
+
 //  Inspired by Rob Johnson's most excellent QuickDraw GX sample code
 
 #ifndef SkCamera_DEFINED
 #define SkCamera_DEFINED
 
+#include "Sk64.h"
 #include "SkMatrix.h"
 
 class SkCanvas;
diff --git a/src/core/Sk64.cpp b/src/core/Sk64.cpp
index 0b5b3df..1fb0454 100644
--- a/src/core/Sk64.cpp
+++ b/src/core/Sk64.cpp
@@ -285,3 +285,11 @@
     return root;
 }
 
+#ifdef SkLONGLONG
+    SkLONGLONG Sk64::getLongLong() const
+    {
+        SkLONGLONG value = fHi;
+        value <<= 32;
+        return value | fLo;
+    }
+#endif
diff --git a/src/core/SkMath.cpp b/src/core/SkMath.cpp
index 72df5da..1d356c7 100644
--- a/src/core/SkMath.cpp
+++ b/src/core/SkMath.cpp
@@ -55,7 +55,7 @@
 
 SkFixed SkFixedMul_portable(SkFixed a, SkFixed b) {
 #if defined(SkLONGLONG)
-    return static_cast<SkFixed>((int64_t)a * b >> 16);
+    return static_cast<SkFixed>((SkLONGLONG)a * b >> 16);
 #else
     int sa = SkExtractSign(a);
     int sb = SkExtractSign(b);
diff --git a/tests/BitmapCopyTest.cpp b/tests/BitmapCopyTest.cpp
index 7a1d9ac..0df8c06 100644
--- a/tests/BitmapCopyTest.cpp
+++ b/tests/BitmapCopyTest.cpp
@@ -358,22 +358,22 @@
 
                 case SkBitmap::kA8_Config:
                 case SkBitmap::kIndex8_Config:
-                    if (safeSize.as64() != 0x2386F26FC10000LL) {
+                    if (safeSize.fHi != 0x2386F2 ||
+                        safeSize.fLo != 0x6FC10000)
                         sizeFail = true;
-                    }
                     break;
 
                 case SkBitmap::kRGB_565_Config:
                 case SkBitmap::kARGB_4444_Config:
-                    if (safeSize.as64() != 0x470DE4DF820000LL) {
+                    if (safeSize.fHi != 0x470DE4 ||
+                        safeSize.fLo != 0xDF820000)
                         sizeFail = true;
-                    }
                     break;
 
                 case SkBitmap::kARGB_8888_Config:
-                    if (safeSize.as64() != 0x8E1BC9BF040000LL) {
+                    if (safeSize.fHi != 0x8E1BC9 ||
+                        safeSize.fLo != 0xBF040000)
                         sizeFail = true;
-                    }
                     break;
 
                 default:
diff --git a/tests/MathTest.cpp b/tests/MathTest.cpp
index 3efbbcb..1b8954a 100644
--- a/tests/MathTest.cpp
+++ b/tests/MathTest.cpp
@@ -188,6 +188,7 @@
     }
 }
 
+#if defined(SkLONGLONG)
 static int symmetric_fixmul(int a, int b) {
     int sa = SkExtractSign(a);
     int sb = SkExtractSign(b);
@@ -195,9 +196,19 @@
     a = SkApplySign(a, sa);
     b = SkApplySign(b, sb);
 
-    int c = (int)(((int64_t)a * b) >> 16);
+#if 1
+    int c = (int)(((SkLONGLONG)a * b) >> 16);
+
     return SkApplySign(c, sa ^ sb);
+#else
+    SkLONGLONG ab = (SkLONGLONG)a * b;
+    if (sa ^ sb) {
+        ab = -ab;
+    }
+    return ab >> 16;
+#endif
 }
+#endif
 
 static void check_length(skiatest::Reporter* reporter,
                          const SkPoint& p, SkScalar targetLen) {
@@ -481,11 +492,12 @@
     unittest_fastfloat(reporter);
     unittest_isfinite(reporter);
 
+#ifdef SkLONGLONG
     for (i = 0; i < 10000; i++) {
         SkFixed numer = rand.nextS();
         SkFixed denom = rand.nextS();
         SkFixed result = SkFixedDiv(numer, denom);
-        int64_t check = ((int64_t)numer << 16) / denom;
+        SkLONGLONG check = ((SkLONGLONG)numer << 16) / denom;
 
         (void)SkCLZ(numer);
         (void)SkCLZ(denom);
@@ -510,6 +522,7 @@
         r2 = SkFixedSquare(numer);
         REPORTER_ASSERT(reporter, result == r2);
     }
+#endif
 
     test_blend(reporter);
 
diff --git a/tests/Sk64Test.cpp b/tests/Sk64Test.cpp
index 1777d24..589801b 100644
--- a/tests/Sk64Test.cpp
+++ b/tests/Sk64Test.cpp
@@ -25,9 +25,14 @@
     REPORTER_ASSERT(reporter, a.getSign() == table.sign);
 }
 
-void Sk64::UnitTestWithReporter(void* reporterParam) {
-    skiatest::Reporter* reporter = (skiatest::Reporter*)reporterParam;
+#ifdef SkLONGLONG
+    static SkLONGLONG asLL(const Sk64& a)
+    {
+        return ((SkLONGLONG)a.fHi << 32) | a.fLo;
+    }
+#endif
 
+DEF_TEST(Sk64Test, reporter) {
     enum BoolTests {
         kZero_BoolTest,
         kPos_BoolTest,
@@ -91,7 +96,9 @@
         REPORTER_ASSERT(reporter, c.get32() == aa - bb);
     }
 
-    for (i = 0; i < 1000; i++) {
+#ifdef SkLONGLONG
+    for (i = 0; i < 1000; i++)
+    {
         rand.next64(&a); //a.fHi >>= 1; // avoid overflow
         rand.next64(&b); //b.fHi >>= 1; // avoid overflow
 
@@ -106,8 +113,8 @@
             b.fHi = 0;
         }
 
-        int64_t aa = a.as64();
-        int64_t bb = b.as64();
+        SkLONGLONG aa = asLL(a);
+        SkLONGLONG bb = asLL(b);
 
         REPORTER_ASSERT(reporter, (a < b) == (aa < bb));
         REPORTER_ASSERT(reporter, (a <= b) == (aa <= bb));
@@ -117,31 +124,31 @@
         REPORTER_ASSERT(reporter, (a != b) == (aa != bb));
 
         c = a; c.add(b);
-        REPORTER_ASSERT(reporter, c.as64() == aa + bb);
+        REPORTER_ASSERT(reporter, asLL(c) == aa + bb);
         c = a; c.sub(b);
-        REPORTER_ASSERT(reporter, c.as64() == aa - bb);
+        REPORTER_ASSERT(reporter, asLL(c) == aa - bb);
         c = a; c.rsub(b);
-        REPORTER_ASSERT(reporter, c.as64() == bb - aa);
+        REPORTER_ASSERT(reporter, asLL(c) == bb - aa);
         c = a; c.negate();
-        REPORTER_ASSERT(reporter, c.as64() == -aa);
+        REPORTER_ASSERT(reporter, asLL(c) == -aa);
 
         int bits = rand.nextU() & 63;
         c = a; c.shiftLeft(bits);
-        REPORTER_ASSERT(reporter, c.as64() == (aa << bits));
+        REPORTER_ASSERT(reporter, asLL(c) == (aa << bits));
         c = a; c.shiftRight(bits);
-        REPORTER_ASSERT(reporter, c.as64() == (aa >> bits));
+        REPORTER_ASSERT(reporter, asLL(c) == (aa >> bits));
         c = a; c.roundRight(bits);
 
-        int64_t tmp;
+        SkLONGLONG tmp;
 
         tmp = aa;
         if (bits > 0)
-            tmp += (int64_t)1 << (bits - 1);
-        REPORTER_ASSERT(reporter, c.as64() == (tmp >> bits));
+            tmp += (SkLONGLONG)1 << (bits - 1);
+        REPORTER_ASSERT(reporter, asLL(c) == (tmp >> bits));
 
         c.setMul(a.fHi, b.fHi);
-        tmp = (int64_t)a.fHi * b.fHi;
-        REPORTER_ASSERT(reporter, c.as64() == tmp);
+        tmp = (SkLONGLONG)a.fHi * b.fHi;
+        REPORTER_ASSERT(reporter, asLL(c) == tmp);
     }
 
 
@@ -153,11 +160,11 @@
         while (denom == 0)
             denom = rand.nextS();
         wide.setMul(rand.nextS(), rand.nextS());
-        int64_t check = wide.getLongLong();
+        SkLONGLONG check = wide.getLongLong();
 
         wide.div(denom, Sk64::kTrunc_DivOption);
         check /= denom;
-        int64_t w = wide.getLongLong();
+        SkLONGLONG w = wide.getLongLong();
 
         REPORTER_ASSERT(reporter, check == w);
 
@@ -168,8 +175,5 @@
         int diff = denom - ck;
         REPORTER_ASSERT(reporter, SkAbs32(diff) <= 1);
     }
-}
-
-DEF_TEST(Sk64Test, reporter) {
-    Sk64::UnitTestWithReporter(reporter);
+#endif
 }