19f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* 29f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * jinclude.h 39f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * 49f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Copyright (C) 1991-1994, Thomas G. Lane. 59f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * This file is part of the Independent JPEG Group's software. 69f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * For conditions of distribution and use, see the accompanying README file. 79f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * 89f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * This file exists to provide a single place to fix any problems with 99f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * including the wrong system include files. (Common problems are taken 109f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * care of by the standard jconfig symbols, but on really weird systems 119f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * you may have to edit this file.) 129f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * 139f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * NOTE: this file is NOT intended to be included by applications using the 149f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * JPEG library. Most applications need only include jpeglib.h. 159f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 169f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 179f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 189f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Include auto-config file to find out which system include files we need. */ 199f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 209f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#include "jconfig.h" /* auto configuration options */ 219f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define JCONFIG_INCLUDED /* so that jpeglib.h doesn't do it again */ 229f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 239f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* 249f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * We need the NULL macro and size_t typedef. 259f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * On an ANSI-conforming system it is sufficient to include <stddef.h>. 269f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Otherwise, we get them from <stdlib.h> or <stdio.h>; we may have to 279f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * pull in <sys/types.h> as well. 289f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Note that the core JPEG library does not require <stdio.h>; 299f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * only the default error handler and data source/destination modules do. 309f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * But we must pull it in because of the references to FILE in jpeglib.h. 319f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * You can remove those references if you want to compile without <stdio.h>. 329f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 339f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 349f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifdef HAVE_STDDEF_H 359f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#include <stddef.h> 369f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif 379f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 389f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifdef HAVE_STDLIB_H 399f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#include <stdlib.h> 409f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif 419f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 429f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifdef NEED_SYS_TYPES_H 439f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#include <sys/types.h> 449f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif 459f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 469f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#include <stdio.h> 479f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 489f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* 499f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * We need memory copying and zeroing functions, plus strncpy(). 509f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * ANSI and System V implementations declare these in <string.h>. 519f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * BSD doesn't have the mem() functions, but it does have bcopy()/bzero(). 529f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Some systems may declare memset and memcpy in <memory.h>. 539f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * 549f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * NOTE: we assume the size parameters to these functions are of type size_t. 559f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Change the casts in these macros if not! 569f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 579f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 589f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifdef NEED_BSD_STRINGS 599f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 609f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#include <strings.h> 619f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define MEMZERO(target,size) bzero((void *)(target), (size_t)(size)) 629f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define MEMCOPY(dest,src,size) bcopy((const void *)(src), (void *)(dest), (size_t)(size)) 639f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 649f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#else /* not BSD, assume ANSI/SysV string lib */ 659f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 669f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#include <string.h> 679f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define MEMZERO(target,size) memset((void *)(target), 0, (size_t)(size)) 689f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define MEMCOPY(dest,src,size) memcpy((void *)(dest), (const void *)(src), (size_t)(size)) 699f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 709f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif 719f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 729f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* 739f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * In ANSI C, and indeed any rational implementation, size_t is also the 749f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * type returned by sizeof(). However, it seems there are some irrational 759f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * implementations out there, in which sizeof() returns an int even though 769f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * size_t is defined as long or unsigned long. To ensure consistent results 779f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * we always use this SIZEOF() macro in place of using sizeof() directly. 789f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 799f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 809f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define SIZEOF(object) ((size_t) sizeof(object)) 819f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 829f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* 839f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * The modules that use fread() and fwrite() always invoke them through 849f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * these macros. On some systems you may need to twiddle the argument casts. 859f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * CAUTION: argument order is different from underlying functions! 869f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 879f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 889f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define JFREAD(file,buf,sizeofbuf) \ 899f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project ((size_t) fread((void *) (buf), (size_t) 1, (size_t) (sizeofbuf), (file))) 909f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define JFWRITE(file,buf,sizeofbuf) \ 919f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project ((size_t) fwrite((const void *) (buf), (size_t) 1, (size_t) (sizeofbuf), (file))) 92