source: trunk/third/firefox/jpeg/jinclude.h @ 21695

Revision 21695, 3.2 KB checked in by rbasch, 20 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r21694, which included commits to RCS files with non-trunk default branches.
Line 
1/*
2 * jinclude.h
3 *
4 * Copyright (C) 1991-1994, Thomas G. Lane.
5 * This file is part of the Independent JPEG Group's software.
6 * For conditions of distribution and use, see the accompanying README file.
7 *
8 * This file exists to provide a single place to fix any problems with
9 * including the wrong system include files.  (Common problems are taken
10 * care of by the standard jconfig symbols, but on really weird systems
11 * you may have to edit this file.)
12 *
13 * NOTE: this file is NOT intended to be included by applications using the
14 * JPEG library.  Most applications need only include jpeglib.h.
15 */
16
17
18/* Include auto-config file to find out which system include files we need. */
19
20#include "jconfig.h"            /* auto configuration options */
21#define JCONFIG_INCLUDED        /* so that jpeglib.h doesn't do it again */
22
23/*
24 * We need the NULL macro and size_t typedef.
25 * On an ANSI-conforming system it is sufficient to include <stddef.h>.
26 * Otherwise, we get them from <stdlib.h> or <stdio.h>; we may have to
27 * pull in <sys/types.h> as well.
28 * Note that the core JPEG library does not require <stdio.h>;
29 * only the default error handler and data source/destination modules do.
30 * But we must pull it in because of the references to FILE in jpeglib.h.
31 * You can remove those references if you want to compile without <stdio.h>.
32 */
33
34#ifdef HAVE_STDDEF_H
35#include <stddef.h>
36#endif
37
38#ifdef HAVE_STDLIB_H
39#include <stdlib.h>
40#endif
41
42#ifdef NEED_SYS_TYPES_H
43#include <sys/types.h>
44#endif
45
46#include <stdio.h>
47
48/*
49 * We need memory copying and zeroing functions, plus strncpy().
50 * ANSI and System V implementations declare these in <string.h>.
51 * BSD doesn't have the mem() functions, but it does have bcopy()/bzero().
52 * Some systems may declare memset and memcpy in <memory.h>.
53 *
54 * NOTE: we assume the size parameters to these functions are of type size_t.
55 * Change the casts in these macros if not!
56 */
57
58#ifdef NEED_BSD_STRINGS
59
60#include <strings.h>
61#define MEMZERO(target,size)    bzero((void *)(target), (size_t)(size))
62#define MEMCOPY(dest,src,size)  bcopy((const void *)(src), (void *)(dest), (size_t)(size))
63
64#else /* not BSD, assume ANSI/SysV string lib */
65
66#include <string.h>
67#define MEMZERO(target,size)    memset((void *)(target), 0, (size_t)(size))
68#define MEMCOPY(dest,src,size)  memcpy((void *)(dest), (const void *)(src), (size_t)(size))
69
70#endif
71
72/*
73 * In ANSI C, and indeed any rational implementation, size_t is also the
74 * type returned by sizeof().  However, it seems there are some irrational
75 * implementations out there, in which sizeof() returns an int even though
76 * size_t is defined as long or unsigned long.  To ensure consistent results
77 * we always use this SIZEOF() macro in place of using sizeof() directly.
78 */
79
80#define SIZEOF(object)  ((size_t) sizeof(object))
81
82/*
83 * The modules that use fread() and fwrite() always invoke them through
84 * these macros.  On some systems you may need to twiddle the argument casts.
85 * CAUTION: argument order is different from underlying functions!
86 */
87
88#define JFREAD(file,buf,sizeofbuf)  \
89  ((size_t) fread((void *) (buf), (size_t) 1, (size_t) (sizeofbuf), (file)))
90#define JFWRITE(file,buf,sizeofbuf)  \
91  ((size_t) fwrite((const void *) (buf), (size_t) 1, (size_t) (sizeofbuf), (file)))
Note: See TracBrowser for help on using the repository browser.