jconfig.h 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571
  1. /* Copyright (C) 2002 Aladdin Enterprises. All rights reserved.
  2. This software is provided AS-IS with no warranty, either express or
  3. implied.
  4. This software is distributed under license and may not be copied,
  5. modified or distributed except as expressly authorized under the terms
  6. of the license contained in the file LICENSE in this distribution.
  7. For more information about licensing, please refer to
  8. http://www.ghostscript.com/licensing/. For information on
  9. commercial licensing, go to http://www.artifex.com/licensing/ or
  10. contact Artifex Software, Inc., 101 Lucas Valley Road #110,
  11. San Rafael, CA 94903, U.S.A., +1(415)492-9861.
  12. */
  13. /* $Id: stdpn.h,v 1.2 2002/06/16 08:59:16 lpd Exp $ */
  14. /* Pn macros for pre-ANSI compiler compatibility */
  15. #ifndef stdpn_INCLUDED
  16. # define stdpn_INCLUDED
  17. /*
  18. * We formerly supported "traditional" (pre-ANSI) C compilers, by using
  19. * these macros for formal parameter lists and defining them as empty
  20. * for pre-ANSI compilers, with the syntax
  21. * resulttype func(Pn(arg1, ..., argn));
  22. * However, we no longer support pre-ANSI compilers; these macros are
  23. * deprecated (should not be used in new code), and eventually will be
  24. * removed.
  25. */
  26. #define P0() void
  27. #define P1(t1) t1
  28. #define P2(t1,t2) t1,t2
  29. #define P3(t1,t2,t3) t1,t2,t3
  30. #define P4(t1,t2,t3,t4) t1,t2,t3,t4
  31. #define P5(t1,t2,t3,t4,t5) t1,t2,t3,t4,t5
  32. #define P6(t1,t2,t3,t4,t5,t6) t1,t2,t3,t4,t5,t6
  33. #define P7(t1,t2,t3,t4,t5,t6,t7) t1,t2,t3,t4,t5,t6,t7
  34. #define P8(t1,t2,t3,t4,t5,t6,t7,t8) t1,t2,t3,t4,t5,t6,t7,t8
  35. #define P9(t1,t2,t3,t4,t5,t6,t7,t8,t9) t1,t2,t3,t4,t5,t6,t7,t8,t9
  36. #define P10(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) t1,t2,t3,t4,t5,t6,t7,t8,t9,t10
  37. #define P11(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11) t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11
  38. #define P12(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12) t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12
  39. #define P13(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13) t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13
  40. #define P14(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14) t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14
  41. #define P15(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15) t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15
  42. #define P16(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16) t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16
  43. #endif /* stdpn_INCLUDED */
  44. /* Copyright (C) 1993-2003 artofcode LLC. All rights reserved.
  45. This software is provided AS-IS with no warranty, either express or
  46. implied.
  47. This software is distributed under license and may not be copied,
  48. modified or distributed except as expressly authorized under the terms
  49. of the license contained in the file LICENSE in this distribution.
  50. For more information about licensing, please refer to
  51. http://www.ghostscript.com/licensing/. For information on
  52. commercial licensing, go to http://www.artifex.com/licensing/ or
  53. contact Artifex Software, Inc., 101 Lucas Valley Road #110,
  54. San Rafael, CA 94903, U.S.A., +1(415)492-9861.
  55. */
  56. /* $Id: stdpre.h,v 1.22 2003/12/09 21:17:59 giles Exp $ */
  57. /* Standard definitions for Ghostscript code not needing arch.h */
  58. #ifndef stdpre_INCLUDED
  59. # define stdpre_INCLUDED
  60. /*
  61. * Here we deal with the vagaries of various C compilers. We assume that:
  62. * ANSI-standard Unix compilers define __STDC__.
  63. * gcc defines __GNUC__.
  64. * Borland Turbo C and Turbo C++ define __MSDOS__ and __TURBOC__.
  65. * Borland C++ defines __BORLANDC__, __MSDOS__, and __TURBOC__.
  66. * Microsoft C/C++ defines _MSC_VER and _MSDOS.
  67. * Watcom C defines __WATCOMC__ and MSDOS.
  68. * MetroWerks C defines __MWERKS__.
  69. *
  70. * We arrange to define __MSDOS__ on all the MS-DOS platforms.
  71. */
  72. #if (defined(MSDOS) || defined(_MSDOS)) && !defined(__MSDOS__)
  73. # define __MSDOS__
  74. #endif
  75. /*
  76. * Also, not used much here, but used in other header files, we assume:
  77. * Unix System V environments define SYSV.
  78. * The SCO ODT compiler defines M_SYSV and M_SYS3.
  79. * VMS systems define VMS.
  80. * OSF/1 compilers define __osf__ or __OSF__.
  81. * (The VMS and OSF/1 C compilers handle prototypes and const,
  82. * but do not define __STDC__.)
  83. * bsd 4.2 or 4.3 systems define BSD4_2.
  84. * POSIX-compliant environments define _POSIX_SOURCE.
  85. * Motorola 88K BCS/OCS systems defined m88k.
  86. *
  87. * We make fairly heroic efforts to confine all uses of these flags to
  88. * header files, and never to use them in code.
  89. */
  90. #if defined(__osf__) && !defined(__OSF__)
  91. # define __OSF__ /* */
  92. #endif
  93. #if defined(M_SYSV) && !defined(SYSV)
  94. # define SYSV /* */
  95. #endif
  96. #if defined(M_SYS3) && !defined(__SVR3)
  97. # define __SVR3 /* */
  98. #endif
  99. #if defined(__STDC__) || defined(__MSDOS__) || defined(__convex__) || defined(VMS) || defined(__OSF__) || defined(__WIN32__) || defined(__IBMC__) || defined(M_UNIX) || defined(__GNUC__) || defined(__BORLANDC__)
  100. # if !(defined(M_XENIX) && !defined(__GNUC__)) /* SCO Xenix cc is broken */
  101. # define __PROTOTYPES__ /* */
  102. # endif
  103. #endif
  104. /* Define dummy values for __FILE__ and __LINE__ if the compiler */
  105. /* doesn't provide these. Note that places that use __FILE__ */
  106. /* must check explicitly for a null pointer. */
  107. #ifndef __FILE__
  108. # define __FILE__ NULL
  109. #endif
  110. #ifndef __LINE__
  111. # define __LINE__ 0
  112. #endif
  113. /* Disable 'const' and 'volatile' if the compiler can't handle them. */
  114. #ifndef __PROTOTYPES__
  115. # undef const
  116. # define const /* */
  117. # undef volatile
  118. # define volatile /* */
  119. #endif
  120. /* Disable 'inline' if the compiler can't handle it. */
  121. #ifdef __DECC
  122. # undef inline
  123. # define inline __inline
  124. #else
  125. # ifdef __GNUC__
  126. /* Define inline as __inline__ so -pedantic won't produce a warning. */
  127. # undef inline
  128. # define inline __inline__
  129. # else
  130. # if !(defined(__MWERKS__) || defined(inline))
  131. # define inline /* */
  132. # endif
  133. # endif
  134. #endif
  135. /*
  136. * Provide a way to include inline procedures in header files, regardless of
  137. * whether the compiler (A) doesn't support inline at all, (B) supports it
  138. * but also always compiles a closed copy, (C) supports it but somehow only
  139. * includes a single closed copy in the executable, or (D) supports it and
  140. * also supports a different syntax if no closed copy is desired.
  141. *
  142. * The code that appears just after this comment indicates which compilers
  143. * are of which kind. (Eventually this might be determined automatically.)
  144. * (A) and (B) require nothing here.
  145. * (C) requires
  146. * #define extern_inline inline
  147. * (D) requires
  148. * #define extern_inline extern inline // or whatever
  149. * Note that for case (B), the procedure will only be declared inline in
  150. * the .c file where its closed copy is compiled.
  151. */
  152. #ifdef __GNUC__
  153. # define extern_inline extern inline
  154. #endif
  155. /*
  156. * To include an inline procedure xyz in a header file abc.h, use the
  157. * following template in the header file:
  158. extern_inline int xyz(<<parameters>>)
  159. #if HAVE_EXTERN_INLINE || defined(INLINE_INCLUDE_xyz)
  160. {
  161. <<body>>
  162. }
  163. #else
  164. ;
  165. #endif
  166. * And use the following in whichever .c file takes responsibility for
  167. * including the closed copy of xyz:
  168. #define EXTERN_INCLUDE_xyz // must precede all #includes
  169. #include "abc.h"
  170. * The definitions of the EXTERN_INCLUDE_ macros must precede *all* includes
  171. * because there is no way to know whether some other .h file #includes abc.h
  172. * indirectly, and because of the protection against double #includes, the
  173. * EXTERN_INCLUDE_s must be defined before the first inclusion of abc.h.
  174. */
  175. /*
  176. * The following is generic code that does not need per-compiler
  177. * customization.
  178. */
  179. #ifdef extern_inline
  180. # define HAVE_EXTERN_INLINE 1
  181. #else
  182. # define extern_inline /* */
  183. # define HAVE_EXTERN_INLINE 0
  184. #endif
  185. /*
  186. * Some compilers give a warning if a function call that returns a value
  187. * is used as a statement; a few compilers give an error for the construct
  188. * (void)0, which is contrary to the ANSI standard. Since we don't know of
  189. * any compilers that do both, we define a macro here for discarding
  190. * the value of an expression statement, which can be defined as either
  191. * including or not including the cast. (We don't conditionalize this here,
  192. * because no commercial compiler gives the error on (void)0, although
  193. * some give warnings.) */
  194. #define DISCARD(expr) ((void)(expr))
  195. /* Backward compatibility */
  196. #define discard(expr) DISCARD(expr)
  197. /*
  198. * Some versions of the Watcom compiler give a "Comparison result always
  199. * 0/1" message that we want to suppress because it gets in the way of
  200. * meaningful warnings.
  201. */
  202. #ifdef __WATCOMC__
  203. # pragma disable_message(124);
  204. #endif
  205. /*
  206. * Some versions of gcc have a bug such that after
  207. byte *p;
  208. ...
  209. x = *(long *)p;
  210. * the compiler then thinks that p always points to long-aligned data.
  211. * Detect this here so it can be handled appropriately in the few places
  212. * that (we think) matter.
  213. */
  214. #ifdef __GNUC__
  215. # if __GNUC__ == 2 & (7 < __GNUC_MINOR__ <= 95)
  216. # define ALIGNMENT_ALIASING_BUG
  217. # endif
  218. #endif
  219. /*
  220. * The SVR4.2 C compiler incorrectly considers the result of << and >>
  221. * to be unsigned if the left operand is signed and the right operand is
  222. * unsigned. We believe this only causes trouble in Ghostscript code when
  223. * the right operand is a sizeof(...), which is unsigned for this compiler.
  224. * Therefore, we replace the relevant uses of sizeof with size_of:
  225. */
  226. #define size_of(x) ((int)(sizeof(x)))
  227. /*
  228. * far_data was formerly used for static data that had to be assigned its
  229. * own segment on PCs with 64K segments. This was supported in Borland C++,
  230. * but none of the other compilers. Since we no longer support
  231. * small-segment systems, far_data is vacuous.
  232. */
  233. #undef far_data
  234. #define far_data /* */
  235. /*
  236. * Get the number of elements of a statically dimensioned array.
  237. * Note that this also works on array members of structures.
  238. */
  239. #define countof(a) (sizeof(a) / sizeof((a)[0]))
  240. #define count_of(a) (size_of(a) / size_of((a)[0]))
  241. /*
  242. * Get the offset of a structure member. Amazingly enough, the simpler
  243. * definition works on all compilers except for one broken MIPS compiler
  244. * and the IBM RS/6000. Unfortunately, because of these two compilers,
  245. * we have to use the more complex definition. Even more unfortunately,
  246. * the more complex definition doesn't work on the MetroWerks
  247. * CodeWarrior compiler (Macintosh and BeOS).
  248. */
  249. #ifdef __MWERKS__
  250. #define offset_of(type, memb)\
  251. ((int) &((type *) 0)->memb)
  252. #else
  253. #define offset_of(type, memb)\
  254. ((int) ( (char *)&((type *)0)->memb - (char *)((type *)0) ))
  255. #endif
  256. /*
  257. * Get the alignment of a pointer modulo a given power of 2.
  258. * There is no portable way to do this, but the following definition
  259. * works on all reasonable systems.
  260. */
  261. #define ALIGNMENT_MOD(ptr, modu)\
  262. ((uint)( ((const char *)(ptr) - (const char *)0) & ((modu) - 1) ))
  263. /* Define short names for the unsigned types. */
  264. typedef unsigned char byte;
  265. typedef unsigned char uchar;
  266. typedef unsigned short ushort;
  267. typedef unsigned int uint;
  268. typedef unsigned long ulong;
  269. /* Since sys/types.h may define one or more of these (depending on
  270. * the platform), we have to take steps to prevent name clashes.
  271. * Unfortunately this can clobber valid definitions for the size-
  272. * specific types, but there's no simple solution.
  273. *
  274. * NOTE: This requires that you include std.h *before* any other
  275. * header file that includes sys/types.h.
  276. *
  277. */
  278. #define bool bool_ /* (maybe not needed) */
  279. #define uchar uchar_
  280. #define uint uint_
  281. #define ushort ushort_
  282. #define ulong ulong_
  283. #include <sys/types.h>
  284. #undef bool
  285. #undef uchar
  286. #undef uint
  287. #undef ushort
  288. #undef ulong
  289. /*
  290. * Define a Boolean type. Even though we would like it to be
  291. * unsigned char, it pretty well has to be int, because
  292. * that's what all the relational operators and && and || produce.
  293. * We can't make it an enumerated type, because ints don't coerce
  294. * freely to enums (although the opposite is true).
  295. * Unfortunately, at least some C++ compilers have a built-in bool type,
  296. * and the MetroWerks C++ compiler insists that bool be equivalent to
  297. * unsigned char.
  298. */
  299. #ifndef __cplusplus
  300. #ifdef __BEOS__
  301. typedef unsigned char bool;
  302. #else
  303. typedef int bool;
  304. #endif
  305. #endif
  306. /*
  307. * Older versions of MetroWerks CodeWarrior defined true and false, but they're now
  308. * an enum in the (MacOS) Universal Interfaces. The only way around this is to escape
  309. * our own definitions wherever MacTypes.h is included.
  310. */
  311. #ifndef __MACOS__
  312. #undef false
  313. #define false ((bool)0)
  314. #undef true
  315. #define true ((bool)1)
  316. #endif /* __MACOS__ */
  317. /*
  318. * Compilers disagree as to whether macros used in macro arguments
  319. * should be expanded at the time of the call, or at the time of
  320. * final expansion. Even authoritative documents disagree: the ANSI
  321. * standard says the former, but Harbison and Steele's book says the latter.
  322. * In order to work around this discrepancy, we have to do some very
  323. * ugly things in a couple of places. We mention it here because
  324. * it might well trip up future developers.
  325. */
  326. /*
  327. * Define the type to be used for ordering pointers (<, >=, etc.).
  328. * The Borland and Microsoft large models only compare the offset part
  329. * of segmented pointers. Semantically, the right type to use for the
  330. * comparison is char huge *, but we have no idea how expensive comparing
  331. * such pointers is, and any type that compares all the bits of the pointer,
  332. * gives the right result for pointers in the same segment, and keeps
  333. * different segments disjoint will do.
  334. */
  335. #if defined(__TURBOC__) || defined(_MSC_VER)
  336. typedef unsigned long ptr_ord_t;
  337. #else
  338. typedef const char *ptr_ord_t;
  339. #endif
  340. /* Define all the pointer comparison operations. */
  341. #define _PTR_CMP(p1, rel, p2) ((ptr_ord_t)(p1) rel (ptr_ord_t)(p2))
  342. #define PTR_LE(p1, p2) _PTR_CMP(p1, <=, p2)
  343. #define PTR_LT(p1, p2) _PTR_CMP(p1, <, p2)
  344. #define PTR_GE(p1, p2) _PTR_CMP(p1, >=, p2)
  345. #define PTR_GT(p1, p2) _PTR_CMP(p1, >, p2)
  346. #define PTR_BETWEEN(ptr, lo, hi)\
  347. (PTR_GE(ptr, lo) && PTR_LT(ptr, hi))
  348. /* Define min and max, but make sure to use the identical definition */
  349. /* to the one that all the compilers seem to have.... */
  350. #ifndef min
  351. # define min(a, b) (((a) < (b)) ? (a) : (b))
  352. #endif
  353. #ifndef max
  354. # define max(a, b) (((a) > (b)) ? (a) : (b))
  355. #endif
  356. /* Define a standard way to round values to a (constant) modulus. */
  357. #define ROUND_DOWN(value, modulus)\
  358. ( (modulus) & ((modulus) - 1) ? /* not a power of 2 */\
  359. (value) - (value) % (modulus) :\
  360. (value) & -(modulus) )
  361. #define ROUND_UP(value, modulus)\
  362. ( (modulus) & ((modulus) - 1) ? /* not a power of 2 */\
  363. ((value) + ((modulus) - 1)) / (modulus) * (modulus) :\
  364. ((value) + ((modulus) - 1)) & -(modulus) )
  365. /* Backward compatibility */
  366. #define round_up(v, m) ROUND_UP(v, m)
  367. #define round_down(v, m) ROUND_DOWN(v, m)
  368. /*
  369. * In pre-ANSI C, float parameters get converted to double.
  370. * However, if we pass a float to a function that has been declared
  371. * with a prototype, and the parameter has been declared as float,
  372. * the ANSI standard specifies that the parameter is left as float.
  373. * To avoid problems caused by missing prototypes,
  374. * we declare almost all float parameters as double.
  375. */
  376. typedef double floatp;
  377. /*
  378. * Because of C's strange insistence that ; is a terminator and not a
  379. * separator, compound statements {...} are not syntactically equivalent to
  380. * single statements. Therefore, we define here a compound-statement
  381. * construct that *is* syntactically equivalent to a single statement.
  382. * Usage is
  383. * BEGIN
  384. * ...statements...
  385. * END
  386. */
  387. #define BEGIN do {
  388. #define END } while (0)
  389. /*
  390. * Define a handy macro for a statement that does nothing.
  391. * We can't just use an empty statement, since this upsets some compilers.
  392. */
  393. #ifndef DO_NOTHING
  394. # define DO_NOTHING BEGIN END
  395. #endif
  396. /*
  397. * For accountability, debugging, and error messages, we pass a client
  398. * identification string to alloc and free, and possibly other places as
  399. * well. Define the type for these strings.
  400. */
  401. typedef const char *client_name_t;
  402. /****** WHAT TO DO ABOUT client_name_string ? ******/
  403. #define client_name_string(cname) (cname)
  404. /*
  405. * If we are debugging, make all static variables and procedures public
  406. * so they get passed through the linker.
  407. */
  408. #define public /* */
  409. /*
  410. * We separate out the definition of private this way so that
  411. * we can temporarily #undef it to handle the X Windows headers,
  412. * which define a member named private.
  413. */
  414. #ifdef NOPRIVATE
  415. # define private_ /* */
  416. #else
  417. # define private_ static
  418. #endif
  419. #define private private_
  420. /*
  421. * Define the now-deprecated Pn macros for pre-ANSI compiler compatibility.
  422. * The double-inclusion check is replicated here because of the way that
  423. * jconfig.h is constructed.
  424. */
  425. #ifndef stdpn_INCLUDED
  426. # define stdpn_INCLUDED
  427. #include "stdpn.h"
  428. #endif /* stdpn_INCLUDED */
  429. /*
  430. * Define success and failure codes for 'exit'. The only system on which
  431. * they are different is VMS with older DEC C versions. We aren't sure
  432. * in what version DEC C started being compatible with the rest of the
  433. * world, and we don't know what the story is with VAX C. If you have
  434. * problems, uncomment the following line or add -DOLD_VMS_C to the C
  435. * command line.
  436. */
  437. /*#define OLD_VMS_C*/
  438. #if defined(VMS)
  439. # define exit_FAILED 18
  440. # if (defined(OLD_VMS_C) || !defined(__DECC))
  441. # define exit_OK 1
  442. # else
  443. # define exit_OK 0
  444. # endif
  445. #else
  446. # define exit_OK 0
  447. # define exit_FAILED 1
  448. #endif
  449. #endif /* stdpre_INCLUDED */
  450. /* Copyright (C) 1994, 1998 Aladdin Enterprises. All rights reserved.
  451. This software is provided AS-IS with no warranty, either express or
  452. implied.
  453. This software is distributed under license and may not be copied,
  454. modified or distributed except as expressly authorized under the terms
  455. of the license contained in the file LICENSE in this distribution.
  456. For more information about licensing, please refer to
  457. http://www.ghostscript.com/licensing/. For information on
  458. commercial licensing, go to http://www.artifex.com/licensing/ or
  459. contact Artifex Software, Inc., 101 Lucas Valley Road #110,
  460. San Rafael, CA 94903, U.S.A., +1(415)492-9861.
  461. */
  462. /* $Id: gsjconf.h,v 1.4 2002/02/21 22:24:52 giles Exp $ */
  463. /* jconfig.h file for Independent JPEG Group code */
  464. #ifndef gsjconf_INCLUDED
  465. # define gsjconf_INCLUDED
  466. /*
  467. * We should have the following here:
  468. #include "stdpre.h"
  469. * But because of the directory structure used to build the IJG library, we
  470. * actually concatenate stdpre.h on the front of this file instead to
  471. * construct the jconfig.h file used for the compilation.
  472. */
  473. #include "arch.h"
  474. /* See IJG's jconfig.doc for the contents of this file. */
  475. #ifdef __PROTOTYPES__
  476. # define HAVE_PROTOTYPES
  477. #endif
  478. #define HAVE_UNSIGNED_CHAR
  479. #define HAVE_UNSIGNED_SHORT
  480. #undef CHAR_IS_UNSIGNED
  481. #ifdef __STDC__ /* is this right? */
  482. # define HAVE_STDDEF_H
  483. # define HAVE_STDLIB_H
  484. #endif
  485. #undef NEED_BSD_STRINGS /* WRONG */
  486. #undef NEED_SYS_TYPES_H /* WRONG */
  487. #undef NEED_FAR_POINTERS
  488. #undef NEED_SHORT_EXTERNAL_NAMES
  489. #undef INCOMPLETE_TYPES_BROKEN
  490. /* The following is documented in jmemsys.h, not jconfig.doc. */
  491. #if ARCH_SIZEOF_INT <= 2
  492. # undef MAX_ALLOC_CHUNK
  493. # define MAX_ALLOC_CHUNK 0xfff0
  494. #endif
  495. #ifdef JPEG_INTERNALS
  496. #if ARCH_ARITH_RSHIFT == 0
  497. # define RIGHT_SHIFT_IS_UNSIGNED
  498. #else
  499. # undef RIGHT_SHIFT_IS_UNSIGNED
  500. #endif
  501. #endif /* JPEG_INTERNALS */
  502. #endif /* gsjconf_INCLUDED */