[devel] Revised PNG_EXPORT() macro and added PNG_EXPORTA() macro, with the

objective of simplifying and improving the cosmetic appearance of png.h.
diff --git a/png.h b/png.h
index 99395f2..17551c8 100644
--- a/png.h
+++ b/png.h
@@ -1,7 +1,7 @@
 
 /* png.h - header file for PNG reference library
  *
- * libpng version 1.5.0beta56 - December 6, 2010
+ * libpng version 1.5.0beta56 - December 7, 2010
  * Copyright (c) 1998-2010 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
  * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
@@ -11,7 +11,7 @@
  * Authors and maintainers:
  *   libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat
  *   libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger
- *   libpng versions 0.97, January 1998, through 1.5.0beta56 - December 6, 2010: Glenn
+ *   libpng versions 0.97, January 1998, through 1.5.0beta56 - December 7, 2010: Glenn
  *   See also "Contributing Authors", below.
  *
  * Note about libpng version numbers:
@@ -173,7 +173,7 @@
  *
  * This code is released under the libpng license.
  *
- * libpng versions 1.2.6, August 15, 2004, through 1.5.0beta56, December 6, 2010, are
+ * libpng versions 1.2.6, August 15, 2004, through 1.5.0beta56, December 7, 2010, are
  * Copyright (c) 2004, 2006-2010 Glenn Randers-Pehrson, and are
  * distributed according to the same disclaimer and license as libpng-1.2.5
  * with the following individual added to the list of Contributing Authors:
@@ -200,7 +200,7 @@
  *
  * libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are
  * Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson, and are
- * distributed according to the same disclaimer and license as libpng-0.96,
+ * distributed according to the same disclaimer and license as libpng-0.96, 
  * with the following individuals added to the list of Contributing Authors:
  *
  *    Tom Lane
@@ -209,7 +209,7 @@
  *
  * libpng versions 0.89, June 1996, through 0.96, May 1997, are
  * Copyright (c) 1996, 1997 Andreas Dilger
- * Distributed according to the same disclaimer and license as libpng-0.88,
+ * Distributed according to the same disclaimer and license as libpng-0.88, 
  * with the following individuals added to the list of Contributing Authors:
  *
  *    John Bowler
@@ -232,10 +232,10 @@
  *    Tim Wegner
  *
  * The PNG Reference Library is supplied "AS IS".  The Contributing Authors
- * and Group 42, Inc. disclaim all warranties, expressed or implied,
+ * and Group 42, Inc. disclaim all warranties, expressed or implied, 
  * including, without limitation, the warranties of merchantability and of
  * fitness for any purpose.  The Contributing Authors and Group 42, Inc.
- * assume no liability for direct, indirect, incidental, special, exemplary,
+ * assume no liability for direct, indirect, incidental, special, exemplary, 
  * or consequential damages, which may result from the use of the PNG
  * Reference Library, even if advised of the possibility of such damage.
  *
@@ -262,7 +262,7 @@
  * A "png_get_copyright" function is available, for convenient use in "about"
  * boxes and the like:
  *
- *     printf("%s",png_get_copyright(NULL));
+ *     printf("%s", png_get_copyright(NULL));
  *
  * Also, the PNG logo (in PNG format, of course) is supplied in the
  * files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31).
@@ -285,7 +285,7 @@
  * Y2K compliance in libpng:
  * =========================
  *
- *    December 6, 2010
+ *    December 7, 2010
  *
  *    Since the PNG Development group is an ad-hoc body, we can't make
  *    an official declaration.
@@ -321,7 +321,7 @@
  *    the full 4-digit year.  There is a possibility that applications using
  *    libpng are not passing 4-digit years into the png_convert_to_rfc_1123()
  *    function, or that they are incorrectly passing only a 2-digit year
- *    instead of "year - 1900" into the png_convert_from_struct_tm() function,
+ *    instead of "year - 1900" into the png_convert_from_struct_tm() function, 
  *    but this is not under our control.  The libpng documentation has always
  *    stated that it works with 4-digit years, and the APIs have been
  *    documented as such.
@@ -349,7 +349,7 @@
 /* Version information for png.h - this should match the version in png.c */
 #define PNG_LIBPNG_VER_STRING "1.5.0beta56"
 #define PNG_HEADER_VERSION_STRING \
-     " libpng version 1.5.0beta56 - December 6, 2010\n"
+     " libpng version 1.5.0beta56 - December 7, 2010\n"
 
 #define PNG_LIBPNG_VER_SONUM   15
 #define PNG_LIBPNG_VER_DLLNUM  15
@@ -577,12 +577,12 @@
 typedef png_sPLT_t FAR * FAR * png_sPLT_tpp;
 
 #ifdef PNG_TEXT_SUPPORTED
-/* png_text holds the contents of a text/ztxt/itxt chunk in a PNG file,
+/* png_text holds the contents of a text/ztxt/itxt chunk in a PNG file, 
  * and whether that contents is compressed or not.  The "key" field
  * points to a regular zero-terminated C string.  The "text", "lang", and
  * "lang_key" fields can be regular C strings, empty strings, or NULL pointers.
  * However, the * structure returned by png_get_text() will always contain
- * regular zero-terminated C strings (possibly empty), never NULL pointers,
+ * regular zero-terminated C strings (possibly empty), never NULL pointers, 
  * so they can be safely used in printf() and other string-handling functions.
  */
 typedef struct png_text_struct
@@ -789,34 +789,34 @@
 typedef struct png_struct_def png_struct;
 typedef png_struct FAR * png_structp;
 
-typedef PNG_CALLBACK(void, *png_error_ptr, (png_structp, png_const_charp),);
-typedef PNG_CALLBACK(void, *png_rw_ptr, (png_structp, png_bytep, png_size_t),);
-typedef PNG_CALLBACK(void, *png_flush_ptr, (png_structp),);
-typedef PNG_CALLBACK(void, *png_read_status_ptr, (png_structp, png_uint_32,
-    int),);
-typedef PNG_CALLBACK(void, *png_write_status_ptr, (png_structp, png_uint_32,
-    int),);
+typedef PNG_CALLBACK(void, *png_error_ptr, (png_structp, png_const_charp), );
+typedef PNG_CALLBACK(void, *png_rw_ptr, (png_structp, png_bytep, png_size_t), );
+typedef PNG_CALLBACK(void, *png_flush_ptr, (png_structp), );
+typedef PNG_CALLBACK(void, *png_read_status_ptr, (png_structp, png_uint_32, 
+    int), );
+typedef PNG_CALLBACK(void, *png_write_status_ptr, (png_structp, png_uint_32, 
+    int), );
 
 #ifdef PNG_PROGRESSIVE_READ_SUPPORTED
-typedef PNG_CALLBACK(void, *png_progressive_info_ptr,
-    (png_structp, png_infop),);
-typedef PNG_CALLBACK(void, *png_progressive_end_ptr, (png_structp, png_infop),);
-typedef PNG_CALLBACK(void, *png_progressive_row_ptr, (png_structp, png_bytep,
-    png_uint_32, int),);
+typedef PNG_CALLBACK(void, *png_progressive_info_ptr, 
+    (png_structp, png_infop), );
+typedef PNG_CALLBACK(void, *png_progressive_end_ptr, (png_structp, png_infop), );
+typedef PNG_CALLBACK(void, *png_progressive_row_ptr, (png_structp, png_bytep, 
+    png_uint_32, int), );
 #endif
 
 #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
     defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
-typedef PNG_CALLBACK(void, *png_user_transform_ptr, (png_structp, png_row_infop,
-    png_bytep),);
+typedef PNG_CALLBACK(void, *png_user_transform_ptr, (png_structp, png_row_infop, 
+    png_bytep), );
 #endif
 
 #ifdef PNG_USER_CHUNKS_SUPPORTED
-typedef PNG_CALLBACK(int, *png_user_chunk_ptr, (png_structp,
-    png_unknown_chunkp),);
+typedef PNG_CALLBACK(int, *png_user_chunk_ptr, (png_structp, 
+    png_unknown_chunkp), );
 #endif
 #ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED
-typedef PNG_CALLBACK(void, *png_unknown_chunk_ptr, (png_structp),);
+typedef PNG_CALLBACK(void, *png_unknown_chunk_ptr, (png_structp), );
 #endif
 #ifdef PNG_SETJMP_SUPPORTED
 /* This must match the function definition in <setjmp.h>, and the
@@ -836,7 +836,7 @@
  * your compiler.  This may be very difficult - try using a different compiler
  * to build the library!
  */
-typedef PNG_FUNCTION(void,(PNGCAPI *png_longjmp_ptr),PNGARG((jmp_buf, int)),
+typedef PNG_FUNCTION(void, (PNGCAPI *png_longjmp_ptr), PNGARG((jmp_buf, int)), 
    PNG_PTR_NORETURN);
 #endif
 
@@ -865,15 +865,15 @@
 #define PNG_FLAG_MNG_FILTER_64      0x04
 #define PNG_ALL_MNG_FEATURES        0x05
 
-/* NOTE: prior to 1.5 these functions had no 'API' style declaration,
+/* NOTE: prior to 1.5 these functions had no 'API' style declaration, 
  * this allowed the zlib default functions to be used on Windows
  * platforms.  In 1.5 the zlib default malloc (which just calls malloc and
  * ignores the first argument) should be completely compatible with the
  * following.
  */
-typedef PNG_CALLBACK(png_voidp, *png_malloc_ptr, (png_structp,
-    png_alloc_size_t),);
-typedef PNG_CALLBACK(void, *png_free_ptr, (png_structp, png_voidp),);
+typedef PNG_CALLBACK(png_voidp, *png_malloc_ptr, (png_structp, 
+    png_alloc_size_t), );
+typedef PNG_CALLBACK(void, *png_free_ptr, (png_structp, png_voidp), );
 
 typedef png_struct FAR * FAR * png_structpp;
 
@@ -883,84 +883,66 @@
  * full explanation, see example.c for the summary.  This just provides
  * a simple one line description of the use of each function.
  *
- * The PNG_EXPORT macro used below is defined in pngconf.h and in
- * the *.dfn files in the scripts directory.
+ * The PNG_EXPORT() and PNG_EXPORTA() macros used below are defined in
+ * pngconf.h and in the *.dfn files in the scripts directory.
  *
- *   PNG_EXPORT(type, name, (args), [attributes], ordinal);
- *
- *       type:       return type of the function
- *       name:       function name
- *       args:       function arguments, with types
- *       attributes: optional function attributes
- *       ordinal:    ordinal that is used while building
- *                   *.def files. The ordinal value is only
- *                   relevant when preprocessing png.h with
- *                   the *.dfn files for building symbol table
- *                   entries.
- *
- * For testing purposes, we also have
- *   PNG_EXPORTX(ordinal, type, name, (args));
+ *   PNG_EXPORT(ordinal, type, name, (args));
  *
  *       ordinal:    ordinal that is used while building
  *                   *.def files. The ordinal value is only
  *                   relevant when preprocessing png.h with
  *                   the *.dfn files for building symbol table
- *                   entries.
+ *                   entries, and are removed by pngconf.h.
  *       type:       return type of the function
  *       name:       function name
  *       args:       function arguments, with types
  *
- * and
+ * When we wish to append attributes to a function prototype we use
+ * the PNG_EXPORTA() macro instead.
+ *
  *   PNG_EXPORTA(ordinal, type, name, (args), attributes);
  *
- *       ordinal:    ordinal that is used while building
- *                   *.def files. The ordinal value is only
- *                   relevant when preprocessing png.h with
- *                   the *.dfn files for building symbol table
- *                   entries.
- *       type:       return type of the function
- *       name:       function name
- *       args:       function arguments, with types
+ *       ordinal, type, name, and args: same as in PNG_EXPORT().
  *       attributes: function attributes
- *
- * PNG_EXPORTX and PNG_EXPORTA are currently only used for the
- * first 10 headers, below.
  */
 
 /* Returns the version number of the library */
-PNG_EXPORTX(1,png_uint_32,png_access_version_number,(void));
+PNG_EXPORT(1, png_uint_32, png_access_version_number, (void));
 
 /* Tell lib we have already handled the first <num_bytes> magic bytes.
  * Handling more than 8 bytes from the beginning of the file is an error.
  */
-PNG_EXPORTX(2, void,png_set_sig_bytes,(png_structp png_ptr, int num_bytes));
+PNG_EXPORT(2, void, png_set_sig_bytes, (png_structp png_ptr, int num_bytes));
 
 /* Check sig[start] through sig[start + num_to_check - 1] to see if it's a
  * PNG file.  Returns zero if the supplied bytes match the 8-byte PNG
  * signature, and non-zero otherwise.  Having num_to_check == 0 or
  * start > 7 will always fail (ie return non-zero).
  */
-PNG_EXPORTX(3,int,png_sig_cmp,(png_const_bytep sig, png_size_t start,
+PNG_EXPORT(3, int, png_sig_cmp, (png_const_bytep sig, png_size_t start, 
     png_size_t num_to_check));
 
 /* Simple signature checking function.  This is the same as calling
  * png_check_sig(sig, n) := !png_sig_cmp(sig, 0, n).
  */
-#define png_check_sig(sig,n) !png_sig_cmp((sig), 0, (n))
+#define png_check_sig(sig, n) !png_sig_cmp((sig), 0, (n))
 
 /* Allocate and initialize png_ptr struct for reading, and any other memory. */
-PNG_EXPORTA(4, png_structp,png_create_read_struct,(png_const_charp user_png_ver,
-    png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warn_fn),
+PNG_EXPORTA(4, png_structp, png_create_read_struct,
+    (png_const_charp user_png_ver, png_voidp error_ptr,
+    png_error_ptr error_fn, png_error_ptr warn_fn), 
     PNG_ALLOCATED);
 
 /* Allocate and initialize png_ptr struct for writing, and any other memory */
-PNG_EXPORTA(5,png_structp,png_create_write_struct,(png_const_charp user_png_ver,
-    png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warn_fn),
+PNG_EXPORTA(5, png_structp, png_create_write_struct,
+    (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn,
+    png_error_ptr warn_fn), 
     PNG_ALLOCATED);
 
-PNG_EXPORTX(6,png_size_t,png_get_compression_buffer_size,(png_structp png_ptr));
+PNG_EXPORT(6, png_size_t, png_get_compression_buffer_size,
+    (png_structp png_ptr));
 
-PNG_EXPORTX(7,void,png_set_compression_buffer_size,(png_structp png_ptr,
+PNG_EXPORT(7, void, png_set_compression_buffer_size, (png_structp png_ptr, 
     png_size_t size));
 
 /* Moved from pngconf.h in 1.4.0 and modified to ensure setjmp/longjmp
@@ -974,7 +956,7 @@
  * allocated by the library - the call will return NULL on a mismatch
  * indicating an ABI mismatch.
  */
-PNG_EXPORTX(8,jmp_buf*,png_set_longjmp_fn,(png_structp png_ptr,
+PNG_EXPORT(8, jmp_buf*, png_set_longjmp_fn, (png_structp png_ptr, 
     png_longjmp_ptr longjmp_fn, size_t jmp_buf_size));
 #  define png_jmpbuf(png_ptr) \
       (*png_set_longjmp_fn((png_ptr), longjmp, sizeof (jmp_buf)))
@@ -987,149 +969,157 @@
  * will use it; otherwise it will call PNG_ABORT().  This function was
  * added in libpng-1.5.0.
  */
-PNG_EXPORTA(9,void,png_longjmp,(png_structp png_ptr, int val),PNG_NORETURN);
+PNG_EXPORTA(9, void, png_longjmp, (png_structp png_ptr, int val),
+    PNG_NORETURN);
 
 #ifdef PNG_READ_SUPPORTED
 /* Reset the compression stream */
-PNG_EXPORTX(10,int,png_reset_zstream,(png_structp png_ptr));
+PNG_EXPORT(10, int, png_reset_zstream, (png_structp png_ptr));
 #endif
 
 /* New functions added in libpng-1.0.2 (not enabled by default until 1.2.0) */
 #ifdef PNG_USER_MEM_SUPPORTED
-PNG_EXPORT(png_structp,png_create_read_struct_2,(png_const_charp user_png_ver,
-    png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warn_fn,
-    png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn),
-    PNG_ALLOCATED,11);
-PNG_EXPORT(png_structp,png_create_write_struct_2,(png_const_charp user_png_ver,
-    png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warn_fn,
-    png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn),
-    PNG_ALLOCATED,12);
+PNG_EXPORTA(11, png_structp, png_create_read_struct_2,
+    (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn,
+    png_error_ptr warn_fn, 
+    png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn), 
+    PNG_ALLOCATED);
+PNG_EXPORTA(12, png_structp, png_create_write_struct_2,
+    (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn,
+    png_error_ptr warn_fn, 
+    png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn), 
+    PNG_ALLOCATED);
 #endif
 
 /* Write the PNG file signature. */
-PNG_EXPORT(void,png_write_sig,(png_structp png_ptr),,13);
+PNG_EXPORT(13, void, png_write_sig, (png_structp png_ptr));
 
 /* Write a PNG chunk - size, type, (optional) data, CRC. */
-PNG_EXPORT(void,png_write_chunk,(png_structp png_ptr, png_const_bytep
-    chunk_name, png_const_bytep data, png_size_t length),,14);
+PNG_EXPORT(14, void, png_write_chunk, (png_structp png_ptr, png_const_bytep
+    chunk_name, png_const_bytep data, png_size_t length));
 
 /* Write the start of a PNG chunk - length and chunk name. */
-PNG_EXPORT(void,png_write_chunk_start,(png_structp png_ptr,
-    png_const_bytep chunk_name, png_uint_32 length),,15);
+PNG_EXPORT(15, void, png_write_chunk_start, (png_structp png_ptr, 
+    png_const_bytep chunk_name, png_uint_32 length));
 
 /* Write the data of a PNG chunk started with png_write_chunk_start(). */
-PNG_EXPORT(void,png_write_chunk_data,(png_structp png_ptr, png_const_bytep data,
-    png_size_t length),,16);
+PNG_EXPORT(16, void, png_write_chunk_data, (png_structp png_ptr,
+    png_const_bytep data, png_size_t length));
 
 /* Finish a chunk started with png_write_chunk_start() (includes CRC). */
-PNG_EXPORT(void,png_write_chunk_end,(png_structp png_ptr),,17);
+PNG_EXPORT(17, void, png_write_chunk_end, (png_structp png_ptr));
 
 /* Allocate and initialize the info structure */
-PNG_EXPORT(png_infop,png_create_info_struct,(png_structp png_ptr),
-    PNG_ALLOCATED,18);
+PNG_EXPORTA(18, png_infop, png_create_info_struct, (png_structp png_ptr), 
+    PNG_ALLOCATED);
 
-PNG_EXPORT(void,png_info_init_3,(png_infopp info_ptr,
-    png_size_t png_info_struct_size),,19);
+PNG_EXPORT(19, void, png_info_init_3, (png_infopp info_ptr, 
+    png_size_t png_info_struct_size));
 
 /* Writes all the PNG information before the image. */
-PNG_EXPORT(void,png_write_info_before_PLTE,(png_structp png_ptr,
-    png_infop info_ptr),,20);
-PNG_EXPORT(void,png_write_info,(png_structp png_ptr, png_infop info_ptr),,21);
+PNG_EXPORT(20, void, png_write_info_before_PLTE,
+    (png_structp png_ptr, png_infop info_ptr));
+PNG_EXPORT(21, void, png_write_info,
+    (png_structp png_ptr, png_infop info_ptr));
 
 #ifdef PNG_SEQUENTIAL_READ_SUPPORTED
 /* Read the information before the actual image data. */
-PNG_EXPORT(void,png_read_info,(png_structp png_ptr, png_infop info_ptr),,22);
+PNG_EXPORT(22, void, png_read_info,
+    (png_structp png_ptr, png_infop info_ptr));
 #endif
 
 #ifdef PNG_TIME_RFC1123_SUPPORTED
-PNG_EXPORT(png_const_charp,png_convert_to_rfc1123,(png_structp png_ptr,
-    png_const_timep ptime),,23);
+PNG_EXPORT(23, png_const_charp, png_convert_to_rfc1123,
+    (png_structp png_ptr, 
+    png_const_timep ptime));
 #endif
 
 #ifdef PNG_CONVERT_tIME_SUPPORTED
 /* Convert from a struct tm to png_time */
-PNG_EXPORT(void,png_convert_from_struct_tm,(png_timep ptime,
-    PNG_CONST struct tm FAR * ttime),,24);
+PNG_EXPORT(24, void, png_convert_from_struct_tm, (png_timep ptime, 
+    PNG_CONST struct tm FAR * ttime));
 
 /* Convert from time_t to png_time.  Uses gmtime() */
-PNG_EXPORT(void,png_convert_from_time_t,(png_timep ptime, time_t ttime),,25);
+PNG_EXPORT(25, void, png_convert_from_time_t,
+    (png_timep ptime, time_t ttime));
 #endif /* PNG_CONVERT_tIME_SUPPORTED */
 
 #ifdef PNG_READ_EXPAND_SUPPORTED
 /* Expand data to 24-bit RGB, or 8-bit grayscale, with alpha if available. */
-PNG_EXPORT(void,png_set_expand,(png_structp png_ptr),,26);
-PNG_EXPORT(void,png_set_expand_gray_1_2_4_to_8,(png_structp png_ptr),,27);
-PNG_EXPORT(void,png_set_palette_to_rgb,(png_structp png_ptr),,28);
-PNG_EXPORT(void,png_set_tRNS_to_alpha,(png_structp png_ptr),,29);
+PNG_EXPORT(26, void, png_set_expand, (png_structp png_ptr));
+PNG_EXPORT(27, void, png_set_expand_gray_1_2_4_to_8, (png_structp png_ptr));
+PNG_EXPORT(28, void, png_set_palette_to_rgb, (png_structp png_ptr));
+PNG_EXPORT(29, void, png_set_tRNS_to_alpha, (png_structp png_ptr));
 #endif
 
 #if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
 /* Use blue, green, red order for pixels. */
-PNG_EXPORT(void,png_set_bgr,(png_structp png_ptr),,30);
+PNG_EXPORT(30, void, png_set_bgr, (png_structp png_ptr));
 #endif
 
 #ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED
 /* Expand the grayscale to 24-bit RGB if necessary. */
-PNG_EXPORT(void,png_set_gray_to_rgb,(png_structp png_ptr),,31);
+PNG_EXPORT(31, void, png_set_gray_to_rgb, (png_structp png_ptr));
 
 /* Reduce RGB to grayscale. */
-PNG_FP_EXPORT(void,png_set_rgb_to_gray,(png_structp png_ptr, int error_action,
-    double red, double green ),,32);
-PNG_FIXED_EXPORT(void,png_set_rgb_to_gray_fixed,(png_structp png_ptr,
-    int error_action, png_fixed_point red, png_fixed_point green),,33);
+PNG_FP_EXPORT(32, void, png_set_rgb_to_gray, (png_structp png_ptr,
+    int error_action, double red, double green));
+PNG_FIXED_EXPORT(33, void, png_set_rgb_to_gray_fixed, (png_structp png_ptr, 
+    int error_action, png_fixed_point red, png_fixed_point green));
 
-PNG_EXPORT(png_byte,png_get_rgb_to_gray_status,(png_structp png_ptr),,34);
+PNG_EXPORT(34, png_byte, png_get_rgb_to_gray_status, (png_structp png_ptr));
 #endif
 
-PNG_EXPORT(void,png_build_grayscale_palette,(int bit_depth,
-    png_colorp palette),,35);
+PNG_EXPORT(35, void, png_build_grayscale_palette, (int bit_depth, 
+    png_colorp palette));
 
 #ifdef PNG_READ_STRIP_ALPHA_SUPPORTED
-PNG_EXPORT(void,png_set_strip_alpha,(png_structp png_ptr),,36);
+PNG_EXPORT(36, void, png_set_strip_alpha, (png_structp png_ptr));
 #endif
 
 #if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \
     defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED)
-PNG_EXPORT(void,png_set_swap_alpha,(png_structp png_ptr),,37);
+PNG_EXPORT(37, void, png_set_swap_alpha, (png_structp png_ptr));
 #endif
 
 #if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \
     defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED)
-PNG_EXPORT(void,png_set_invert_alpha,(png_structp png_ptr),,38);
+PNG_EXPORT(38, void, png_set_invert_alpha, (png_structp png_ptr));
 #endif
 
 #if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED)
 /* Add a filler byte to 8-bit Gray or 24-bit RGB images. */
-PNG_EXPORT(void,png_set_filler,(png_structp png_ptr, png_uint_32 filler,
-    int flags),,39);
+PNG_EXPORT(39, void, png_set_filler, (png_structp png_ptr, png_uint_32 filler, 
+    int flags));
 /* The values of the PNG_FILLER_ defines should NOT be changed */
 #  define PNG_FILLER_BEFORE 0
 #  define PNG_FILLER_AFTER 1
 /* Add an alpha byte to 8-bit Gray or 24-bit RGB images. */
-PNG_EXPORT(void,png_set_add_alpha,(png_structp png_ptr, png_uint_32 filler,
-    int flags),,40);
+PNG_EXPORT(40, void, png_set_add_alpha,
+    (png_structp png_ptr, png_uint_32 filler, 
+    int flags));
 #endif /* PNG_READ_FILLER_SUPPORTED || PNG_WRITE_FILLER_SUPPORTED */
 
 #if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
 /* Swap bytes in 16-bit depth files. */
-PNG_EXPORT(void,png_set_swap,(png_structp png_ptr),,41);
+PNG_EXPORT(41, void, png_set_swap, (png_structp png_ptr));
 #endif
 
 #if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED)
 /* Use 1 byte per pixel in 1, 2, or 4-bit depth files. */
-PNG_EXPORT(void,png_set_packing,(png_structp png_ptr),,42);
+PNG_EXPORT(42, void, png_set_packing, (png_structp png_ptr));
 #endif
 
 #if defined(PNG_READ_PACKSWAP_SUPPORTED) || \
     defined(PNG_WRITE_PACKSWAP_SUPPORTED)
 /* Swap packing order of pixels in bytes. */
-PNG_EXPORT(void,png_set_packswap,(png_structp png_ptr),,43);
+PNG_EXPORT(43, void, png_set_packswap, (png_structp png_ptr));
 #endif
 
 #if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED)
 /* Converts files to legal bit depths. */
-PNG_EXPORT(void,png_set_shift,(png_structp png_ptr, png_const_color_8p
-    true_bits),,44);
+PNG_EXPORT(44, void, png_set_shift, (png_structp png_ptr, png_const_color_8p
+    true_bits));
 #endif
 
 #if defined(PNG_READ_INTERLACING_SUPPORTED) || \
@@ -1139,7 +1129,7 @@
  * it will not have the desired effect.  Note that it is still necessary to call
  * png_read_row or png_read_rows png_get_image_height times for each pass.
  */
-PNG_EXPORT(int,png_set_interlace_handling,(png_structp png_ptr),,45);
+PNG_EXPORT(45, int, png_set_interlace_handling, (png_structp png_ptr));
 #endif
 
 #ifdef PNG_SEQUENTIAL_READ_SUPPORTED
@@ -1151,24 +1141,24 @@
  * NOTE: you need to call these to find out how many times to call png_read_row
  * if you handle your own de-interlacing.
  */
-PNG_EXPORT(int,png_get_num_passes,(png_structp png_ptr),,215);
-PNG_EXPORT(png_uint_32,png_get_num_rows,(png_structp png_ptr),,216);
-PNG_EXPORT(png_uint_32,png_get_num_cols,(png_structp png_ptr),,218);
+PNG_EXPORT(215, int, png_get_num_passes, (png_structp png_ptr));
+PNG_EXPORT(216, png_uint_32, png_get_num_rows, (png_structp png_ptr));
+PNG_EXPORT(218, png_uint_32, png_get_num_cols, (png_structp png_ptr));
 #endif
 
 #if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED)
 /* Invert monochrome files */
-PNG_EXPORT(void,png_set_invert_mono,(png_structp png_ptr),,46);
+PNG_EXPORT(46, void, png_set_invert_mono, (png_structp png_ptr));
 #endif
 
 #ifdef PNG_READ_BACKGROUND_SUPPORTED
 /* Handle alpha and tRNS by replacing with a background color. */
-PNG_FP_EXPORT(void,png_set_background,(png_structp png_ptr,
-    png_const_color_16p background_color, int background_gamma_code,
-    int need_expand, double background_gamma),,47);
-PNG_FIXED_EXPORT(void,png_set_background_fixed,(png_structp png_ptr,
-    png_const_color_16p background_color, int background_gamma_code,
-    int need_expand, png_fixed_point background_gamma),,217);
+PNG_FP_EXPORT(47, void, png_set_background, (png_structp png_ptr, 
+    png_const_color_16p background_color, int background_gamma_code, 
+    int need_expand, double background_gamma));
+PNG_FIXED_EXPORT(217, void, png_set_background_fixed, (png_structp png_ptr, 
+    png_const_color_16p background_color, int background_gamma_code, 
+    int need_expand, png_fixed_point background_gamma));
 #endif
 #ifdef PNG_READ_BACKGROUND_SUPPORTED
 #  define PNG_BACKGROUND_GAMMA_UNKNOWN 0
@@ -1179,16 +1169,17 @@
 
 #ifdef PNG_READ_16_TO_8_SUPPORTED
 /* Strip the second byte of information from a 16-bit depth file. */
-PNG_EXPORT(void,png_set_strip_16,(png_structp png_ptr),,48);
+PNG_EXPORT(48, void, png_set_strip_16, (png_structp png_ptr));
 #endif
 
 #ifdef PNG_READ_QUANTIZE_SUPPORTED
 /* Turn on quantizing, and reduce the palette to the number of colors
  * available.
  */
-PNG_EXPORT(void,png_set_quantize,(png_structp png_ptr, png_colorp palette,
-    int num_palette, int maximum_colors, png_const_uint_16p histogram,
-    int full_quantize),,49);
+PNG_EXPORT(49, void, png_set_quantize,
+    (png_structp png_ptr, png_colorp palette, 
+    int num_palette, int maximum_colors, png_const_uint_16p histogram, 
+    int full_quantize));
 #endif
 
 #ifdef PNG_READ_GAMMA_SUPPORTED
@@ -1198,86 +1189,90 @@
 #define PNG_GAMMA_THRESHOLD (PNG_GAMMA_THRESHOLD_FIXED*.00001)
 
 /* Handle gamma correction. Screen_gamma=(display_exponent) */
-PNG_FP_EXPORT(void,png_set_gamma,(png_structp png_ptr, double screen_gamma,
-    double default_file_gamma),,50);
-PNG_FIXED_EXPORT(void,png_set_gamma_fixed,(png_structp png_ptr,
-    png_fixed_point screen_gamma, png_fixed_point default_file_gamma),,208);
+PNG_FP_EXPORT(50, void, png_set_gamma,
+    (png_structp png_ptr, double screen_gamma, 
+    double default_file_gamma));
+PNG_FIXED_EXPORT(208, void, png_set_gamma_fixed, (png_structp png_ptr, 
+    png_fixed_point screen_gamma, png_fixed_point default_file_gamma));
 #endif
 
 
 #ifdef PNG_WRITE_FLUSH_SUPPORTED
 /* Set how many lines between output flushes - 0 for no flushing */
-PNG_EXPORT(void,png_set_flush,(png_structp png_ptr, int nrows),,51);
+PNG_EXPORT(51, void, png_set_flush, (png_structp png_ptr, int nrows));
 /* Flush the current PNG output buffer */
-PNG_EXPORT(void,png_write_flush,(png_structp png_ptr),,52);
+PNG_EXPORT(52, void, png_write_flush, (png_structp png_ptr));
 #endif
 
 /* Optional update palette with requested transformations */
-PNG_EXPORT(void,png_start_read_image,(png_structp png_ptr),,53);
+PNG_EXPORT(53, void, png_start_read_image, (png_structp png_ptr));
 
 /* Optional call to update the users info structure */
-PNG_EXPORT(void,png_read_update_info,(png_structp png_ptr, png_infop info_ptr),,
-    54);
+PNG_EXPORT(54, void, png_read_update_info,
+    (png_structp png_ptr, png_infop info_ptr));
 
 #ifdef PNG_SEQUENTIAL_READ_SUPPORTED
 /* Read one or more rows of image data. */
-PNG_EXPORT(void,png_read_rows,(png_structp png_ptr, png_bytepp row,
-    png_bytepp display_row, png_uint_32 num_rows),,55);
+PNG_EXPORT(55, void, png_read_rows, (png_structp png_ptr, png_bytepp row, 
+    png_bytepp display_row, png_uint_32 num_rows));
 #endif
 
 #ifdef PNG_SEQUENTIAL_READ_SUPPORTED
 /* Read a row of data. */
-PNG_EXPORT(void,png_read_row,(png_structp png_ptr, png_bytep row,
-    png_bytep display_row),,56);
+PNG_EXPORT(56, void, png_read_row, (png_structp png_ptr, png_bytep row, 
+    png_bytep display_row));
 #endif
 
 #ifdef PNG_SEQUENTIAL_READ_SUPPORTED
 /* Read the whole image into memory at once. */
-PNG_EXPORT(void,png_read_image,(png_structp png_ptr, png_bytepp image),,57);
+PNG_EXPORT(57, void, png_read_image, (png_structp png_ptr, png_bytepp image));
 #endif
 
 /* Write a row of image data */
-PNG_EXPORT(void,png_write_row,(png_structp png_ptr, png_const_bytep row),,58);
+PNG_EXPORT(58, void, png_write_row,
+    (png_structp png_ptr, png_const_bytep row));
 
 /* Write a few rows of image data: (*row) is not written; however, the type is
  * declared as writeable to maintain compatibility with previous versions of
  * libpng and to allow the 'display_row' array from read_rows to be passed
  * unchanged to write_rows.
  */
-PNG_EXPORT(void,png_write_rows,(png_structp png_ptr, png_bytepp row,
-    png_uint_32 num_rows),,59);
+PNG_EXPORT(59, void, png_write_rows, (png_structp png_ptr, png_bytepp row, 
+    png_uint_32 num_rows));
 
 /* Write the image data */
-PNG_EXPORT(void,png_write_image,(png_structp png_ptr, png_bytepp image),,60);
+PNG_EXPORT(60, void, png_write_image,
+    (png_structp png_ptr, png_bytepp image));
 
 /* Write the end of the PNG file. */
-PNG_EXPORT(void,png_write_end,(png_structp png_ptr, png_infop info_ptr),,61);
+PNG_EXPORT(61, void, png_write_end,
+    (png_structp png_ptr, png_infop info_ptr));
 
 #ifdef PNG_SEQUENTIAL_READ_SUPPORTED
 /* Read the end of the PNG file. */
-PNG_EXPORT(void,png_read_end,(png_structp png_ptr, png_infop info_ptr),,62);
+PNG_EXPORT(62, void, png_read_end, (png_structp png_ptr, png_infop info_ptr));
 #endif
 
 /* Free any memory associated with the png_info_struct */
-PNG_EXPORT(void,png_destroy_info_struct,(png_structp png_ptr,
-    png_infopp info_ptr_ptr),,63);
+PNG_EXPORT(63, void, png_destroy_info_struct, (png_structp png_ptr, 
+    png_infopp info_ptr_ptr));
 
 /* Free any memory associated with the png_struct and the png_info_structs */
-PNG_EXPORT(void,png_destroy_read_struct,(png_structpp png_ptr_ptr,
-    png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr),,64);
+PNG_EXPORT(64, void, png_destroy_read_struct, (png_structpp png_ptr_ptr, 
+    png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr));
 
 /* Free any memory associated with the png_struct and the png_info_structs */
-PNG_EXPORT(void,png_destroy_write_struct,(png_structpp png_ptr_ptr,
-    png_infopp info_ptr_ptr),,65);
+PNG_EXPORT(65, void, png_destroy_write_struct, (png_structpp png_ptr_ptr, 
+    png_infopp info_ptr_ptr));
 
 /* Set the libpng method of handling chunk CRC errors */
-PNG_EXPORT(void,png_set_crc_action,(png_structp png_ptr, int crit_action,
-    int ancil_action),,66);
+PNG_EXPORT(66, void, png_set_crc_action,
+    (png_structp png_ptr, int crit_action, int ancil_action));
 
 /* Values for png_set_crc_action() to say how to handle CRC errors in
  * ancillary and critical chunks, and whether to use the data contained
  * therein.  Note that it is impossible to "discard" data in a critical
- * chunk.  For versions prior to 0.90, the action was always error/quit,
+ * chunk.  For versions prior to 0.90, the action was always error/quit, 
  * whereas in version 0.90 and later, the action for CRC errors in ancillary
  * chunks is warn/discard.  These values should NOT be changed.
  *
@@ -1301,8 +1296,8 @@
 /* Set the filtering method(s) used by libpng.  Currently, the only valid
  * value for "method" is 0.
  */
-PNG_EXPORT(void,png_set_filter,(png_structp png_ptr, int method, int filters),,
-    67);
+PNG_EXPORT(67, void, png_set_filter,
+    (png_structp png_ptr, int method, int filters));
 
 /* Flags for png_set_filter() to say which filters to use.  The flags
  * are chosen so that they don't conflict with real filter types
@@ -1357,12 +1352,13 @@
  * the weights and costs are set to 1.0, this degenerates the WEIGHTED method
  * to the UNWEIGHTED method, but with added encoding time/computation.
  */
-PNG_FP_EXPORT(void,png_set_filter_heuristics,(png_structp png_ptr,
-    int heuristic_method, int num_weights, png_const_doublep filter_weights,
-    png_const_doublep filter_costs),,68);
-PNG_FIXED_EXPORT(void,png_set_filter_heuristics_fixed,(png_structp png_ptr,
+PNG_FP_EXPORT(68, void, png_set_filter_heuristics, (png_structp png_ptr, 
+    int heuristic_method, int num_weights, png_const_doublep filter_weights, 
+    png_const_doublep filter_costs));
+PNG_FIXED_EXPORT(209, void, png_set_filter_heuristics_fixed,
+    (png_structp png_ptr, 
     int heuristic_method, int num_weights, png_const_fixed_point_p
-    filter_weights, png_const_fixed_point_p filter_costs),,209);
+    filter_weights, png_const_fixed_point_p filter_costs));
 #endif /*  PNG_WRITE_WEIGHTED_FILTER_SUPPORTED */
 
 /* Heuristic used for row filter selection.  These defines should NOT be
@@ -1377,25 +1373,26 @@
  * 0 - 9, corresponding directly to the zlib compression levels 0 - 9
  * (0 - no compression, 9 - "maximal" compression).  Note that tests have
  * shown that zlib compression levels 3-6 usually perform as well as level 9
- * for PNG images, and do considerably fewer caclulations.  In the future,
+ * for PNG images, and do considerably fewer caclulations.  In the future, 
  * these values may not correspond directly to the zlib compression levels.
  */
-PNG_EXPORT(void,png_set_compression_level,(png_structp png_ptr, int level),,69);
+PNG_EXPORT(69, void, png_set_compression_level,
+    (png_structp png_ptr, int level));
 
-PNG_EXPORT(void,png_set_compression_mem_level,(png_structp png_ptr,
-    int mem_level),,70);
+PNG_EXPORT(70, void, png_set_compression_mem_level, (png_structp png_ptr, 
+    int mem_level));
 
-PNG_EXPORT(void,png_set_compression_strategy,(png_structp png_ptr,
-    int strategy),,71);
+PNG_EXPORT(71, void, png_set_compression_strategy, (png_structp png_ptr, 
+    int strategy));
 
-PNG_EXPORT(void,png_set_compression_window_bits,(png_structp png_ptr,
-    int window_bits),,72);
+PNG_EXPORT(72, void, png_set_compression_window_bits, (png_structp png_ptr, 
+    int window_bits));
 
-PNG_EXPORT(void,png_set_compression_method,(png_structp png_ptr, int method),,
-    73);
+PNG_EXPORT(73, void, png_set_compression_method, (png_structp png_ptr,
+    int method));
 
 /* These next functions are called for input/output, memory, and error
- * handling.  They are in the file pngrio.c, pngwio.c, and pngerror.c,
+ * handling.  They are in the file pngrio.c, pngwio.c, and pngerror.c, 
  * and call standard C I/O routines such as fread(), fwrite(), and
  * fprintf().  These functions can be made to use other I/O routines
  * at run time for those applications that need to handle I/O in a
@@ -1405,7 +1402,7 @@
 
 #ifdef PNG_STDIO_SUPPORTED
 /* Initialize the input/output for the PNG file to the default functions. */
-PNG_EXPORT(void,png_init_io,(png_structp png_ptr, png_FILE_p fp),,74);
+PNG_EXPORT(74, void, png_init_io, (png_structp png_ptr, png_FILE_p fp));
 #endif
 
 /* Replace the (error and abort), and warning functions with user
@@ -1416,11 +1413,12 @@
  * default function will be used.
  */
 
-PNG_EXPORT(void,png_set_error_fn,(png_structp png_ptr, png_voidp error_ptr,
-    png_error_ptr error_fn, png_error_ptr warning_fn),,75);
+PNG_EXPORT(75, void, png_set_error_fn,
+    (png_structp png_ptr, png_voidp error_ptr, 
+    png_error_ptr error_fn, png_error_ptr warning_fn));
 
 /* Return the user pointer associated with the error functions */
-PNG_EXPORT(png_voidp,png_get_error_ptr,(png_structp png_ptr),,76);
+PNG_EXPORT(76, png_voidp, png_get_error_ptr, (png_structp png_ptr));
 
 /* Replace the default data output functions with a user supplied one(s).
  * If buffered output is not used, then output_flush_fn can be set to NULL.
@@ -1432,98 +1430,103 @@
  * default flush function, which uses the standard *FILE structure, will
  * be used.
  */
-PNG_EXPORT(void,png_set_write_fn,(png_structp png_ptr, png_voidp io_ptr,
-    png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn),,77);
+PNG_EXPORT(77, void, png_set_write_fn, (png_structp png_ptr, png_voidp io_ptr, 
+    png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn));
 
 /* Replace the default data input function with a user supplied one. */
-PNG_EXPORT(void,png_set_read_fn,(png_structp png_ptr, png_voidp io_ptr,
-    png_rw_ptr read_data_fn),,78);
+PNG_EXPORT(78, void, png_set_read_fn, (png_structp png_ptr, png_voidp io_ptr, 
+    png_rw_ptr read_data_fn));
 
 /* Return the user pointer associated with the I/O functions */
-PNG_EXPORT(png_voidp,png_get_io_ptr,(png_structp png_ptr),,79);
+PNG_EXPORT(79, png_voidp, png_get_io_ptr, (png_structp png_ptr));
 
-PNG_EXPORT(void,png_set_read_status_fn,(png_structp png_ptr,
-    png_read_status_ptr read_row_fn),,80);
+PNG_EXPORT(80, void, png_set_read_status_fn, (png_structp png_ptr, 
+    png_read_status_ptr read_row_fn));
 
-PNG_EXPORT(void,png_set_write_status_fn,(png_structp png_ptr,
-    png_write_status_ptr write_row_fn),,81);
+PNG_EXPORT(81, void, png_set_write_status_fn, (png_structp png_ptr, 
+    png_write_status_ptr write_row_fn));
 
 #ifdef PNG_USER_MEM_SUPPORTED
 /* Replace the default memory allocation functions with user supplied one(s). */
-PNG_EXPORT(void,png_set_mem_fn,(png_structp png_ptr, png_voidp mem_ptr,
-    png_malloc_ptr malloc_fn, png_free_ptr free_fn),,82);
+PNG_EXPORT(82, void, png_set_mem_fn, (png_structp png_ptr, png_voidp mem_ptr, 
+    png_malloc_ptr malloc_fn, png_free_ptr free_fn));
 /* Return the user pointer associated with the memory functions */
-PNG_EXPORT(png_voidp,png_get_mem_ptr,(png_structp png_ptr),,83);
+PNG_EXPORT(83, png_voidp, png_get_mem_ptr, (png_structp png_ptr));
 #endif
 
 #ifdef PNG_READ_USER_TRANSFORM_SUPPORTED
-PNG_EXPORT(void,png_set_read_user_transform_fn,(png_structp png_ptr,
-    png_user_transform_ptr read_user_transform_fn),,84);
+PNG_EXPORT(84, void, png_set_read_user_transform_fn, (png_structp png_ptr, 
+    png_user_transform_ptr read_user_transform_fn));
 #endif
 
 #ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED
-PNG_EXPORT(void,png_set_write_user_transform_fn,(png_structp png_ptr,
-    png_user_transform_ptr write_user_transform_fn),,85);
+PNG_EXPORT(85, void, png_set_write_user_transform_fn, (png_structp png_ptr, 
+    png_user_transform_ptr write_user_transform_fn));
 #endif
 
 #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
     defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
-PNG_EXPORT(void,png_set_user_transform_info,(png_structp png_ptr,
-    png_voidp user_transform_ptr, int user_transform_depth,
-    int user_transform_channels),,86);
+PNG_EXPORT(86, void, png_set_user_transform_info, (png_structp png_ptr, 
+    png_voidp user_transform_ptr, int user_transform_depth, 
+    int user_transform_channels));
 /* Return the user pointer associated with the user transform functions */
-PNG_EXPORT(png_voidp,png_get_user_transform_ptr,(png_structp png_ptr),,87);
+PNG_EXPORT(87, png_voidp, png_get_user_transform_ptr, (png_structp png_ptr));
 #endif
 
 #ifdef PNG_USER_CHUNKS_SUPPORTED
-PNG_EXPORT(void,png_set_read_user_chunk_fn,(png_structp png_ptr,
-    png_voidp user_chunk_ptr, png_user_chunk_ptr read_user_chunk_fn),,88);
-PNG_EXPORT(png_voidp,png_get_user_chunk_ptr,(png_structp png_ptr),,89);
+PNG_EXPORT(88, void, png_set_read_user_chunk_fn, (png_structp png_ptr, 
+    png_voidp user_chunk_ptr, png_user_chunk_ptr read_user_chunk_fn));
+PNG_EXPORT(89, png_voidp, png_get_user_chunk_ptr, (png_structp png_ptr));
 #endif
 
 #ifdef PNG_PROGRESSIVE_READ_SUPPORTED
 /* Sets the function callbacks for the push reader, and a pointer to a
  * user-defined structure available to the callback functions.
  */
-PNG_EXPORT(void,png_set_progressive_read_fn,(png_structp png_ptr,
-    png_voidp progressive_ptr, png_progressive_info_ptr info_fn,
-    png_progressive_row_ptr row_fn, png_progressive_end_ptr end_fn),,90);
+PNG_EXPORT(90, void, png_set_progressive_read_fn, (png_structp png_ptr, 
+    png_voidp progressive_ptr, png_progressive_info_ptr info_fn, 
+    png_progressive_row_ptr row_fn, png_progressive_end_ptr end_fn));
 
 /* Returns the user pointer associated with the push read functions */
-PNG_EXPORT(png_voidp,png_get_progressive_ptr,(png_structp png_ptr),,91);
+PNG_EXPORT(91, png_voidp, png_get_progressive_ptr, (png_structp png_ptr));
 
 /* Function to be called when data becomes available */
-PNG_EXPORT(void,png_process_data,(png_structp png_ptr, png_infop info_ptr,
-    png_bytep buffer, png_size_t buffer_size),,92);
+PNG_EXPORT(92, void, png_process_data,
+    (png_structp png_ptr, png_infop info_ptr, 
+    png_bytep buffer, png_size_t buffer_size));
 
 /* Function that combines rows.  'new_row' is a flag that should come from the
  * callback and be non-NULL if anything needs to be done; the library stores its
  * own version of the new data internally and ignores the passed in value.
  */
-PNG_EXPORT(void,png_progressive_combine_row,(png_structp png_ptr,
-    png_bytep old_row, png_const_bytep new_row),,93);
+PNG_EXPORT(93, void, png_progressive_combine_row, (png_structp png_ptr, 
+    png_bytep old_row, png_const_bytep new_row));
 #endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
 
-PNG_EXPORT(png_voidp,png_malloc,(png_structp png_ptr, png_alloc_size_t size),
-    PNG_ALLOCATED,94);
+PNG_EXPORTA(94, png_voidp, png_malloc,
+    (png_structp png_ptr, png_alloc_size_t size), 
+    PNG_ALLOCATED);
 /* Added at libpng version 1.4.0 */
-PNG_EXPORT(png_voidp,png_calloc,(png_structp png_ptr, png_alloc_size_t size),
-    PNG_ALLOCATED,95);
+PNG_EXPORTA(95, png_voidp, png_calloc,
+    (png_structp png_ptr, png_alloc_size_t size), 
+    PNG_ALLOCATED);
 
 /* Added at libpng version 1.2.4 */
-PNG_EXPORT(png_voidp,png_malloc_warn,(png_structp png_ptr,
-    png_alloc_size_t size),PNG_ALLOCATED,96);
+PNG_EXPORTA(96, png_voidp, png_malloc_warn, (png_structp png_ptr, 
+    png_alloc_size_t size), PNG_ALLOCATED);
 
 /* Frees a pointer allocated by png_malloc() */
-PNG_EXPORT(void,png_free,(png_structp png_ptr, png_voidp ptr),,97);
+PNG_EXPORT(97, void, png_free, (png_structp png_ptr, png_voidp ptr));
 
 /* Free data that was allocated internally */
-PNG_EXPORT(void,png_free_data,(png_structp png_ptr, png_infop info_ptr,
-    png_uint_32 free_me, int num),,98);
+PNG_EXPORT(98, void, png_free_data,
+    (png_structp png_ptr, png_infop info_ptr, png_uint_32 free_me, int num));
+
 /* Reassign responsibility for freeing existing data, whether allocated
  * by libpng or by the application */
-PNG_EXPORT(void,png_data_freer,(png_structp png_ptr, png_infop info_ptr,
-    int freer, png_uint_32 mask),,99);
+PNG_EXPORT(99, void, png_data_freer,
+    (png_structp png_ptr, png_infop info_ptr, int freer, png_uint_32 mask));
+
 /* Assignments for png_data_freer */
 #define PNG_DESTROY_WILL_FREE_DATA 1
 #define PNG_SET_WILL_FREE_DATA 1
@@ -1544,46 +1547,48 @@
 #define PNG_FREE_MUL  0x4220 /* PNG_FREE_SPLT|PNG_FREE_TEXT|PNG_FREE_UNKN */
 
 #ifdef PNG_USER_MEM_SUPPORTED
-PNG_EXPORT(png_voidp,png_malloc_default,(png_structp png_ptr,
-    png_alloc_size_t size),PNG_ALLOCATED,100);
-PNG_EXPORT(void,png_free_default,(png_structp png_ptr, png_voidp ptr),,101);
+PNG_EXPORTA(100, png_voidp, png_malloc_default, (png_structp png_ptr, 
+    png_alloc_size_t size), PNG_ALLOCATED);
+PNG_EXPORT(101, void, png_free_default, (png_structp png_ptr, png_voidp ptr));
 #endif
 
 #ifdef PNG_ERROR_TEXT_SUPPORTED
 /* Fatal error in PNG image of libpng - can't continue */
-PNG_EXPORT(void,png_error,(png_structp png_ptr, png_const_charp error_message),
-    PNG_NORETURN,102);
+PNG_EXPORTA(102, void, png_error,
+    (png_structp png_ptr, png_const_charp error_message), 
+    PNG_NORETURN);
 
 /* The same, but the chunk name is prepended to the error string. */
-PNG_EXPORT(void,png_chunk_error,(png_structp png_ptr,
-    png_const_charp error_message),PNG_NORETURN,103);
+PNG_EXPORTA(103, void, png_chunk_error, (png_structp png_ptr, 
+    png_const_charp error_message), PNG_NORETURN);
 
 #else
 /* Fatal error in PNG image of libpng - can't continue */
-PNG_EXPORT(void,png_err,(png_structp png_ptr),PNG_NORETURN,104);
+PNG_EXPORTA(104, void, png_err, (png_structp png_ptr), PNG_NORETURN);
 #endif
 
 /* Non-fatal error in libpng.  Can continue, but may have a problem. */
-PNG_EXPORT(void,png_warning,(png_structp png_ptr,
-    png_const_charp warning_message),,105);
+PNG_EXPORT(105, void, png_warning, (png_structp png_ptr, 
+    png_const_charp warning_message));
 
 /* Non-fatal error in libpng, chunk name is prepended to message. */
-PNG_EXPORT(void,png_chunk_warning,(png_structp png_ptr,
-    png_const_charp warning_message),,106);
+PNG_EXPORT(106, void, png_chunk_warning, (png_structp png_ptr, 
+    png_const_charp warning_message));
 
 #ifdef PNG_BENIGN_ERRORS_SUPPORTED
 /* Benign error in libpng.  Can continue, but may have a problem.
  * User can choose whether to handle as a fatal error or as a warning. */
 #  undef png_benign_error
-PNG_EXPORT(void,png_benign_error,(png_structp png_ptr,
-    png_const_charp warning_message),,107);
+PNG_EXPORT(107, void, png_benign_error, (png_structp png_ptr, 
+    png_const_charp warning_message));
 
 /* Same, chunk name is prepended to message. */
 #  undef png_chunk_benign_error
-PNG_EXPORT(void,png_chunk_benign_error,(png_structp png_ptr,
-    png_const_charp warning_message),,108);
+PNG_EXPORT(108, void, png_chunk_benign_error, (png_structp png_ptr, 
+    png_const_charp warning_message));
 
-PNG_EXPORT(void,png_set_benign_errors,(png_structp png_ptr, int allowed),,109);
+PNG_EXPORT(109, void, png_set_benign_errors,
+    (png_structp png_ptr, int allowed));
 #else
 #  ifdef PNG_ALLOW_BENIGN_ERRORS
 #    define png_benign_error png_warning
@@ -1607,247 +1612,268 @@
  * png_info_struct.
  */
 /* Returns "flag" if chunk data is valid in info_ptr. */
-PNG_EXPORT(png_uint_32,png_get_valid,(png_structp png_ptr, png_infop info_ptr,
-    png_uint_32 flag),,110);
+PNG_EXPORT(110, png_uint_32, png_get_valid,
+    (png_structp png_ptr, png_infop info_ptr, 
+    png_uint_32 flag));
 
 /* Returns number of bytes needed to hold a transformed row. */
-PNG_EXPORT(png_size_t,png_get_rowbytes,(png_structp png_ptr,
-    png_infop info_ptr),,111);
+PNG_EXPORT(111, png_size_t, png_get_rowbytes, (png_structp png_ptr, 
+    png_infop info_ptr));
 
 #ifdef PNG_INFO_IMAGE_SUPPORTED
 /* Returns row_pointers, which is an array of pointers to scanlines that was
  * returned from png_read_png().
  */
-PNG_EXPORT(png_bytepp,png_get_rows,(png_structp png_ptr, png_infop info_ptr),,
-    112);
+PNG_EXPORT(112, png_bytepp, png_get_rows,
+    (png_structp png_ptr, png_infop info_ptr));
 /* Set row_pointers, which is an array of pointers to scanlines for use
  * by png_write_png().
  */
-PNG_EXPORT(void,png_set_rows,(png_structp png_ptr, png_infop info_ptr,
-    png_bytepp row_pointers),,113);
+PNG_EXPORT(113, void, png_set_rows, (png_structp png_ptr, png_infop info_ptr, 
+    png_bytepp row_pointers));
 #endif
 
 /* Returns number of color channels in image. */
-PNG_EXPORT(png_byte,png_get_channels,(png_structp png_ptr, png_infop info_ptr),,
-    114);
+PNG_EXPORT(114, png_byte, png_get_channels,
+    (png_structp png_ptr, png_infop info_ptr));
 
 #ifdef PNG_EASY_ACCESS_SUPPORTED
 /* Returns image width in pixels. */
-PNG_EXPORT(png_uint_32,png_get_image_width,(png_structp png_ptr,
-    png_infop info_ptr),,115);
+PNG_EXPORT(115, png_uint_32, png_get_image_width, (png_structp png_ptr, 
+    png_infop info_ptr));
 
 /* Returns image height in pixels. */
-PNG_EXPORT(png_uint_32,png_get_image_height,(png_structp png_ptr,
-    png_infop info_ptr),,116);
+PNG_EXPORT(116, png_uint_32, png_get_image_height, (png_structp png_ptr, 
+    png_infop info_ptr));
 
 /* Returns image bit_depth. */
-PNG_EXPORT(png_byte,png_get_bit_depth,(png_structp png_ptr, png_infop info_ptr),
-    ,117);
+PNG_EXPORT(117, png_byte, png_get_bit_depth,
+    (png_structp png_ptr, png_infop info_ptr));
 
 /* Returns image color_type. */
-PNG_EXPORT(png_byte,png_get_color_type,(png_structp png_ptr,
-    png_infop info_ptr),,118);
+PNG_EXPORT(118, png_byte, png_get_color_type, (png_structp png_ptr, 
+    png_infop info_ptr));
 
 /* Returns image filter_type. */
-PNG_EXPORT(png_byte,png_get_filter_type,(png_structp png_ptr,
-    png_infop info_ptr),,119);
+PNG_EXPORT(119, png_byte, png_get_filter_type, (png_structp png_ptr, 
+    png_infop info_ptr));
 
 /* Returns image interlace_type. */
-PNG_EXPORT(png_byte,png_get_interlace_type,(png_structp png_ptr,
-    png_infop info_ptr),,120);
+PNG_EXPORT(120, png_byte, png_get_interlace_type, (png_structp png_ptr, 
+    png_infop info_ptr));
 
 /* Returns image compression_type. */
-PNG_EXPORT(png_byte,png_get_compression_type,(png_structp png_ptr,
-    png_infop info_ptr),,121);
+PNG_EXPORT(121, png_byte, png_get_compression_type, (png_structp png_ptr, 
+    png_infop info_ptr));
 
 /* Returns image resolution in pixels per meter, from pHYs chunk data. */
-PNG_EXPORT(png_uint_32,png_get_pixels_per_meter,(png_structp png_ptr,
-    png_infop info_ptr),,122);
-PNG_EXPORT(png_uint_32,png_get_x_pixels_per_meter,(png_structp png_ptr,
-    png_infop info_ptr),,123);
-PNG_EXPORT(png_uint_32,png_get_y_pixels_per_meter,(png_structp png_ptr,
-    png_infop info_ptr),,124);
+PNG_EXPORT(122, png_uint_32, png_get_pixels_per_meter, (png_structp png_ptr, 
+    png_infop info_ptr));
+PNG_EXPORT(123, png_uint_32, png_get_x_pixels_per_meter, (png_structp png_ptr, 
+    png_infop info_ptr));
+PNG_EXPORT(124, png_uint_32, png_get_y_pixels_per_meter, (png_structp png_ptr, 
+    png_infop info_ptr));
 
 /* Returns pixel aspect ratio, computed from pHYs chunk data.  */
-PNG_FP_EXPORT(float,png_get_pixel_aspect_ratio,(png_structp png_ptr,
-    png_infop info_ptr),,125);
-PNG_FIXED_EXPORT(png_fixed_point,png_get_pixel_aspect_ratio_fixed,
-    (png_structp png_ptr, png_infop info_ptr),,210);
+PNG_FP_EXPORT(125, float, png_get_pixel_aspect_ratio, (png_structp png_ptr, 
+    png_infop info_ptr));
+PNG_FIXED_EXPORT(210, png_fixed_point, png_get_pixel_aspect_ratio_fixed, 
+    (png_structp png_ptr, png_infop info_ptr));
 
 /* Returns image x, y offset in pixels or microns, from oFFs chunk data. */
-PNG_EXPORT(png_int_32,png_get_x_offset_pixels,(png_structp png_ptr,
-    png_infop info_ptr),,126);
-PNG_EXPORT(png_int_32,png_get_y_offset_pixels,(png_structp png_ptr,
-    png_infop info_ptr),,127);
-PNG_EXPORT(png_int_32,png_get_x_offset_microns,(png_structp png_ptr,
-    png_infop info_ptr),,128);
-PNG_EXPORT(png_int_32, png_get_y_offset_microns,(png_structp png_ptr,
-    png_infop info_ptr),,129);
+PNG_EXPORT(126, png_int_32, png_get_x_offset_pixels, (png_structp png_ptr, 
+    png_infop info_ptr));
+PNG_EXPORT(127, png_int_32, png_get_y_offset_pixels, (png_structp png_ptr, 
+    png_infop info_ptr));
+PNG_EXPORT(128, png_int_32, png_get_x_offset_microns, (png_structp png_ptr, 
+    png_infop info_ptr));
+PNG_EXPORT(129, png_int_32, png_get_y_offset_microns, (png_structp png_ptr, 
+    png_infop info_ptr));
 
 #endif /* PNG_EASY_ACCESS_SUPPORTED */
 
 /* Returns pointer to signature string read from PNG header */
-PNG_EXPORT(png_const_bytep,png_get_signature,(png_structp png_ptr,
-    png_infop info_ptr),,130);
+PNG_EXPORT(130, png_const_bytep, png_get_signature, (png_structp png_ptr, 
+    png_infop info_ptr));
 
 #ifdef PNG_bKGD_SUPPORTED
-PNG_EXPORT(png_uint_32,png_get_bKGD,(png_structp png_ptr, png_infop info_ptr,
-    png_color_16p *background),,131);
+PNG_EXPORT(131, png_uint_32, png_get_bKGD,
+    (png_structp png_ptr, png_infop info_ptr, 
+    png_color_16p *background));
 #endif
 
 #ifdef PNG_bKGD_SUPPORTED
-PNG_EXPORT(void,png_set_bKGD,(png_structp png_ptr, png_infop info_ptr,
-    png_const_color_16p background),,132);
+PNG_EXPORT(132, void, png_set_bKGD, (png_structp png_ptr, png_infop info_ptr, 
+    png_const_color_16p background));
 #endif
 
 #ifdef PNG_cHRM_SUPPORTED
-PNG_FP_EXPORT(png_uint_32,png_get_cHRM,(png_structp png_ptr,
-    png_infop info_ptr, double *white_x, double *white_y, double *red_x,
-    double *red_y, double *green_x, double *green_y, double *blue_x,
-    double *blue_y),,133);
+PNG_FP_EXPORT(133, png_uint_32, png_get_cHRM, (png_structp png_ptr, 
+    png_infop info_ptr, double *white_x, double *white_y, double *red_x, 
+    double *red_y, double *green_x, double *green_y, double *blue_x, 
+    double *blue_y));
 #ifdef PNG_FIXED_POINT_SUPPORTED /* Otherwise not implemented */
-PNG_FIXED_EXPORT(png_uint_32,png_get_cHRM_fixed,(png_structp png_ptr,
-    png_infop info_ptr, png_fixed_point *int_white_x,
-    png_fixed_point *int_white_y, png_fixed_point *int_red_x,
-    png_fixed_point *int_red_y, png_fixed_point *int_green_x,
-    png_fixed_point *int_green_y, png_fixed_point *int_blue_x,
-    png_fixed_point *int_blue_y),,134);
+PNG_FIXED_EXPORT(134, png_uint_32, png_get_cHRM_fixed, (png_structp png_ptr, 
+    png_infop info_ptr, png_fixed_point *int_white_x, 
+    png_fixed_point *int_white_y, png_fixed_point *int_red_x, 
+    png_fixed_point *int_red_y, png_fixed_point *int_green_x, 
+    png_fixed_point *int_green_y, png_fixed_point *int_blue_x, 
+    png_fixed_point *int_blue_y));
 #endif
 #endif
 
 #ifdef PNG_cHRM_SUPPORTED
-PNG_FP_EXPORT(void,png_set_cHRM,(png_structp png_ptr, png_infop info_ptr,
-    double white_x, double white_y, double red_x, double red_y, double green_x,
-    double green_y, double blue_x, double blue_y),,135);
-PNG_FIXED_EXPORT(void,png_set_cHRM_fixed,(png_structp png_ptr,
-    png_infop info_ptr, png_fixed_point int_white_x,
-    png_fixed_point int_white_y, png_fixed_point int_red_x,
-    png_fixed_point int_red_y, png_fixed_point int_green_x,
-    png_fixed_point int_green_y, png_fixed_point int_blue_x,
-    png_fixed_point int_blue_y),,136);
+PNG_FP_EXPORT(135, void, png_set_cHRM,
+    (png_structp png_ptr, png_infop info_ptr, 
+    double white_x, double white_y, double red_x, double red_y, double green_x, 
+    double green_y, double blue_x, double blue_y));
+PNG_FIXED_EXPORT(136, void, png_set_cHRM_fixed, (png_structp png_ptr, 
+    png_infop info_ptr, png_fixed_point int_white_x, 
+    png_fixed_point int_white_y, png_fixed_point int_red_x, 
+    png_fixed_point int_red_y, png_fixed_point int_green_x, 
+    png_fixed_point int_green_y, png_fixed_point int_blue_x, 
+    png_fixed_point int_blue_y));
 #endif
 
 #ifdef PNG_gAMA_SUPPORTED
-PNG_FP_EXPORT(png_uint_32,png_get_gAMA,(png_structp png_ptr, png_infop info_ptr,
-    double *file_gamma),,137);
-PNG_FIXED_EXPORT(png_uint_32,png_get_gAMA_fixed,(png_structp png_ptr,
-    png_infop info_ptr, png_fixed_point *int_file_gamma),,138);
+PNG_FP_EXPORT(137, png_uint_32, png_get_gAMA,
+    (png_structp png_ptr, png_infop info_ptr, 
+    double *file_gamma));
+PNG_FIXED_EXPORT(138, png_uint_32, png_get_gAMA_fixed, (png_structp png_ptr, 
+    png_infop info_ptr, png_fixed_point *int_file_gamma));
 #endif
 
 #ifdef PNG_gAMA_SUPPORTED
-PNG_FP_EXPORT(void,png_set_gAMA,(png_structp png_ptr, png_infop info_ptr,
-    double file_gamma),,139);
-PNG_FIXED_EXPORT(void,png_set_gAMA_fixed,(png_structp png_ptr,
-    png_infop info_ptr, png_fixed_point int_file_gamma),,140);
+PNG_FP_EXPORT(139, void, png_set_gAMA, (png_structp png_ptr, png_infop info_ptr, 
+    double file_gamma));
+PNG_FIXED_EXPORT(140, void, png_set_gAMA_fixed, (png_structp png_ptr, 
+    png_infop info_ptr, png_fixed_point int_file_gamma));
 #endif
 
 #ifdef PNG_hIST_SUPPORTED
-PNG_EXPORT(png_uint_32,png_get_hIST,(png_structp png_ptr, png_infop info_ptr,
-    png_uint_16p *hist),,141);
+PNG_EXPORT(141, png_uint_32, png_get_hIST,
+    (png_structp png_ptr, png_infop info_ptr, 
+    png_uint_16p *hist));
 #endif
 
 #ifdef PNG_hIST_SUPPORTED
-PNG_EXPORT(void,png_set_hIST,(png_structp png_ptr, png_infop info_ptr,
-    png_const_uint_16p hist),,142);
+PNG_EXPORT(142, void, png_set_hIST, (png_structp png_ptr, png_infop info_ptr, 
+    png_const_uint_16p hist));
 #endif
 
-PNG_EXPORT(png_uint_32,png_get_IHDR,(png_structp png_ptr, png_infop info_ptr,
-    png_uint_32 *width, png_uint_32 *height, int *bit_depth, int *color_type,
-    int *interlace_method, int *compression_method, int *filter_method),,143);
+PNG_EXPORT(143, png_uint_32, png_get_IHDR,
+    (png_structp png_ptr, png_infop info_ptr, 
+    png_uint_32 *width, png_uint_32 *height, int *bit_depth, int *color_type, 
+    int *interlace_method, int *compression_method, int *filter_method));
 
-PNG_EXPORT(void,png_set_IHDR,(png_structp png_ptr, png_infop info_ptr,
-    png_uint_32 width, png_uint_32 height, int bit_depth, int color_type,
-    int interlace_method, int compression_method, int filter_method),,144);
+PNG_EXPORT(144, void, png_set_IHDR,
+    (png_structp png_ptr, png_infop info_ptr, 
+    png_uint_32 width, png_uint_32 height, int bit_depth, int color_type, 
+    int interlace_method, int compression_method, int filter_method));
 
 #ifdef PNG_oFFs_SUPPORTED
-PNG_EXPORT(png_uint_32,png_get_oFFs,(png_structp png_ptr, png_infop info_ptr,
-    png_int_32 *offset_x, png_int_32 *offset_y, int *unit_type),,145);
+PNG_EXPORT(145, png_uint_32, png_get_oFFs,
+    (png_structp png_ptr, png_infop info_ptr, 
+    png_int_32 *offset_x, png_int_32 *offset_y, int *unit_type));
 #endif
 
 #ifdef PNG_oFFs_SUPPORTED
-PNG_EXPORT(void,png_set_oFFs,(png_structp png_ptr, png_infop info_ptr,
-    png_int_32 offset_x, png_int_32 offset_y, int unit_type),,146);
+PNG_EXPORT(146, void, png_set_oFFs,
+    (png_structp png_ptr, png_infop info_ptr, 
+    png_int_32 offset_x, png_int_32 offset_y, int unit_type));
 #endif
 
 #ifdef PNG_pCAL_SUPPORTED
-PNG_EXPORT(png_uint_32,png_get_pCAL,(png_structp png_ptr, png_infop info_ptr,
-    png_charp *purpose, png_int_32 *X0, png_int_32 *X1, int *type, int *nparams,
-    png_charp *units, png_charpp *params),,147);
+PNG_EXPORT(147, png_uint_32, png_get_pCAL,
+    (png_structp png_ptr, png_infop info_ptr, 
+    png_charp *purpose, png_int_32 *X0, png_int_32 *X1, int *type,
+    int *nparams, 
+    png_charp *units, png_charpp *params));
 #endif
 
 #ifdef PNG_pCAL_SUPPORTED
-PNG_EXPORT(void,png_set_pCAL,(png_structp png_ptr, png_infop info_ptr,
-    png_const_charp purpose, png_int_32 X0, png_int_32 X1, int type,
-    int nparams, png_const_charp units, png_charpp params),,148);
+PNG_EXPORT(148, void, png_set_pCAL, (png_structp png_ptr, png_infop info_ptr, 
+    png_const_charp purpose, png_int_32 X0, png_int_32 X1, int type, 
+    int nparams, png_const_charp units, png_charpp params));
 #endif
 
 #ifdef PNG_pHYs_SUPPORTED
-PNG_EXPORT(png_uint_32,png_get_pHYs,(png_structp png_ptr, png_infop info_ptr,
-    png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type),,149);
+PNG_EXPORT(149, png_uint_32, png_get_pHYs,
+    (png_structp png_ptr, png_infop info_ptr, 
+    png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type));
 #endif
 
 #ifdef PNG_pHYs_SUPPORTED
-PNG_EXPORT(void,png_set_pHYs,(png_structp png_ptr, png_infop info_ptr,
-    png_uint_32 res_x, png_uint_32 res_y, int unit_type),,150);
+PNG_EXPORT(150, void, png_set_pHYs,
+    (png_structp png_ptr, png_infop info_ptr, 
+    png_uint_32 res_x, png_uint_32 res_y, int unit_type));
 #endif
 
-PNG_EXPORT(png_uint_32,png_get_PLTE,(png_structp png_ptr, png_infop info_ptr,
-    png_colorp *palette, int *num_palette),,151);
+PNG_EXPORT(151, png_uint_32, png_get_PLTE,
+    (png_structp png_ptr, png_infop info_ptr, 
+    png_colorp *palette, int *num_palette));
 
-PNG_EXPORT(void,png_set_PLTE,(png_structp png_ptr, png_infop info_ptr,
-    png_const_colorp palette, int num_palette),,152);
+PNG_EXPORT(152, void, png_set_PLTE,
+    (png_structp png_ptr, png_infop info_ptr, 
+    png_const_colorp palette, int num_palette));
 
 #ifdef PNG_sBIT_SUPPORTED
-PNG_EXPORT(png_uint_32,png_get_sBIT,(png_structp png_ptr, png_infop info_ptr,
-    png_color_8p *sig_bit),,153);
+PNG_EXPORT(153, png_uint_32, png_get_sBIT,
+    (png_structp png_ptr, png_infop info_ptr, 
+    png_color_8p *sig_bit));
 #endif
 
 #ifdef PNG_sBIT_SUPPORTED
-PNG_EXPORT(void,png_set_sBIT,(png_structp png_ptr, png_infop info_ptr,
-    png_const_color_8p sig_bit),,154);
+PNG_EXPORT(154, void, png_set_sBIT,
+    (png_structp png_ptr, png_infop info_ptr, png_const_color_8p sig_bit));
 #endif
 
 #ifdef PNG_sRGB_SUPPORTED
-PNG_EXPORT(png_uint_32,png_get_sRGB,(png_structp png_ptr, png_infop info_ptr,
-    int *intent),,155);
+PNG_EXPORT(155, png_uint_32, png_get_sRGB,
+    (png_structp png_ptr, png_infop info_ptr, int *intent));
 #endif
 
 #ifdef PNG_sRGB_SUPPORTED
-PNG_EXPORT(void,png_set_sRGB,(png_structp png_ptr, png_infop info_ptr,
-    int intent),,156);
-PNG_EXPORT(void,png_set_sRGB_gAMA_and_cHRM,(png_structp png_ptr,
-    png_infop info_ptr, int intent),,157);
+PNG_EXPORT(156, void, png_set_sRGB,
+    (png_structp png_ptr, png_infop info_ptr, int intent));
+PNG_EXPORT(157, void, png_set_sRGB_gAMA_and_cHRM, (png_structp png_ptr, 
+    png_infop info_ptr, int intent));
 #endif
 
 #ifdef PNG_iCCP_SUPPORTED
-PNG_EXPORT(png_uint_32,png_get_iCCP,(png_structp png_ptr, png_infop info_ptr,
-    png_charpp name, int *compression_type, png_bytepp profile,
-    png_uint_32 *proflen),,158);
+PNG_EXPORT(158, png_uint_32, png_get_iCCP,
+    (png_structp png_ptr, png_infop info_ptr, 
+    png_charpp name, int *compression_type, png_bytepp profile, 
+    png_uint_32 *proflen));
 #endif
 
 #ifdef PNG_iCCP_SUPPORTED
-PNG_EXPORT(void,png_set_iCCP,(png_structp png_ptr, png_infop info_ptr,
-    png_const_charp name, int compression_type, png_const_bytep profile,
-    png_uint_32 proflen),,159);
+PNG_EXPORT(159, void, png_set_iCCP,
+    (png_structp png_ptr, png_infop info_ptr, 
+    png_const_charp name, int compression_type, png_const_bytep profile, 
+    png_uint_32 proflen));
 #endif
 
 #ifdef PNG_sPLT_SUPPORTED
-PNG_EXPORT(png_uint_32,png_get_sPLT,(png_structp png_ptr, png_infop info_ptr,
-    png_sPLT_tpp entries),,160);
+PNG_EXPORT(160, png_uint_32, png_get_sPLT,
+    (png_structp png_ptr, png_infop info_ptr, 
+    png_sPLT_tpp entries));
 #endif
 
 #ifdef PNG_sPLT_SUPPORTED
-PNG_EXPORT(void,png_set_sPLT,(png_structp png_ptr, png_infop info_ptr,
-    png_const_sPLT_tp entries, int nentries),,161);
+PNG_EXPORT(161, void, png_set_sPLT,
+    (png_structp png_ptr, png_infop info_ptr, 
+    png_const_sPLT_tp entries, int nentries));
 #endif
 
 #ifdef PNG_TEXT_SUPPORTED
 /* png_get_text also returns the number of text chunks in *num_text */
-PNG_EXPORT(png_uint_32,png_get_text,(png_structp png_ptr, png_infop info_ptr,
-    png_textp *text_ptr, int *num_text),,162);
+PNG_EXPORT(162, png_uint_32, png_get_text,
+    (png_structp png_ptr, png_infop info_ptr, 
+    png_textp *text_ptr, int *num_text));
 #endif
 
-/* Note while png_set_text() will accept a structure whose text,
+/* Note while png_set_text() will accept a structure whose text, 
  * language, and  translated keywords are NULL pointers, the structure
  * returned by png_get_text will always contain regular
  * zero-terminated C strings.  They might be empty strings but
@@ -1855,54 +1881,61 @@
  */
 
 #ifdef PNG_TEXT_SUPPORTED
-PNG_EXPORT(void,png_set_text,(png_structp png_ptr, png_infop info_ptr,
-    png_const_textp text_ptr, int num_text),,163);
+PNG_EXPORT(163, void, png_set_text,
+    (png_structp png_ptr, png_infop info_ptr, 
+    png_const_textp text_ptr, int num_text));
 #endif
 
 #ifdef PNG_tIME_SUPPORTED
-PNG_EXPORT(png_uint_32,png_get_tIME,(png_structp png_ptr, png_infop info_ptr,
-    png_timep *mod_time),,164);
+PNG_EXPORT(164, png_uint_32, png_get_tIME,
+    (png_structp png_ptr, png_infop info_ptr, png_timep *mod_time));
 #endif
 
 #ifdef PNG_tIME_SUPPORTED
-PNG_EXPORT(void,png_set_tIME,(png_structp png_ptr, png_infop info_ptr,
-    png_const_timep mod_time),,165);
+PNG_EXPORT(165, void, png_set_tIME,
+    (png_structp png_ptr, png_infop info_ptr, png_const_timep mod_time));
 #endif
 
 #ifdef PNG_tRNS_SUPPORTED
-PNG_EXPORT(png_uint_32,png_get_tRNS,(png_structp png_ptr, png_infop info_ptr,
-    png_bytep *trans_alpha, int *num_trans, png_color_16p *trans_color),,166);
+PNG_EXPORT(166, png_uint_32, png_get_tRNS,
+    (png_structp png_ptr, png_infop info_ptr, 
+    png_bytep *trans_alpha, int *num_trans, png_color_16p *trans_color));
 #endif
 
 #ifdef PNG_tRNS_SUPPORTED
-PNG_EXPORT(void,png_set_tRNS,(png_structp png_ptr, png_infop info_ptr,
-    png_const_bytep trans_alpha, int num_trans,
-    png_const_color_16p trans_color),,167);
+PNG_EXPORT(167, void, png_set_tRNS,
+    (png_structp png_ptr, png_infop info_ptr, 
+    png_const_bytep trans_alpha, int num_trans, 
+    png_const_color_16p trans_color));
 #endif
 
 #ifdef PNG_sCAL_SUPPORTED
-PNG_FP_EXPORT(png_uint_32,png_get_sCAL,(png_structp png_ptr, png_infop info_ptr,
-    int *unit, double *width, double *height),,168);
+PNG_FP_EXPORT(168, png_uint_32, png_get_sCAL,
+    (png_structp png_ptr, png_infop info_ptr, 
+    int *unit, double *width, double *height));
 #ifdef PNG_FLOATING_ARITHMETIC_SUPPORTED
-/* NOTE: this API is currently implemented using floating point arithmetic,
+/* NOTE: this API is currently implemented using floating point arithmetic, 
  * consequently it can only be used on systems with floating point support.
  * In any case the range of values supported by png_fixed_point is small and it
  * is highly recommended that png_get_sCAL_s be used instead.
  */
-PNG_FIXED_EXPORT(png_uint_32,png_get_sCAL_fixed,(png_structp png_ptr,
-    png_infop info_ptr, int *unit, png_fixed_point *width,
-    png_fixed_point *height),,214);
+PNG_FIXED_EXPORT(214, png_uint_32, png_get_sCAL_fixed, (png_structp png_ptr, 
+    png_infop info_ptr, int *unit, png_fixed_point *width, 
+    png_fixed_point *height));
 #endif
-PNG_EXPORT(png_uint_32,png_get_sCAL_s,(png_structp png_ptr,
-    png_infop info_ptr, int *unit, png_charpp swidth, png_charpp sheight),,169);
+PNG_EXPORT(169, png_uint_32, png_get_sCAL_s,
+    (png_structp png_ptr, 
+    png_infop info_ptr, int *unit, png_charpp swidth, png_charpp sheight));
 
-PNG_FP_EXPORT(void,png_set_sCAL,(png_structp png_ptr, png_infop info_ptr,
-    int unit, double width, double height),,170);
-PNG_FIXED_EXPORT(void,png_set_sCAL_fixed,(png_structp png_ptr,
-   png_infop info_ptr, int unit, png_fixed_point width,
-   png_fixed_point height),,213);
-PNG_EXPORT(void,png_set_sCAL_s,(png_structp png_ptr, png_infop info_ptr,
-    int unit, png_const_charp swidth, png_const_charp sheight),,171);
+PNG_FP_EXPORT(170, void, png_set_sCAL,
+    (png_structp png_ptr, png_infop info_ptr, 
+    int unit, double width, double height));
+PNG_FIXED_EXPORT(213, void, png_set_sCAL_fixed, (png_structp png_ptr, 
+   png_infop info_ptr, int unit, png_fixed_point width, 
+   png_fixed_point height));
+PNG_EXPORT(171, void, png_set_sCAL_s,
+    (png_structp png_ptr, png_infop info_ptr, 
+    int unit, png_const_charp swidth, png_const_charp sheight));
 #endif /* PNG_sCAL_SUPPORTED */
 
 #ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
@@ -1915,44 +1948,44 @@
            = 2: keep only if safe-to-copy
            = 3: keep even if unsafe-to-copy
 */
-PNG_EXPORT(void, png_set_keep_unknown_chunks,(png_structp png_ptr, int keep,
-    png_const_bytep chunk_list, int num_chunks),,172);
-PNG_EXPORT(int,png_handle_as_unknown,(png_structp png_ptr,
-    png_const_bytep chunk_name),,173);
+PNG_EXPORT(172, void, png_set_keep_unknown_chunks,
+    (png_structp png_ptr, int keep, 
+    png_const_bytep chunk_list, int num_chunks));
+PNG_EXPORT(173, int, png_handle_as_unknown, (png_structp png_ptr, 
+    png_const_bytep chunk_name));
 #endif
 #ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED
-PNG_EXPORT(void, png_set_unknown_chunks,(png_structp png_ptr,
-    png_infop info_ptr, png_const_unknown_chunkp unknowns, int num_unknowns),,
-    174);
-PNG_EXPORT(void, png_set_unknown_chunk_location, (png_structp png_ptr,
-    png_infop info_ptr, int chunk, int location),,175);
-PNG_EXPORT(int,png_get_unknown_chunks,(png_structp png_ptr,
-    png_infop info_ptr, png_unknown_chunkpp entries),,176);
+PNG_EXPORT(174, void, png_set_unknown_chunks, (png_structp png_ptr, 
+    png_infop info_ptr, png_const_unknown_chunkp unknowns, int num_unknowns));
+PNG_EXPORT(175, void, png_set_unknown_chunk_location, (png_structp png_ptr, 
+    png_infop info_ptr, int chunk, int location));
+PNG_EXPORT(176, int, png_get_unknown_chunks, (png_structp png_ptr, 
+    png_infop info_ptr, png_unknown_chunkpp entries));
 #endif
 
 /* Png_free_data() will turn off the "valid" flag for anything it frees.
- * If you need to turn it off for a chunk that your application has freed,
+ * If you need to turn it off for a chunk that your application has freed, 
  * you can use png_set_invalid(png_ptr, info_ptr, PNG_INFO_CHNK);
  */
-PNG_EXPORT(void, png_set_invalid,(png_structp png_ptr, png_infop info_ptr,
-    int mask),,177);
+PNG_EXPORT(177, void, png_set_invalid,
+    (png_structp png_ptr, png_infop info_ptr, int mask));
 
 #ifdef PNG_INFO_IMAGE_SUPPORTED
 /* The "params" pointer is currently not used and is for future expansion. */
-PNG_EXPORT(void, png_read_png,(png_structp png_ptr, png_infop info_ptr,
-    int transforms, png_voidp params),,178);
-PNG_EXPORT(void, png_write_png,(png_structp png_ptr, png_infop info_ptr,
-    int transforms, png_voidp params),,179);
+PNG_EXPORT(178, void, png_read_png, (png_structp png_ptr, png_infop info_ptr, 
+    int transforms, png_voidp params));
+PNG_EXPORT(179, void, png_write_png, (png_structp png_ptr, png_infop info_ptr, 
+    int transforms, png_voidp params));
 #endif
 
-PNG_EXPORT(png_const_charp,png_get_copyright,(png_structp png_ptr),,180);
-PNG_EXPORT(png_const_charp,png_get_header_ver,(png_structp png_ptr),,181);
-PNG_EXPORT(png_const_charp,png_get_header_version,(png_structp png_ptr),,182);
-PNG_EXPORT(png_const_charp,png_get_libpng_ver,(png_structp png_ptr),,183);
+PNG_EXPORT(180, png_const_charp, png_get_copyright, (png_structp png_ptr));
+PNG_EXPORT(181, png_const_charp, png_get_header_ver, (png_structp png_ptr));
+PNG_EXPORT(182, png_const_charp, png_get_header_version, (png_structp png_ptr));
+PNG_EXPORT(183, png_const_charp, png_get_libpng_ver, (png_structp png_ptr));
 
 #ifdef PNG_MNG_FEATURES_SUPPORTED
-PNG_EXPORT(png_uint_32,png_permit_mng_features,(png_structp png_ptr,
-    png_uint_32 mng_features_permitted),,184);
+PNG_EXPORT(184, png_uint_32, png_permit_mng_features, (png_structp png_ptr, 
+    png_uint_32 mng_features_permitted));
 #endif
 
 /* For use in png_set_keep_unknown, added to version 1.2.6 */
@@ -1965,63 +1998,64 @@
  * messages before passing them to the error or warning handler.
  */
 #ifdef PNG_ERROR_NUMBERS_SUPPORTED
-PNG_EXPORT(void,png_set_strip_error_numbers,(png_structp png_ptr,
-    png_uint_32 strip_mode),,185);
+PNG_EXPORT(185, void, png_set_strip_error_numbers,
+    (png_structp png_ptr, 
+    png_uint_32 strip_mode));
 #endif
 
 /* Added in libpng-1.2.6 */
 #ifdef PNG_SET_USER_LIMITS_SUPPORTED
-PNG_EXPORT(void,png_set_user_limits,(png_structp png_ptr,
-    png_uint_32 user_width_max, png_uint_32 user_height_max),,186);
-PNG_EXPORT(png_uint_32,png_get_user_width_max,(png_structp png_ptr),,187);
-PNG_EXPORT(png_uint_32,png_get_user_height_max,(png_structp png_ptr),,188);
+PNG_EXPORT(186, void, png_set_user_limits, (png_structp png_ptr, 
+    png_uint_32 user_width_max, png_uint_32 user_height_max));
+PNG_EXPORT(187, png_uint_32, png_get_user_width_max, (png_structp png_ptr));
+PNG_EXPORT(188, png_uint_32, png_get_user_height_max, (png_structp png_ptr));
 /* Added in libpng-1.4.0 */
-PNG_EXPORT(void,png_set_chunk_cache_max,(png_structp png_ptr,
-    png_uint_32 user_chunk_cache_max),,189);
-PNG_EXPORT(png_uint_32,png_get_chunk_cache_max,(png_structp png_ptr),,190);
+PNG_EXPORT(189, void, png_set_chunk_cache_max, (png_structp png_ptr, 
+    png_uint_32 user_chunk_cache_max));
+PNG_EXPORT(190, png_uint_32, png_get_chunk_cache_max, (png_structp png_ptr));
 /* Added in libpng-1.4.1 */
-PNG_EXPORT(void,png_set_chunk_malloc_max,(png_structp png_ptr,
-    png_alloc_size_t user_chunk_cache_max),,191);
-PNG_EXPORT(png_alloc_size_t,png_get_chunk_malloc_max,(png_structp png_ptr),,
-    192);
+PNG_EXPORT(191, void, png_set_chunk_malloc_max, (png_structp png_ptr, 
+    png_alloc_size_t user_chunk_cache_max));
+PNG_EXPORT(192, png_alloc_size_t, png_get_chunk_malloc_max,
+    (png_structp png_ptr));
 #endif
 
 #if defined(PNG_INCH_CONVERSIONS_SUPPORTED)
-PNG_EXPORT(png_uint_32,png_get_pixels_per_inch,(png_structp png_ptr,
-    png_infop info_ptr),,193);
+PNG_EXPORT(193, png_uint_32, png_get_pixels_per_inch, (png_structp png_ptr, 
+    png_infop info_ptr));
 
-PNG_EXPORT(png_uint_32,png_get_x_pixels_per_inch,(png_structp png_ptr,
-    png_infop info_ptr),,194);
+PNG_EXPORT(194, png_uint_32, png_get_x_pixels_per_inch, (png_structp png_ptr, 
+    png_infop info_ptr));
 
-PNG_EXPORT(png_uint_32,png_get_y_pixels_per_inch,(png_structp png_ptr,
-    png_infop info_ptr),,195);
+PNG_EXPORT(195, png_uint_32, png_get_y_pixels_per_inch, (png_structp png_ptr, 
+    png_infop info_ptr));
 
-PNG_FP_EXPORT(float,png_get_x_offset_inches,(png_structp png_ptr,
-    png_infop info_ptr),,196);
+PNG_FP_EXPORT(196, float, png_get_x_offset_inches, (png_structp png_ptr, 
+    png_infop info_ptr));
 #ifdef PNG_FIXED_POINT_SUPPORTED /* otherwise not implemented. */
-PNG_FIXED_EXPORT(png_fixed_point,png_get_x_offset_inches_fixed,
-    (png_structp png_ptr, png_infop info_ptr),,211);
+PNG_FIXED_EXPORT(211, png_fixed_point, png_get_x_offset_inches_fixed, 
+    (png_structp png_ptr, png_infop info_ptr));
 #endif
 
-PNG_FP_EXPORT(float,png_get_y_offset_inches,(png_structp png_ptr,
-    png_infop info_ptr),,197);
+PNG_FP_EXPORT(197, float, png_get_y_offset_inches, (png_structp png_ptr, 
+    png_infop info_ptr));
 #ifdef PNG_FIXED_POINT_SUPPORTED /* otherwise not implemented. */
-PNG_FIXED_EXPORT(png_fixed_point,png_get_y_offset_inches_fixed,
-    (png_structp png_ptr, png_infop info_ptr),,212);
+PNG_FIXED_EXPORT(212, png_fixed_point, png_get_y_offset_inches_fixed, 
+    (png_structp png_ptr, png_infop info_ptr));
 #endif
 
 #  ifdef PNG_pHYs_SUPPORTED
-PNG_EXPORT(png_uint_32,png_get_pHYs_dpi,(png_structp png_ptr,
-    png_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type),
-    ,198);
+PNG_EXPORT(198, png_uint_32, png_get_pHYs_dpi, (png_structp png_ptr, 
+    png_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y,
+    int *unit_type));
 #  endif /* PNG_pHYs_SUPPORTED */
 #endif  /* PNG_INCH_CONVERSIONS_SUPPORTED */
 
 /* Added in libpng-1.4.0 */
 #ifdef PNG_IO_STATE_SUPPORTED
-PNG_EXPORT(png_uint_32,png_get_io_state,(png_structp png_ptr),,199);
+PNG_EXPORT(199, png_uint_32, png_get_io_state, (png_structp png_ptr));
 
-PNG_EXPORT(png_const_bytep,png_get_io_chunk_name,(png_structp png_ptr),,200);
+PNG_EXPORT(200, png_const_bytep, png_get_io_chunk_name, (png_structp png_ptr));
 
 /* The flags returned by png_get_io_state() are the following: */
 #  define PNG_IO_NONE        0x0000   /* no I/O at this moment */
@@ -2103,29 +2137,29 @@
 #endif
 
 #ifdef PNG_READ_INT_FUNCTIONS_SUPPORTED
-PNG_EXPORT(png_uint_32,png_get_uint_32,(png_const_bytep buf),,201);
-PNG_EXPORT(png_uint_16,png_get_uint_16,(png_const_bytep buf),,202);
-PNG_EXPORT(png_int_32,png_get_int_32,(png_const_bytep buf),,203);
+PNG_EXPORT(201, png_uint_32, png_get_uint_32, (png_const_bytep buf));
+PNG_EXPORT(202, png_uint_16, png_get_uint_16, (png_const_bytep buf));
+PNG_EXPORT(203, png_int_32, png_get_int_32, (png_const_bytep buf));
 #endif
 
-PNG_EXPORT(png_uint_32,png_get_uint_31,(png_structp png_ptr,
-    png_const_bytep buf),,204);
+PNG_EXPORT(204, png_uint_32, png_get_uint_31, (png_structp png_ptr, 
+    png_const_bytep buf));
 /* No png_get_int_16 -- may be added if there's a real need for it. */
 
 /* Place a 32-bit number into a buffer in PNG byte order (big-endian). */
 #ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED
-PNG_EXPORT(void,png_save_uint_32,(png_bytep buf, png_uint_32 i),,205);
+PNG_EXPORT(205, void, png_save_uint_32, (png_bytep buf, png_uint_32 i));
 #endif
 #ifdef PNG_SAVE_INT_32_SUPPORTED
-PNG_EXPORT(void,png_save_int_32,(png_bytep buf, png_int_32 i),,206);
+PNG_EXPORT(206, void, png_save_int_32, (png_bytep buf, png_int_32 i));
 #endif
 
 /* Place a 16-bit number into a buffer in PNG byte order.
- * The parameter is declared unsigned int, not png_uint_16,
+ * The parameter is declared unsigned int, not png_uint_16, 
  * just to avoid potential problems on pre-ANSI C compilers.
  */
 #ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED
-PNG_EXPORT(void,png_save_uint_16,(png_bytep buf, unsigned int i),,207);
+PNG_EXPORT(207, void, png_save_uint_16, (png_bytep buf, unsigned int i));
 /* No png_save_int_16 -- may be added if there's a real need for it. */
 #endif
 
@@ -2133,7 +2167,7 @@
  * defs
  */
 
-/* The last ordinal number (this is the *last* one, the next one to
+/* The last ordinal number (this is the *last* one; the next one to
  * use is one more than this.)
  */
 #ifdef PNG_EXPORT_LAST_ORDINAL