/* 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 1.7.0alpha02-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"
