1 
2/* pngconf.h - machine-configurable file for libpng 
3 * 
4 * libpng version 1.6.37 
5 * 
6 * Copyright (c) 2018-2019 Cosmin Truta 
7 * Copyright (c) 1998-2002,2004,2006-2016,2018 Glenn Randers-Pehrson 
8 * Copyright (c) 1996-1997 Andreas Dilger 
9 * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. 
10 * 
11 * This code is released under the libpng license. 
12 * For conditions of distribution and use, see the disclaimer 
13 * and license in png.h 
14 * 
15 * Any machine specific code is near the front of this file, so if you 
16 * are configuring libpng for a machine, you may want to read the section 
17 * starting here down to where it starts to typedef png_color, png_text, 
18 * and png_info. 
19 */ 
20 
21#ifndef PNGCONF_H 
22#define PNGCONF_H 
23 
24#ifndef PNG_BUILDING_SYMBOL_TABLE /* else includes may cause problems */ 
25 
26/* From libpng 1.6.0 libpng requires an ANSI X3.159-1989 ("ISOC90") compliant C 
27 * compiler for correct compilation. The following header files are required by 
28 * the standard. If your compiler doesn't provide these header files, or they 
29 * do not match the standard, you will need to provide/improve them. 
30 */ 
31#include <limits.h> 
32#include <stddef.h> 
33 
34/* Library header files. These header files are all defined by ISOC90; libpng 
35 * expects conformant implementations, however, an ISOC90 conformant system need 
36 * not provide these header files if the functionality cannot be implemented. 
37 * In this case it will be necessary to disable the relevant parts of libpng in 
38 * the build of pnglibconf.h. 
39 * 
40 * Prior to 1.6.0 string.h was included here; the API changes in 1.6.0 to not 
41 * include this unnecessary header file. 
42 */ 
43 
44#ifdef PNG_STDIO_SUPPORTED 
45 /* Required for the definition of FILE: */ 
46# include <stdio.h> 
47#endif 
48 
49#ifdef PNG_SETJMP_SUPPORTED 
50 /* Required for the definition of jmp_buf and the declaration of longjmp: */ 
51# include <setjmp.h> 
52#endif 
53 
54#ifdef PNG_CONVERT_tIME_SUPPORTED 
55 /* Required for struct tm: */ 
56# include <time.h> 
57#endif 
58 
59#endif /* PNG_BUILDING_SYMBOL_TABLE */ 
60 
61/* Prior to 1.6.0, it was possible to turn off 'const' in declarations, 
62 * using PNG_NO_CONST. This is no longer supported. 
63 */ 
64#define PNG_CONST const /* backward compatibility only */ 
65 
66/* This controls optimization of the reading of 16-bit and 32-bit 
67 * values from PNG files. It can be set on a per-app-file basis: it 
68 * just changes whether a macro is used when the function is called. 
69 * The library builder sets the default; if read functions are not 
70 * built into the library the macro implementation is forced on. 
71 */ 
72#ifndef PNG_READ_INT_FUNCTIONS_SUPPORTED 
73# define PNG_USE_READ_MACROS 
74#endif 
75#if !defined(PNG_NO_USE_READ_MACROS) && !defined(PNG_USE_READ_MACROS) 
76# if PNG_DEFAULT_READ_MACROS 
77# define PNG_USE_READ_MACROS 
78# endif 
79#endif 
80 
81/* COMPILER SPECIFIC OPTIONS. 
82 * 
83 * These options are provided so that a variety of difficult compilers 
84 * can be used. Some are fixed at build time (e.g. PNG_API_RULE 
85 * below) but still have compiler specific implementations, others 
86 * may be changed on a per-file basis when compiling against libpng. 
87 */ 
88 
89/* The PNGARG macro was used in versions of libpng prior to 1.6.0 to protect 
90 * against legacy (pre ISOC90) compilers that did not understand function 
91 * prototypes. It is not required for modern C compilers. 
92 */ 
93#ifndef PNGARG 
94# define PNGARG(arglist) arglist 
95#endif 
96 
97/* Function calling conventions. 
98 * ============================= 
99 * Normally it is not necessary to specify to the compiler how to call 
100 * a function - it just does it - however on x86 systems derived from 
101 * Microsoft and Borland C compilers ('IBM PC', 'DOS', 'Windows' systems 
102 * and some others) there are multiple ways to call a function and the 
103 * default can be changed on the compiler command line. For this reason 
104 * libpng specifies the calling convention of every exported function and 
105 * every function called via a user supplied function pointer. This is 
106 * done in this file by defining the following macros: 
107 * 
108 * PNGAPI Calling convention for exported functions. 
109 * PNGCBAPI Calling convention for user provided (callback) functions. 
110 * PNGCAPI Calling convention used by the ANSI-C library (required 
111 * for longjmp callbacks and sometimes used internally to 
112 * specify the calling convention for zlib). 
113 * 
114 * These macros should never be overridden. If it is necessary to 
115 * change calling convention in a private build this can be done 
116 * by setting PNG_API_RULE (which defaults to 0) to one of the values 
117 * below to select the correct 'API' variants. 
118 * 
119 * PNG_API_RULE=0 Use PNGCAPI - the 'C' calling convention - throughout. 
120 * This is correct in every known environment. 
121 * PNG_API_RULE=1 Use the operating system convention for PNGAPI and 
122 * the 'C' calling convention (from PNGCAPI) for 
123 * callbacks (PNGCBAPI). This is no longer required 
124 * in any known environment - if it has to be used 
125 * please post an explanation of the problem to the 
126 * libpng mailing list. 
127 * 
128 * These cases only differ if the operating system does not use the C 
129 * calling convention, at present this just means the above cases 
130 * (x86 DOS/Windows systems) and, even then, this does not apply to 
131 * Cygwin running on those systems. 
132 * 
133 * Note that the value must be defined in pnglibconf.h so that what 
134 * the application uses to call the library matches the conventions 
135 * set when building the library. 
136 */ 
137 
138/* Symbol export 
139 * ============= 
140 * When building a shared library it is almost always necessary to tell 
141 * the compiler which symbols to export. The png.h macro 'PNG_EXPORT' 
142 * is used to mark the symbols. On some systems these symbols can be 
143 * extracted at link time and need no special processing by the compiler, 
144 * on other systems the symbols are flagged by the compiler and just 
145 * the declaration requires a special tag applied (unfortunately) in a 
146 * compiler dependent way. Some systems can do either. 
147 * 
148 * A small number of older systems also require a symbol from a DLL to 
149 * be flagged to the program that calls it. This is a problem because 
150 * we do not know in the header file included by application code that 
151 * the symbol will come from a shared library, as opposed to a statically 
152 * linked one. For this reason the application must tell us by setting 
153 * the magic flag PNG_USE_DLL to turn on the special processing before 
154 * it includes png.h. 
155 * 
156 * Four additional macros are used to make this happen: 
157 * 
158 * PNG_IMPEXP The magic (if any) to cause a symbol to be exported from 
159 * the build or imported if PNG_USE_DLL is set - compiler 
160 * and system specific. 
161 * 
162 * PNG_EXPORT_TYPE(type) A macro that pre or appends PNG_IMPEXP to 
163 * 'type', compiler specific. 
164 * 
165 * PNG_DLL_EXPORT Set to the magic to use during a libpng build to 
166 * make a symbol exported from the DLL. Not used in the 
167 * public header files; see pngpriv.h for how it is used 
168 * in the libpng build. 
169 * 
170 * PNG_DLL_IMPORT Set to the magic to force the libpng symbols to come 
171 * from a DLL - used to define PNG_IMPEXP when 
172 * PNG_USE_DLL is set. 
173 */ 
174 
175/* System specific discovery. 
176 * ========================== 
177 * This code is used at build time to find PNG_IMPEXP, the API settings 
178 * and PNG_EXPORT_TYPE(), it may also set a macro to indicate the DLL 
179 * import processing is possible. On Windows systems it also sets 
180 * compiler-specific macros to the values required to change the calling 
181 * conventions of the various functions. 
182 */ 
183#if defined(_Windows) || defined(_WINDOWS) || defined(WIN32) ||\ 
184 defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) 
185 /* Windows system (DOS doesn't support DLLs). Includes builds under Cygwin or 
186 * MinGW on any architecture currently supported by Windows. Also includes 
187 * Watcom builds but these need special treatment because they are not 
188 * compatible with GCC or Visual C because of different calling conventions. 
189 */ 
190# if PNG_API_RULE == 2 
191 /* If this line results in an error, either because __watcall is not 
192 * understood or because of a redefine just below you cannot use *this* 
193 * build of the library with the compiler you are using. *This* build was 
194 * build using Watcom and applications must also be built using Watcom! 
195 */ 
196# define PNGCAPI __watcall 
197# endif 
198 
199# if defined(__GNUC__) || (defined(_MSC_VER) && (_MSC_VER >= 800)) 
200# define PNGCAPI __cdecl 
201# if PNG_API_RULE == 1 
202 /* If this line results in an error __stdcall is not understood and 
203 * PNG_API_RULE should not have been set to '1'. 
204 */ 
205# define PNGAPI __stdcall 
206# endif 
207# else 
208 /* An older compiler, or one not detected (erroneously) above, 
209 * if necessary override on the command line to get the correct 
210 * variants for the compiler. 
211 */ 
212# ifndef PNGCAPI 
213# define PNGCAPI _cdecl 
214# endif 
215# if PNG_API_RULE == 1 && !defined(PNGAPI) 
216# define PNGAPI _stdcall 
217# endif 
218# endif /* compiler/api */ 
219 
220 /* NOTE: PNGCBAPI always defaults to PNGCAPI. */ 
221 
222# if defined(PNGAPI) && !defined(PNG_USER_PRIVATEBUILD) 
223# error "PNG_USER_PRIVATEBUILD must be defined if PNGAPI is changed" 
224# endif 
225 
226# if (defined(_MSC_VER) && _MSC_VER < 800) ||\ 
227 (defined(__BORLANDC__) && __BORLANDC__ < 0x500) 
228 /* older Borland and MSC 
229 * compilers used '__export' and required this to be after 
230 * the type. 
231 */ 
232# ifndef PNG_EXPORT_TYPE 
233# define PNG_EXPORT_TYPE(type) type PNG_IMPEXP 
234# endif 
235# define PNG_DLL_EXPORT __export 
236# else /* newer compiler */ 
237# define PNG_DLL_EXPORT __declspec(dllexport) 
238# ifndef PNG_DLL_IMPORT 
239# define PNG_DLL_IMPORT __declspec(dllimport) 
240# endif 
241# endif /* compiler */ 
242 
243#else /* !Windows */ 
244# if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__) 
245# define PNGAPI _System 
246# else /* !Windows/x86 && !OS/2 */ 
247 /* Use the defaults, or define PNG*API on the command line (but 
248 * this will have to be done for every compile!) 
249 */ 
250# endif /* other system, !OS/2 */ 
251#endif /* !Windows/x86 */ 
252 
253/* Now do all the defaulting . */ 
254#ifndef PNGCAPI 
255# define PNGCAPI 
256#endif 
257#ifndef PNGCBAPI 
258# define PNGCBAPI PNGCAPI 
259#endif 
260#ifndef PNGAPI 
261# define PNGAPI PNGCAPI 
262#endif 
263 
264/* PNG_IMPEXP may be set on the compilation system command line or (if not set) 
265 * then in an internal header file when building the library, otherwise (when 
266 * using the library) it is set here. 
267 */ 
268#ifndef PNG_IMPEXP 
269# if defined(PNG_USE_DLL) && defined(PNG_DLL_IMPORT) 
270 /* This forces use of a DLL, disallowing static linking */ 
271# define PNG_IMPEXP PNG_DLL_IMPORT 
272# endif 
273 
274# ifndef PNG_IMPEXP 
275# define PNG_IMPEXP 
276# endif 
277#endif 
278 
279/* In 1.5.2 the definition of PNG_FUNCTION has been changed to always treat 
280 * 'attributes' as a storage class - the attributes go at the start of the 
281 * function definition, and attributes are always appended regardless of the 
282 * compiler. This considerably simplifies these macros but may cause problems 
283 * if any compilers both need function attributes and fail to handle them as 
284 * a storage class (this is unlikely.) 
285 */ 
286#ifndef PNG_FUNCTION 
287# define PNG_FUNCTION(type, name, args, attributes) attributes type name args 
288#endif 
289 
290#ifndef PNG_EXPORT_TYPE 
291# define PNG_EXPORT_TYPE(type) PNG_IMPEXP type 
292#endif 
293 
294 /* The ordinal value is only relevant when preprocessing png.h for symbol 
295 * table entries, so we discard it here. See the .dfn files in the 
296 * scripts directory. 
297 */ 
298 
299#ifndef PNG_EXPORTA 
300# define PNG_EXPORTA(ordinal, type, name, args, attributes) \ 
301 PNG_FUNCTION(PNG_EXPORT_TYPE(type), (PNGAPI name), PNGARG(args), \ 
302 PNG_LINKAGE_API attributes) 
303#endif 
304 
305/* ANSI-C (C90) does not permit a macro to be invoked with an empty argument, 
306 * so make something non-empty to satisfy the requirement: 
307 */ 
308#define PNG_EMPTY /*empty list*/ 
309 
310#define PNG_EXPORT(ordinal, type, name, args) \ 
311 PNG_EXPORTA(ordinal, type, name, args, PNG_EMPTY) 
312 
313/* Use PNG_REMOVED to comment out a removed interface. */ 
314#ifndef PNG_REMOVED 
315# define PNG_REMOVED(ordinal, type, name, args, attributes) 
316#endif 
317 
318#ifndef PNG_CALLBACK 
319# define PNG_CALLBACK(type, name, args) type (PNGCBAPI name) PNGARG(args) 
320#endif 
321 
322/* Support for compiler specific function attributes. These are used 
323 * so that where compiler support is available incorrect use of API 
324 * functions in png.h will generate compiler warnings. 
325 * 
326 * Added at libpng-1.2.41. 
327 */ 
328 
329#ifndef PNG_NO_PEDANTIC_WARNINGS 
330# ifndef PNG_PEDANTIC_WARNINGS_SUPPORTED 
331# define PNG_PEDANTIC_WARNINGS_SUPPORTED 
332# endif 
333#endif 
334 
335#ifdef PNG_PEDANTIC_WARNINGS_SUPPORTED 
336 /* Support for compiler specific function attributes. These are used 
337 * so that where compiler support is available, incorrect use of API 
338 * functions in png.h will generate compiler warnings. Added at libpng 
339 * version 1.2.41. Disabling these removes the warnings but may also produce 
340 * less efficient code. 
341 */ 
342# if defined(__clang__) && defined(__has_attribute) 
343 /* Clang defines both __clang__ and __GNUC__. Check __clang__ first. */ 
344# if !defined(PNG_USE_RESULT) && __has_attribute(__warn_unused_result__) 
345# define PNG_USE_RESULT __attribute__((__warn_unused_result__)) 
346# endif 
347# if !defined(PNG_NORETURN) && __has_attribute(__noreturn__) 
348# define PNG_NORETURN __attribute__((__noreturn__)) 
349# endif 
350# if !defined(PNG_ALLOCATED) && __has_attribute(__malloc__) 
351# define PNG_ALLOCATED __attribute__((__malloc__)) 
352# endif 
353# if !defined(PNG_DEPRECATED) && __has_attribute(__deprecated__) 
354# define PNG_DEPRECATED __attribute__((__deprecated__)) 
355# endif 
356# if !defined(PNG_PRIVATE) 
357# ifdef __has_extension 
358# if __has_extension(attribute_unavailable_with_message) 
359# define PNG_PRIVATE __attribute__((__unavailable__(\ 
360 "This function is not exported by libpng."))) 
361# endif 
362# endif 
363# endif 
364# ifndef PNG_RESTRICT 
365# define PNG_RESTRICT __restrict 
366# endif 
367 
368# elif defined(__GNUC__) 
369# ifndef PNG_USE_RESULT 
370# define PNG_USE_RESULT __attribute__((__warn_unused_result__)) 
371# endif 
372# ifndef PNG_NORETURN 
373# define PNG_NORETURN __attribute__((__noreturn__)) 
374# endif 
375# if __GNUC__ >= 3 
376# ifndef PNG_ALLOCATED 
377# define PNG_ALLOCATED __attribute__((__malloc__)) 
378# endif 
379# ifndef PNG_DEPRECATED 
380# define PNG_DEPRECATED __attribute__((__deprecated__)) 
381# endif 
382# ifndef PNG_PRIVATE 
383# if 0 /* Doesn't work so we use deprecated instead*/ 
384# define PNG_PRIVATE \ 
385 __attribute__((warning("This function is not exported by libpng."))) 
386# else 
387# define PNG_PRIVATE \ 
388 __attribute__((__deprecated__)) 
389# endif 
390# endif 
391# if ((__GNUC__ > 3) || !defined(__GNUC_MINOR__) || (__GNUC_MINOR__ >= 1)) 
392# ifndef PNG_RESTRICT 
393# define PNG_RESTRICT __restrict 
394# endif 
395# endif /* __GNUC__.__GNUC_MINOR__ > 3.0 */ 
396# endif /* __GNUC__ >= 3 */ 
397 
398# elif defined(_MSC_VER) && (_MSC_VER >= 1300) 
399# ifndef PNG_USE_RESULT 
400# define PNG_USE_RESULT /* not supported */ 
401# endif 
402# ifndef PNG_NORETURN 
403# define PNG_NORETURN __declspec(noreturn) 
404# endif 
405# ifndef PNG_ALLOCATED 
406# if (_MSC_VER >= 1400) 
407# define PNG_ALLOCATED __declspec(restrict) 
408# endif 
409# endif 
410# ifndef PNG_DEPRECATED 
411# define PNG_DEPRECATED __declspec(deprecated) 
412# endif 
413# ifndef PNG_PRIVATE 
414# define PNG_PRIVATE __declspec(deprecated) 
415# endif 
416# ifndef PNG_RESTRICT 
417# if (_MSC_VER >= 1400) 
418# define PNG_RESTRICT __restrict 
419# endif 
420# endif 
421 
422# elif defined(__WATCOMC__) 
423# ifndef PNG_RESTRICT 
424# define PNG_RESTRICT __restrict 
425# endif 
426# endif 
427#endif /* PNG_PEDANTIC_WARNINGS */ 
428 
429#ifndef PNG_DEPRECATED 
430# define PNG_DEPRECATED /* Use of this function is deprecated */ 
431#endif 
432#ifndef PNG_USE_RESULT 
433# define PNG_USE_RESULT /* The result of this function must be checked */ 
434#endif 
435#ifndef PNG_NORETURN 
436# define PNG_NORETURN /* This function does not return */ 
437#endif 
438#ifndef PNG_ALLOCATED 
439# define PNG_ALLOCATED /* The result of the function is new memory */ 
440#endif 
441#ifndef PNG_PRIVATE 
442# define PNG_PRIVATE /* This is a private libpng function */ 
443#endif 
444#ifndef PNG_RESTRICT 
445# define PNG_RESTRICT /* The C99 "restrict" feature */ 
446#endif 
447 
448#ifndef PNG_FP_EXPORT /* A floating point API. */ 
449# ifdef PNG_FLOATING_POINT_SUPPORTED 
450# define PNG_FP_EXPORT(ordinal, type, name, args)\ 
451 PNG_EXPORT(ordinal, type, name, args); 
452# else /* No floating point APIs */ 
453# define PNG_FP_EXPORT(ordinal, type, name, args) 
454# endif 
455#endif 
456#ifndef PNG_FIXED_EXPORT /* A fixed point API. */ 
457# ifdef PNG_FIXED_POINT_SUPPORTED 
458# define PNG_FIXED_EXPORT(ordinal, type, name, args)\ 
459 PNG_EXPORT(ordinal, type, name, args); 
460# else /* No fixed point APIs */ 
461# define PNG_FIXED_EXPORT(ordinal, type, name, args) 
462# endif 
463#endif 
464 
465#ifndef PNG_BUILDING_SYMBOL_TABLE 
466/* Some typedefs to get us started. These should be safe on most of the common 
467 * platforms. 
468 * 
469 * png_uint_32 and png_int_32 may, currently, be larger than required to hold a 
470 * 32-bit value however this is not normally advisable. 
471 * 
472 * png_uint_16 and png_int_16 should always be two bytes in size - this is 
473 * verified at library build time. 
474 * 
475 * png_byte must always be one byte in size. 
476 * 
477 * The checks below use constants from limits.h, as defined by the ISOC90 
478 * standard. 
479 */ 
480#if CHAR_BIT == 8 && UCHAR_MAX == 255 
481 typedef unsigned char png_byte
482#else 
483# error "libpng requires 8-bit bytes" 
484#endif 
485 
486#if INT_MIN == -32768 && INT_MAX == 32767 
487 typedef int png_int_16; 
488#elif SHRT_MIN == -32768 && SHRT_MAX == 32767 
489 typedef short png_int_16
490#else 
491# error "libpng requires a signed 16-bit type" 
492#endif 
493 
494#if UINT_MAX == 65535 
495 typedef unsigned int png_uint_16; 
496#elif USHRT_MAX == 65535 
497 typedef unsigned short png_uint_16
498#else 
499# error "libpng requires an unsigned 16-bit type" 
500#endif 
501 
502#if INT_MIN < -2147483646 && INT_MAX > 2147483646 
503 typedef int png_int_32
504#elif LONG_MIN < -2147483646 && LONG_MAX > 2147483646 
505 typedef long int png_int_32; 
506#else 
507# error "libpng requires a signed 32-bit (or more) type" 
508#endif 
509 
510#if UINT_MAX > 4294967294U 
511 typedef unsigned int png_uint_32
512#elif ULONG_MAX > 4294967294U 
513 typedef unsigned long int png_uint_32; 
514#else 
515# error "libpng requires an unsigned 32-bit (or more) type" 
516#endif 
517 
518/* Prior to 1.6.0, it was possible to disable the use of size_t and ptrdiff_t. 
519 * From 1.6.0 onwards, an ISO C90 compiler, as well as a standard-compliant 
520 * behavior of sizeof and ptrdiff_t are required. 
521 * The legacy typedefs are provided here for backwards compatibility. 
522 */ 
523typedef size_t png_size_t
524typedef ptrdiff_t png_ptrdiff_t
525 
526/* libpng needs to know the maximum value of 'size_t' and this controls the 
527 * definition of png_alloc_size_t, below. This maximum value of size_t limits 
528 * but does not control the maximum allocations the library makes - there is 
529 * direct application control of this through png_set_user_limits(). 
530 */ 
531#ifndef PNG_SMALL_SIZE_T 
532 /* Compiler specific tests for systems where size_t is known to be less than 
533 * 32 bits (some of these systems may no longer work because of the lack of 
534 * 'far' support; see above.) 
535 */ 
536# if (defined(__TURBOC__) && !defined(__FLAT__)) ||\ 
537 (defined(_MSC_VER) && defined(MAXSEG_64K)) 
538# define PNG_SMALL_SIZE_T 
539# endif 
540#endif 
541 
542/* png_alloc_size_t is guaranteed to be no smaller than size_t, and no smaller 
543 * than png_uint_32. Casts from size_t or png_uint_32 to png_alloc_size_t are 
544 * not necessary; in fact, it is recommended not to use them at all, so that 
545 * the compiler can complain when something turns out to be problematic. 
546 * 
547 * Casts in the other direction (from png_alloc_size_t to size_t or 
548 * png_uint_32) should be explicitly applied; however, we do not expect to 
549 * encounter practical situations that require such conversions. 
550 * 
551 * PNG_SMALL_SIZE_T must be defined if the maximum value of size_t is less than 
552 * 4294967295 - i.e. less than the maximum value of png_uint_32. 
553 */ 
554#ifdef PNG_SMALL_SIZE_T 
555 typedef png_uint_32 png_alloc_size_t; 
556#else 
557 typedef size_t png_alloc_size_t
558#endif 
559 
560/* Prior to 1.6.0 libpng offered limited support for Microsoft C compiler 
561 * implementations of Intel CPU specific support of user-mode segmented address 
562 * spaces, where 16-bit pointers address more than 65536 bytes of memory using 
563 * separate 'segment' registers. The implementation requires two different 
564 * types of pointer (only one of which includes the segment value.) 
565 * 
566 * If required this support is available in version 1.2 of libpng and may be 
567 * available in versions through 1.5, although the correctness of the code has 
568 * not been verified recently. 
569 */ 
570 
571/* Typedef for floating-point numbers that are converted to fixed-point with a 
572 * multiple of 100,000, e.g., gamma 
573 */ 
574typedef png_int_32 png_fixed_point
575 
576/* Add typedefs for pointers */ 
577typedef void * png_voidp
578typedef const void * png_const_voidp
579typedef png_byte * png_bytep
580typedef const png_byte * png_const_bytep
581typedef png_uint_32 * png_uint_32p
582typedef const png_uint_32 * png_const_uint_32p
583typedef png_int_32 * png_int_32p
584typedef const png_int_32 * png_const_int_32p
585typedef png_uint_16 * png_uint_16p
586typedef const png_uint_16 * png_const_uint_16p
587typedef png_int_16 * png_int_16p
588typedef const png_int_16 * png_const_int_16p
589typedef char * png_charp
590typedef const char * png_const_charp
591typedef png_fixed_point * png_fixed_point_p
592typedef const png_fixed_point * png_const_fixed_point_p
593typedef size_t * png_size_tp
594typedef const size_t * png_const_size_tp
595 
596#ifdef PNG_STDIO_SUPPORTED 
597typedef FILE * png_FILE_p
598#endif 
599 
600#ifdef PNG_FLOATING_POINT_SUPPORTED 
601typedef double * png_doublep
602typedef const double * png_const_doublep
603#endif 
604 
605/* Pointers to pointers; i.e. arrays */ 
606typedef png_byte * * png_bytepp
607typedef png_uint_32 * * png_uint_32pp
608typedef png_int_32 * * png_int_32pp
609typedef png_uint_16 * * png_uint_16pp
610typedef png_int_16 * * png_int_16pp
611typedef const char * * png_const_charpp
612typedef char * * png_charpp
613typedef png_fixed_point * * png_fixed_point_pp
614#ifdef PNG_FLOATING_POINT_SUPPORTED 
615typedef double * * png_doublepp
616#endif 
617 
618/* Pointers to pointers to pointers; i.e., pointer to array */ 
619typedef char * * * png_charppp
620 
621#endif /* PNG_BUILDING_SYMBOL_TABLE */ 
622 
623#endif /* PNGCONF_H */ 
624