/* libsswf-version.h -- written by Alexis WILKE for Made to Order Software Corp. (c) 2002-2008 */
#ifndef LIBSSWF_VERSION_H
#define	LIBSSWF_VERSION_H

/*

Copyright (c) 2002-2008 Made to Order Software Corp.

Permission is hereby granted, free of charge, to any
person obtaining a copy of this software and
associated documentation files (the "Software"), to
deal in the Software without restriction, including
without limitation the rights to use, copy, modify,
merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom
the Software is furnished to do so, subject to the
following conditions:

The above copyright notice and this permission notice
shall be included in all copies or substantial
portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

*/

/** \file
 *
 * \brief The authority defining the version of the SSWF libraries
 *
 * The libsswf-version.h header file describes the SSWF version
 * and the versions of all the libraries available in the SSWF
 * project.
 *
 * The library versions are compatibility versions used by the
 * dynamic linker to make sure that a given library can indeed
 * be used by a software or another.
 */



/** \brief The exact SSWF project version
 *
 * The SSWF VERSION represents the current project release
 * (see libtool -release).
 *
 * Its declares the exact version of the SSWF project. It is
 * composed of 3 decimal numbers separated by two points.
 *
 * The first number defines the major version of the library and
 * tools. So far, it has not changed.
 *
 * The second number defines the tag versions, each time I add
 * support for one or more SWF tags, that version is increased.
 *
 * The third number defines the revision number. I increase that
 * number whenever I make a new release with bug fixes and new
 * functions, but no new SWF tags.
 *
 * \note
 * Do not confound the SSWF project version (SSWF_VERSION) and
 * the SSWF library compatibility version (LIBSSWF_VERSION).
 * These two versions are not the same. One represents bug
 * fixes and enhancements, the other represents changes to the
 * interface of the library (which happen nearly all the time!).
 *
 * \sa LIBSSWF_VERSION
 */
#define	SSWF_VERSION		1.8.3

/** \brief A low-level macro to create a C string
 *
 * The TO_STR_sub(s) macro is used to transform the parameter
 * into a string. This macro is called by the TO_STR(s) macro.
 *
 * \param s Often another macro such as SSWF_VERSION
 *
 * \sa SSWF_VERSION
 */
#define	TO_STR_sub(s)		#s

/** \brief Transform a macro which is not a string into a string
 *
 * The TO_STR(s) macro transform the parameter into a string.
 *
 * \param s Often another macro such as SSWF_VERSION
 *
 * \sa SSWF_VERSION
 */
#define	TO_STR(s)		TO_STR_sub(s)


/******************************************************************************
 * The following are the current compatibility versions for each library
 * (see libtool -version-info)
 ******************************************************************************/


/** \brief The C++ SSWF library (libsswf) compatibility version
 *
 * When you run a program linked against the dynamic SSWF library, the
 * dynamic linker will check the version of the library to make sure that
 * it is compatible. This version is defined by LIBSSWF_VERSION.
 *
 * When this version changes, it is not unlikely that the C library
 * version will change too.
 *
 * The syntax is what libtools supports. Three decimal numbers separated
 * by semicolons.
 *
 * \sa LIBSSWFC_VERSION
 */
#define	LIBSSWF_VERSION		3:0:0


/** \brief The C SSWF library (libsswf_c) compatibility version
 *
 * When you run a program linked against the dynamic C SSWF library, the
 * dynamic linker will check the version of the library to make sure that
 * it is compatible. This version is defined by LIBSSWFC_VERSION.
 *
 * This version should change less than the C++ library version, yet it
 * will certain often change when the C++ library includes new functions
 * and parameters.
 *
 * The syntax is what libtools supports. Three decimal numbers separated
 * by semicolons.
 *
 * \sa LIBSSWF_VERSION
 */
#define	LIBSSWFC_VERSION	2:0:0


/** \brief The ActionScript compiler library (libsswf_as) compatibility version
 *
 * When you run a program linked against the dynamic ActionScript compiler
 * library, the dynamic linker will check the version of the library to
 * make sure that it is compatible. This version is defined by
 * LIBSSWFAS_VERSION.
 *
 * The syntax is what libtools supports. Three decimal numbers separated
 * by semicolons.
 *
 * \sa LIBSSWFASAS_VERSION
 */
#define	LIBSSWFAS_VERSION	1:1:0


/** \brief The ActionScript assembler library (libsswf_asas) compatibility version
 *
 * When you run a program linked against the dynamic ActionScript assembler
 * library, the dynamic linker will check the version of the library to
 * make sure that it is compatible. This version is defined by
 * LIBSSWFASAS_VERSION.
 *
 * The syntax is what libtools supports. Three decimal numbers separated
 * by semicolons.
 *
 * \sa LIBSSWFAS_VERSION
 */
#define	LIBSSWFASAS_VERSION	1:0:0



/****************************************************************************
 *
 * Fink requires us to setup the library versions. This is anyhow a very
 * good idea to manage compatibility between versions. Only problem, I need
 * to test and make sure to change the versions each time I'm about to
 * create a new public release...
 *
 * libtool expects a -version_info option with three values. What follows
 * is an extract from:
 *
 *   http://docsrv.sco.com:507/cgi-bin/info2html?(libtool.info.gz)Updating%2520version%2520info&lang=en
 *
 * which explains how we need to handle this information.
 *
 ****************************************************************************
 *
 *    Here are a set of rules to help you update your library version
 * information:
 * 
 *   1. Start with version information of `0:0:0' for each libtool library.
 * 
 *   2. Update the version information only immediately before a public
 *      release of your software.  More frequent updates are unnecessary,
 *      and only guarantee that the current interface number gets larger
 *      faster.
 * 
 *   3. If the library source code has changed at all since the last
 *      update, then increment REVISION (`C:R:A' becomes `C:r+1:A').
 * 
 *   4. If any interfaces have been added, removed, or changed since the
 *      last update, increment CURRENT, and set REVISION to 0.
 * 
 *   5. If any interfaces have been added since the last public release,
 *      then increment AGE.
 * 
 *   6. If any interfaces have been removed since the last public release,
 *      then set AGE to 0.
 *
 ****************************************************************************
 */


#endif		// #ifndef LIBSSWF_VERSION_H
