1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 2 /* This Source Code Form is subject to the terms of the Mozilla Public 3 * License, v. 2.0. If a copy of the MPL was not distributed with this 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 5 6 #ifndef _MORKCONFIG_ 7 #define _MORKCONFIG_ 1 8 9 // 456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789 10 11 // { %%%%% begin debug mode options in Mork %%%%% 12 #define MORK_DEBUG 1 13 // } %%%%% end debug mode options in Mork %%%%% 14 15 #ifdef MORK_DEBUG 16 # define MORK_MAX_CODE_COMPILE 1 17 #endif 18 19 // { %%%%% begin platform defs peculiar to Mork %%%%% 20 21 #ifdef XP_MACOSX 22 # define MORK_MAC 1 23 #endif 24 25 #ifdef XP_WIN 26 # define MORK_WIN 1 27 #endif 28 29 #ifdef XP_UNIX 30 # define MORK_UNIX 1 31 #endif 32 33 // } %%%%% end platform defs peculiar to Mork %%%%% 34 35 #if defined(MORK_WIN) || defined(MORK_UNIX) || defined(MORK_MAC) 36 # include <stdio.h> 37 # include <ctype.h> 38 # include <errno.h> 39 # include <string.h> 40 # ifdef HAVE_MEMORY_H 41 # include <memory.h> 42 # endif 43 # ifdef HAVE_UNISTD_H 44 # include <unistd.h> /* for SEEK_SET, SEEK_END */ 45 # endif 46 47 # include "nsDebug.h" 48 49 # define MORK_ISPRINT(c) isprint(c) 50 51 # define MORK_FILETELL(file) ftell(file) 52 # define MORK_FILESEEK(file, where, how) fseek(file, where, how) 53 # define MORK_FILEREAD(outbuf, insize, file) fread(outbuf, 1, insize, file) 54 # if defined(MORK_WIN) 55 void mork_fileflush(FILE* file); 56 # define MORK_FILEFLUSH(file) mork_fileflush(file) 57 # else 58 # define MORK_FILEFLUSH(file) fflush(file) 59 # endif /*MORK_WIN*/ 60 61 # if defined(MORK_WIN) 62 # define MORK_FILEOPEN(file, how) \ 63 _wfopen(char16ptr_t(file), NS_ConvertASCIItoUTF16(how).get()) 64 # else 65 # define MORK_FILEOPEN(file, how) fopen(file, how) 66 # endif /*MORK_WIN*/ 67 # define MORK_FILECLOSE(file) fclose(file) 68 #endif /*defined(MORK_WIN) || defined(MORK_UNIX) || defined(MORK_MAC)*/ 69 70 /* ===== separating switchable features ===== */ 71 72 #define MORK_ENABLE_ZONE_ARENAS 1 /* using morkZone for pooling */ 73 74 //#define MORK_ENABLE_PROBE_MAPS 1 /* use smaller hash tables */ 75 76 #define MORK_BEAD_OVER_NODE_MAPS 1 /* use bead not node maps */ 77 78 /* ===== pooling ===== */ 79 80 #if defined(HAVE_64BIT_BUILD) 81 # define MORK_CONFIG_ALIGN_8 1 /* must have 8 byte alignment */ 82 #else 83 # define MORK_CONFIG_PTR_SIZE_4 1 /* sizeof(void*) == 4 */ 84 #endif 85 86 // #define MORK_DEBUG_HEAP_STATS 1 /* analyze per-block heap usage */ 87 88 /* ===== ===== ===== ===== line characters ===== ===== ===== ===== */ 89 #define mork_kCR 0x0D 90 #define mork_kLF 0x0A 91 #define mork_kVTAB '\013' 92 #define mork_kFF '\014' 93 #define mork_kTAB '\011' 94 #define mork_kCRLF "\015\012" /* A CR LF equivalent string */ 95 96 #if defined(MORK_MAC) 97 # define mork_kNewline "\015" 98 # define mork_kNewlineSize 1 99 #else 100 # if defined(MORK_WIN) 101 # define mork_kNewline "\015\012" 102 # define mork_kNewlineSize 2 103 # else 104 # if defined(MORK_UNIX) 105 # define mork_kNewline "\012" 106 # define mork_kNewlineSize 1 107 # endif /* MORK_UNIX */ 108 # endif /* MORK_WIN */ 109 #endif /* MORK_MAC */ 110 111 // { %%%%% begin assertion macro %%%%% 112 extern void mork_assertion_signal(const char* inMessage); 113 #define MORK_ASSERTION_SIGNAL(Y) mork_assertion_signal(Y) 114 #define MORK_ASSERT(X) \ 115 if (!(X)) MORK_ASSERTION_SIGNAL(#X) 116 // } %%%%% end assertion macro %%%%% 117 118 #define MORK_LIB(return ) return /*API return declaration*/ 119 #define MORK_LIB_IMPL(return ) return /*implementation return declaration*/ 120 121 // { %%%%% begin standard c utility methods %%%%% 122 123 #if defined(MORK_WIN) || defined(MORK_UNIX) || defined(MORK_MAC) 124 # define MORK_USE_C_STDLIB 1 125 #endif /*MORK_WIN*/ 126 127 #ifdef MORK_USE_C_STDLIB 128 # define MORK_MEMCMP(src1, src2, size) memcmp(src1, src2, size) 129 # define MORK_MEMCPY(dest, src, size) memcpy(dest, src, size) 130 # define MORK_MEMMOVE(dest, src, size) memmove(dest, src, size) 131 # define MORK_MEMSET(dest, byte, size) memset(dest, byte, size) 132 # if defined(MORK_WIN) 133 # define MORK_STRCPY(dest, src) wcscpy(char16ptr_t(dest), char16ptr_t(src)) 134 # else 135 # define MORK_STRCPY(dest, src) strcpy(dest, src) 136 # endif /*MORK_WIN*/ 137 # define MORK_STRCMP(one, two) strcmp(one, two) 138 # define MORK_STRNCMP(one, two, length) strncmp(one, two, length) 139 # if defined(MORK_WIN) 140 # define MORK_STRLEN(string) wcslen(char16ptr_t(string)) 141 # else 142 # define MORK_STRLEN(string) strlen(string) 143 # endif /*MORK_WIN*/ 144 #endif /*MORK_USE_C_STDLIB*/ 145 146 #ifdef MORK_PROVIDE_STDLIB 147 MORK_LIB(mork_i4) mork_memcmp(const void* a, const void* b, mork_size inSize); 148 MORK_LIB(void) mork_memcpy(void* dst, const void* src, mork_size inSize); 149 MORK_LIB(void) mork_memmove(void* dst, const void* src, mork_size inSize); 150 MORK_LIB(void) mork_memset(void* dst, int inByte, mork_size inSize); 151 MORK_LIB(void) mork_strcpy(void* dst, const void* src); 152 MORK_LIB(mork_i4) mork_strcmp(const void* a, const void* b); 153 MORK_LIB(mork_i4) mork_strncmp(const void* a, const void* b, mork_size inSize); 154 MORK_LIB(mork_size) mork_strlen(const void* inString); 155 156 # define MORK_MEMCMP(src1, src2, size) mork_memcmp(src1, src2, size) 157 # define MORK_MEMCPY(dest, src, size) mork_memcpy(dest, src, size) 158 # define MORK_MEMMOVE(dest, src, size) mork_memmove(dest, src, size) 159 # define MORK_MEMSET(dest, byte, size) mork_memset(dest, byte, size) 160 # define MORK_STRCPY(dest, src) mork_strcpy(dest, src) 161 # define MORK_STRCMP(one, two) mork_strcmp(one, two) 162 # define MORK_STRNCMP(one, two, length) mork_strncmp(one, two, length) 163 # define MORK_STRLEN(string) mork_strlen(string) 164 #endif /*MORK_PROVIDE_STDLIB*/ 165 166 // } %%%%% end standard c utility methods %%%%% 167 168 // 456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789 169 170 #endif /* _MORKCONFIG_ */ 171