1 /* 2 * Copyright (C) 2010 Google Inc. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are 6 * met: 7 * 8 * * Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * * Redistributions in binary form must reproduce the above 11 * copyright notice, this list of conditions and the following disclaimer 12 * in the documentation and/or other materials provided with the 13 * distribution. 14 * * Neither the name of Google Inc. nor the names of its 15 * contributors may be used to endorse or promote products derived from 16 * this software without specific prior written permission. 17 * 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 */ 30 31 #ifndef WebCommon_h 32 #define WebCommon_h 33 34 // ----------------------------------------------------------------------------- 35 // Default configuration 36 37 #if !defined(WEBKIT_IMPLEMENTATION) 38 #define WEBKIT_IMPLEMENTATION 0 39 #endif 40 41 #if !defined(WEBKIT_USING_SKIA) 42 #if !defined(__APPLE__) 43 #define WEBKIT_USING_SKIA 1 44 #else 45 #define WEBKIT_USING_SKIA 0 46 #endif 47 #endif 48 49 #if !defined(WEBKIT_USING_CG) 50 #if defined(__APPLE__) 51 #define WEBKIT_USING_CG 1 52 #else 53 #define WEBKIT_USING_CG 0 54 #endif 55 #endif 56 57 #if !defined(WEBKIT_USING_V8) 58 #define WEBKIT_USING_V8 1 59 #endif 60 61 #if !defined(WEBKIT_USING_JSC) 62 #define WEBKIT_USING_JSC 0 63 #endif 64 65 // ----------------------------------------------------------------------------- 66 // Exported symbols need to be annotated with WEBKIT_API 67 68 #if defined(WIN32) && defined(WEBKIT_DLL) 69 #if WEBKIT_IMPLEMENTATION 70 #define WEBKIT_API __declspec(dllexport) 71 #else 72 #define WEBKIT_API __declspec(dllimport) 73 #endif 74 #else 75 #define WEBKIT_API 76 #endif 77 78 // ----------------------------------------------------------------------------- 79 // Basic types 80 81 #include <stddef.h> // For size_t 82 83 #if defined(WIN32) 84 // Visual Studio doesn't have stdint.h. 85 typedef short int16_t; 86 typedef unsigned short uint16_t; 87 typedef int int32_t; 88 typedef unsigned int uint32_t; 89 #endif 90 91 namespace WebKit { 92 93 // UTF-16 character type 94 #if defined(WIN32) 95 typedef wchar_t WebUChar; 96 #else 97 typedef unsigned short WebUChar; 98 #endif 99 100 // ----------------------------------------------------------------------------- 101 // Assertions 102 103 WEBKIT_API void failedAssertion(const char* file, int line, const char* function, const char* assertion); 104 105 } // namespace WebKit 106 107 // Ideally, only use inside the public directory but outside of WEBKIT_IMPLEMENTATION blocks. (Otherwise use WTF's ASSERT.) 108 #if defined(NDEBUG) 109 #define WEBKIT_ASSERT(assertion) ((void)0) 110 #else 111 #define WEBKIT_ASSERT(assertion) do { \ 112 if (!(assertion)) \ 113 failedAssertion(__FILE__, __LINE__, __FUNCTION__, #assertion); \ 114 } while (0) 115 #endif 116 117 #define WEBKIT_ASSERT_NOT_REACHED() WEBKIT_ASSERT(0) 118 119 #endif 120