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