|
- /*
- * libpipi Pathetic image processing interface library
- * Copyright (c) 2004-2008 Sam Hocevar <sam@zoy.org>
- * All Rights Reserved
- *
- * $Id$
- *
- * This library is free software. It comes without any warranty, to
- * the extent permitted by applicable law. You can redistribute it
- * and/or modify it under the terms of the Do What The Fuck You Want
- * To Public License, Version 2, as published by Sam Hocevar. See
- * http://sam.zoy.org/wtfpl/COPYING for more details.
- */
-
- /* pipi_template.h: the magic template preprocessing file
- *
- * Define the following macros before including this file:
- * * TEMPLATE_FLAGS is set to a list of toggle flags, a binary OR of:
- * - SET_FLAG_GRAY
- * - SET_FLAG_WRAP
- * - SET_FLAG_8BIT
- * * TEMPLATE_FILE is set to the template file. The following macros
- * will be defined when including it. Their value depend on the flags
- * specified above:
- * - FLAG_GRAY is set to 0 or 1
- * - FLAG_WRAP is set to 0 or 1
- * - FLAG_8BIT is set to 0 or 1
- * - T(x) expands x by adding relevant information, eg. x##_gray_wrap
- */
-
- #if !defined FLAG_GRAY
- # if (TEMPLATE_FLAGS) & SET_FLAG_GRAY
- # define FLAG_GRAY 1
- # define T_GRAY(x) CAT(x, _gray)
- # include __FILE__
- # undef FLAG_GRAY
- # undef T_GRAY
- # endif
- # define FLAG_GRAY 0
- # define T_GRAY(x) x
- # include __FILE__
- # undef FLAG_GRAY
- # undef T_GRAY
-
- #elif !defined FLAG_WRAP
- # if (TEMPLATE_FLAGS) & SET_FLAG_WRAP
- # define FLAG_WRAP 1
- # define T_WRAP(x) CAT(x, _wrap)
- # include __FILE__
- # undef FLAG_WRAP
- # undef T_WRAP
- # endif
- # define FLAG_WRAP 0
- # define T_WRAP(x) x
- # include __FILE__
- # undef FLAG_WRAP
- # undef T_WRAP
-
- #elif !defined FLAG_8BIT
- # if (TEMPLATE_FLAGS) & SET_FLAG_8BIT
- # define FLAG_8BIT 1
- # define T_8BIT(x) CAT(x, _8bit)
- # include __FILE__
- # undef FLAG_8BIT
- # undef T_8BIT
- # endif
- # define FLAG_8BIT 0
- # define T_8BIT(x) x
- # include __FILE__
- # undef FLAG_8BIT
- # undef T_8BIT
-
- #else
- # define CAT(x, y) x ## y
- # define T(x) T_8BIT(T_WRAP(T_GRAY(x)))
- # include TEMPLATE_FILE
- # undef CAT
- # undef S
- #endif
|