/* def.dfn - define format of libpng.def
 *
 * Last changed in libpng version 1.5.7 [December 15, 2011]
 * Copyright (c) 2010-2011 Glenn Randers-Pehrson
 *
 * This code is released under the libpng license.
 * For conditions of distribution and use, see the disclaimer
 * and license in png.h
 */

/* These macros exist to make the header and trailer shorter below: */
#define S PNG_DEFN_MAGIC
#define E PNG_DEFN_END

/* Write the export file header: */
S-;---------------------------------------------------------------E
S-; LIBPNG module definition file for OS/2-E
S-;---------------------------------------------------------------E
S--E
S-; If you give the library an explicit name one or other files-E
S-; may need modifying to support the new name on one or more-E
S-; systems.-E
S-LIBRARY-E
S-OS2 DESCRIPTION "PNG image compression library"-E
S-OS2 CODE PRELOAD MOVEABLE DISCARDABLE-E
S--E
S-EXPORTS-E
S-;Version libpng 1. PNG_JOIN 7. PNG_JOIN 0-E

/* NOTE: PNG_JOIN is interpreted by the calling script as a signal to
 * join the two things on either side, so we can do symbol
 * substitution within the name, regular C ## joins the pp-tokens,
 * not their final values.
 */
#define PNG_EXPORTA(ordinal, type, name, args, attributes)\
	PNG_DEFN_MAGIC- SYMBOL_PREFIX PNG_JOIN name-PNG_DEFN_END

#include "../png.h"
