SkPostConfig.h revision 27661181d757145d98f2dc3e02b88ee3fffce9e5
18a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com/*
28a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com * Copyright (C) 2006 The Android Open Source Project
38a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com *
48a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com * Licensed under the Apache License, Version 2.0 (the "License");
58a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com * you may not use this file except in compliance with the License.
68a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com * You may obtain a copy of the License at
78a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com *
88a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com *      http://www.apache.org/licenses/LICENSE-2.0
98a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com *
108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com * Unless required by applicable law or agreed to in writing, software
118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com * distributed under the License is distributed on an "AS IS" BASIS,
128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com * See the License for the specific language governing permissions and
148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com * limitations under the License.
158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com */
168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
178a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifndef SkPostConfig_DEFINED
188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#define SkPostConfig_DEFINED
198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if defined(SK_BUILD_FOR_WIN32) || defined(SK_BUILD_FOR_WINCE)
218a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #define SK_BUILD_FOR_WIN
228a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if defined(SK_DEBUG) && defined(SK_RELEASE)
258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #error "cannot define both SK_DEBUG and SK_RELEASE"
268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#elif !defined(SK_DEBUG) && !defined(SK_RELEASE)
278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #error "must define either SK_DEBUG or SK_RELEASE"
288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
308a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if defined SK_SUPPORT_UNITTEST && !defined(SK_DEBUG)
318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #error "can't have unittests without debug"
328a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
338a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
348a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if defined(SK_SCALAR_IS_FIXED) && defined(SK_SCALAR_IS_FLOAT)
358a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #error "cannot define both SK_SCALAR_IS_FIXED and SK_SCALAR_IS_FLOAT"
368a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#elif !defined(SK_SCALAR_IS_FIXED) && !defined(SK_SCALAR_IS_FLOAT)
378a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #ifdef SK_CAN_USE_FLOAT
388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        #define SK_SCALAR_IS_FLOAT
398a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #else
408a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        #define SK_SCALAR_IS_FIXED
418a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #endif
428a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
448a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if defined(SK_SCALAR_IS_FLOAT) && !defined(SK_CAN_USE_FLOAT)
458a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #define SK_CAN_USE_FLOAT
468a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    // we do nothing in the else case: fixed-scalars can have floats or not
478a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
488a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if defined(SK_CPU_LENDIAN) && defined(SK_CPU_BENDIAN)
508a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #error "cannot define both SK_CPU_LENDIAN and SK_CPU_BENDIAN"
518a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#elif !defined(SK_CPU_LENDIAN) && !defined(SK_CPU_BENDIAN)
528a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #error "must define either SK_CPU_LENDIAN or SK_CPU_BENDIAN"
538a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
548a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
558a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// ensure the port has defined all of these, or none of them
568a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifdef SK_A32_SHIFT
578a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #if !defined(SK_R32_SHIFT) || !defined(SK_G32_SHIFT) || !defined(SK_B32_SHIFT)
588a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        #error "all or none of the 32bit SHIFT amounts must be defined"
598a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #endif
608a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#else
618a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #if defined(SK_R32_SHIFT) || defined(SK_G32_SHIFT) || defined(SK_B32_SHIFT)
628a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        #error "all or none of the 32bit SHIFT amounts must be defined"
638a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #endif
648a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
658a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
668a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com///////////////////////////////////////////////////////////////////////////////
678a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
688a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifndef SkNEW
698a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #define SkNEW(type_name)                new type_name
708a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #define SkNEW_ARGS(type_name, args)     new type_name args
718a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #define SkNEW_ARRAY(type_name, count)   new type_name[count]
728a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #define SkDELETE(obj)                   delete obj
738a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #define SkDELETE_ARRAY(array)           delete[] array
748a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
758a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
768a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifndef SK_CRASH
778a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if 1   // set to 0 for infinite loop, which can help connecting gdb
788a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #define SK_CRASH() *(int *)(uintptr_t)0xbbadbeef = 0
798a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#else
808a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #define SK_CRASH()  do {} while (true)
818a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
828a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
838a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
848a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com///////////////////////////////////////////////////////////////////////////////
858a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
868a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if defined(SK_SOFTWARE_FLOAT) && defined(SK_SCALAR_IS_FLOAT)
878a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    // if this is defined, we convert floats to 2scompliment ints for compares
888a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #ifndef SK_SCALAR_SLOW_COMPARES
898a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        #define SK_SCALAR_SLOW_COMPARES
908a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #endif
915c80ea17d4e4a795bfaeb260fc27e952ba471f1dreed@android.com    #ifndef SK_USE_FLOATBITS
925c80ea17d4e4a795bfaeb260fc27e952ba471f1dreed@android.com        #define SK_USE_FLOATBITS
935c80ea17d4e4a795bfaeb260fc27e952ba471f1dreed@android.com    #endif
948a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
958a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
968a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifdef SK_BUILD_FOR_WIN
9716690af1c21dead3eedb25ebd0a4b9a091684ed4reed@android.com    // we want lean_and_mean when we include windows.h
9816690af1c21dead3eedb25ebd0a4b9a091684ed4reed@android.com    #ifndef WIN32_LEAN_AND_MEAN
9916690af1c21dead3eedb25ebd0a4b9a091684ed4reed@android.com        #define WIN32_LEAN_AND_MEAN
10016690af1c21dead3eedb25ebd0a4b9a091684ed4reed@android.com        #define WIN32_IS_MEAN_WAS_LOCALLY_DEFINED
10116690af1c21dead3eedb25ebd0a4b9a091684ed4reed@android.com    #endif
10216690af1c21dead3eedb25ebd0a4b9a091684ed4reed@android.com
1038a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #include <windows.h>
10416690af1c21dead3eedb25ebd0a4b9a091684ed4reed@android.com
10516690af1c21dead3eedb25ebd0a4b9a091684ed4reed@android.com    #ifdef WIN32_IS_MEAN_WAS_LOCALLY_DEFINED
10616690af1c21dead3eedb25ebd0a4b9a091684ed4reed@android.com        #undef WIN32_LEAN_AND_MEAN
10716690af1c21dead3eedb25ebd0a4b9a091684ed4reed@android.com    #endif
1088a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1098a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #ifndef SK_DEBUGBREAK
110f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com        #define SK_DEBUGBREAK(cond)     do { if (!(cond)) __debugbreak(); } while (false)
1118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #endif
112f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com
113f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com    #ifndef SK_A32_SHIFT
114f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com        #define SK_A32_SHIFT 24
115f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com        #define SK_R32_SHIFT 16
116f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com        #define SK_G32_SHIFT 8
117f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com        #define SK_B32_SHIFT 0
118f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com    #endif
119f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com
1208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#elif defined(SK_BUILD_FOR_MAC)
1218a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #ifndef SK_DEBUGBREAK
1228a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        #define SK_DEBUGBREAK(cond)     do { if (!(cond)) SK_CRASH(); } while (false)
1238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #endif
1248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#else
1258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #ifdef SK_DEBUG
1268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        #include <stdio.h>
1278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        #ifndef SK_DEBUGBREAK
1288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com            #define SK_DEBUGBREAK(cond) do { if (cond) break; \
1298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com                SkDebugf("%s:%d: failed assertion \"%s\"\n", \
1308a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com                __FILE__, __LINE__, #cond); SK_CRASH(); } while (false)
1318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        #endif
1328a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #endif
1338a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
1348a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
13527661181d757145d98f2dc3e02b88ee3fffce9e5bsalomon@google.com/*
13627661181d757145d98f2dc3e02b88ee3fffce9e5bsalomon@google.com *  We check to see if the SHIFT value has already been defined.
13727661181d757145d98f2dc3e02b88ee3fffce9e5bsalomon@google.com *  if not, we define it ourself to some default values. We default to OpenGL
13827661181d757145d98f2dc3e02b88ee3fffce9e5bsalomon@google.com *  order (in memory: r,g,b,a)
13927661181d757145d98f2dc3e02b88ee3fffce9e5bsalomon@google.com */
14027661181d757145d98f2dc3e02b88ee3fffce9e5bsalomon@google.com#ifndef SK_A32_SHIFT
14127661181d757145d98f2dc3e02b88ee3fffce9e5bsalomon@google.com    #ifdef SK_CPU_BENDIAN
14227661181d757145d98f2dc3e02b88ee3fffce9e5bsalomon@google.com        #define SK_R32_SHIFT    24
14327661181d757145d98f2dc3e02b88ee3fffce9e5bsalomon@google.com        #define SK_G32_SHIFT    16
14427661181d757145d98f2dc3e02b88ee3fffce9e5bsalomon@google.com        #define SK_B32_SHIFT    8
14527661181d757145d98f2dc3e02b88ee3fffce9e5bsalomon@google.com        #define SK_A32_SHIFT    0
14627661181d757145d98f2dc3e02b88ee3fffce9e5bsalomon@google.com    #else
14727661181d757145d98f2dc3e02b88ee3fffce9e5bsalomon@google.com        #define SK_R32_SHIFT    0
14827661181d757145d98f2dc3e02b88ee3fffce9e5bsalomon@google.com        #define SK_G32_SHIFT    8
14927661181d757145d98f2dc3e02b88ee3fffce9e5bsalomon@google.com        #define SK_B32_SHIFT    16
15027661181d757145d98f2dc3e02b88ee3fffce9e5bsalomon@google.com        #define SK_A32_SHIFT    24
15127661181d757145d98f2dc3e02b88ee3fffce9e5bsalomon@google.com    #endif
15227661181d757145d98f2dc3e02b88ee3fffce9e5bsalomon@google.com#endif
15327661181d757145d98f2dc3e02b88ee3fffce9e5bsalomon@google.com
1548a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//  stdlib macros
1558a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1568a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if 0
1578a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if !defined(strlen) && defined(SK_DEBUG)
1588a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    extern size_t sk_strlen(const char*);
1598a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #define strlen(s)   sk_strlen(s)
1608a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
1618a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifndef sk_strcpy
1628a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #define sk_strcpy(dst, src)     strcpy(dst, src)
1638a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
1648a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifndef sk_strchr
1658a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #define sk_strchr(s, c)         strchr(s, c)
1668a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
1678a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifndef sk_strrchr
1688a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #define sk_strrchr(s, c)        strrchr(s, c)
1698a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
1708a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifndef sk_strcmp
1718a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #define sk_strcmp(s, t)         strcmp(s, t)
1728a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
1738a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifndef sk_strncmp
1748a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #define sk_strncmp(s, t, n)     strncmp(s, t, n)
1758a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
1768a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifndef sk_memcpy
1778a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #define sk_memcpy(dst, src, n)  memcpy(dst, src, n)
1788a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
1798a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifndef memmove
1808a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #define memmove(dst, src, n)    memmove(dst, src, n)
1818a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
1828a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifndef sk_memset
1838a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #define sk_memset(dst, val, n)  memset(dst, val, n)
1848a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
1858a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifndef sk_memcmp
1868a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #define sk_memcmp(s, t, n)      memcmp(s, t, n)
1878a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
1888a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1898a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#define sk_strequal(s, t)           (!sk_strcmp(s, t))
1908a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#define sk_strnequal(s, t, n)       (!sk_strncmp(s, t, n))
1918a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
1928a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1935c80ea17d4e4a795bfaeb260fc27e952ba471f1dreed@android.com//////////////////////////////////////////////////////////////////////
1945c80ea17d4e4a795bfaeb260fc27e952ba471f1dreed@android.com
1955c80ea17d4e4a795bfaeb260fc27e952ba471f1dreed@android.com#if defined(SK_BUILD_FOR_WIN32) || defined(SK_BUILD_FOR_MAC)
1965c80ea17d4e4a795bfaeb260fc27e952ba471f1dreed@android.com    #ifndef SkLONGLONG
1975c80ea17d4e4a795bfaeb260fc27e952ba471f1dreed@android.com        #ifdef SK_BUILD_FOR_WIN32
1985c80ea17d4e4a795bfaeb260fc27e952ba471f1dreed@android.com            #define SkLONGLONG  __int64
1995c80ea17d4e4a795bfaeb260fc27e952ba471f1dreed@android.com        #else
2005c80ea17d4e4a795bfaeb260fc27e952ba471f1dreed@android.com            #define SkLONGLONG  long long
2015c80ea17d4e4a795bfaeb260fc27e952ba471f1dreed@android.com        #endif
2025c80ea17d4e4a795bfaeb260fc27e952ba471f1dreed@android.com    #endif
2035c80ea17d4e4a795bfaeb260fc27e952ba471f1dreed@android.com#endif
2045c80ea17d4e4a795bfaeb260fc27e952ba471f1dreed@android.com
2058a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//////////////////////////////////////////////////////////////////////////////////////////////
2068a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifndef SK_BUILD_FOR_WINCE
2078a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include <string.h>
2088a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include <stdlib.h>
2098a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#else
2108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#define _CMNINTRIN_DECLARE_ONLY
2118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "cmnintrin.h"
2128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
2138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if defined SK_DEBUG && defined SK_BUILD_FOR_WIN32
2158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//#define _CRTDBG_MAP_ALLOC
2168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifdef free
2178a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#undef free
2188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
2198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include <crtdbg.h>
2208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#undef free
2218a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2228a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifdef SK_DEBUGx
2238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if defined(SK_SIMULATE_FAILED_MALLOC) && defined(__cplusplus)
2248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    void * operator new(
2258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        size_t cb,
2268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        int nBlockUse,
2278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        const char * szFileName,
2288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        int nLine,
2298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        int foo
2308a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        );
2318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    void * operator new[](
2328a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        size_t cb,
2338a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        int nBlockUse,
2348a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        const char * szFileName,
2358a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        int nLine,
2368a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        int foo
2378a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        );
2388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    void operator delete(
2398a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        void *pUserData,
2408a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        int, const char*, int, int
2418a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        );
2428a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    void operator delete(
2438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        void *pUserData
2448a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        );
2458a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    void operator delete[]( void * p );
2468a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #define DEBUG_CLIENTBLOCK   new( _CLIENT_BLOCK, __FILE__, __LINE__, 0)
2478a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#else
2488a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #define DEBUG_CLIENTBLOCK   new( _CLIENT_BLOCK, __FILE__, __LINE__)
2498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
2508a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    #define new DEBUG_CLIENTBLOCK
2518a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#else
2528a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#define DEBUG_CLIENTBLOCK
2538a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif // _DEBUG
2548a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2558a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
2568a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
2578a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
2588a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
259