uves_parameters.h

00001 /*
00002  * This file is part of the ESO UVES Pipeline
00003  * Copyright (C) 2004,2005 European Southern Observatory
00004  *
00005  * This program is free software; you can redistribute it and/or modify
00006  * it under the terms of the GNU General Public License as published by
00007  * the Free Software Foundation; either version 2 of the License, or
00008  * (at your option) any later version.
00009  *
00010  * This program is distributed in the hope that it will be useful,
00011  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013  * GNU General Public License for more details.
00014  *
00015  * You should have received a copy of the GNU General Public License
00016  * along with this program; if not, write to the Free Software
00017  * Foundation, 51 Franklin St, Fifth Floor, Boston, MA  02111-1307  USA
00018  */
00019 
00020 /*
00021  * $Author: jmlarsen $
00022  * $Date: 2007/06/26 13:34:57 $
00023  * $Revision: 1.10 $
00024  * $Name: uves-3_4_5 $
00025  * $Log: uves_parameters.h,v $
00026  * Revision 1.10  2007/06/26 13:34:57  jmlarsen
00027  * Exported function for FLAMES
00028  *
00029  * Revision 1.9  2007/06/06 08:17:33  amodigli
00030  * replace tab with 4 spaces
00031  *
00032  * Revision 1.8  2007/03/15 12:34:08  jmlarsen
00033  * Added missing include directive
00034  *
00035  * Revision 1.7  2006/10/24 14:04:46  jmlarsen
00036  * Defined macros to provide minimal syntax for parameter creation
00037  *
00038  * Revision 1.6  2006/08/17 13:56:53  jmlarsen
00039  * Reduced max line length
00040  *
00041  * Revision 1.5  2006/08/07 11:35:35  jmlarsen
00042  * Disabled parameter environment variable mode
00043  *
00044  * Revision 1.4  2005/12/19 16:17:56  jmlarsen
00045  * Replaced bool -> int
00046  *
00047  */
00048 #ifndef UVES_PARAMETERS_H
00049 #define UVES_PARAMETERS_H
00050 
00051 /*-----------------------------------------------------------------------------
00052                     Includes
00053  -----------------------------------------------------------------------------*/
00054 
00055 #include <uves_utils_wrappers.h>
00056 
00057 #include <cpl.h>
00058 /*-----------------------------------------------------------------------------
00059                             Typedefs
00060  -----------------------------------------------------------------------------*/
00061 /*-----------------------------------------------------------------------------
00062                              Defines
00063  -----------------------------------------------------------------------------*/
00064 /*-----------------------------------------------------------------------------
00065                                    Prototypes
00066  -----------------------------------------------------------------------------*/
00067 
00068 cpl_error_code
00069 uves_define_global_parameters(cpl_parameterlist *parlist);
00070 
00071 int
00072 uves_exec_recipe(int (*get_info)(cpl_pluginlist *), 
00073                  const char *recipe_domain,
00074                  const cpl_parameterlist *parameters, 
00075                  cpl_frameset *frames,
00076                  const char *caller_id, const char *context);
00077 
00078 int
00079 uves_invoke_recipe(const char *recipe_id, const cpl_parameterlist *parameters, 
00080            cpl_frameset *frames,
00081            const char *caller_id, const char *context);
00082 
00083 int
00084 uves_propagate_parameters_step(const char *step_id,
00085                    cpl_parameterlist *parameters,
00086                    const char *recipe_id, const char *context);
00087 
00088 int
00089 uves_prop_par(int (*get_info)(cpl_pluginlist *),
00090           cpl_parameterlist *parameters,
00091           const char *recipe_id, const char *context);
00092 
00093 int
00094 uves_propagate_parameters(const char *subrecipe_id, 
00095               cpl_parameterlist *parameters,
00096               const char *recipe_id, const char *context);
00097 
00098 /*----------------------------------------------------------------------------*/
00108 /*----------------------------------------------------------------------------*/
00109 #define uves_parameter_new_value(p, name, type, description, context, default) \
00110       do {                                                                     \
00111             p = cpl_parameter_new_value(                                       \
00112                          name, type, description, context, default);           \
00113             cpl_parameter_disable(p, CPL_PARAMETER_MODE_ENV);                  \
00114       } while(false)
00115 
00116 /*----------------------------------------------------------------------------*/
00125 /*----------------------------------------------------------------------------*/
00126 #define uves_parameter_new_range(p, name, type, description, context,          \
00127                  default, min, max)                            \
00128       do {                                                                     \
00129             p = cpl_parameter_new_range(                                       \
00130                          name, type, description, context, default, min, max); \
00131             cpl_parameter_disable(p, CPL_PARAMETER_MODE_ENV);                  \
00132       } while(false)
00133 
00134 /*----------------------------------------------------------------------------*/
00144 /*----------------------------------------------------------------------------*/
00145 #define uves_parameter_new_enum(p, name, type, description, context, nopt, ...)\
00146       do {                                                                     \
00147             p = cpl_parameter_new_enum(                                        \
00148                          name, type, description, context, nopt, __VA_ARGS__); \
00149             cpl_parameter_disable(p, CPL_PARAMETER_MODE_ENV);                  \
00150       } while(false)
00151 
00152 
00153 
00154 /*----------------------------------------------------------------------------*/
00165 /*----------------------------------------------------------------------------*/
00166 #define uves_par_new_value(name, type, description, default)               \
00167     do {                                                                   \
00168         cpl_parameter *p;                                                  \
00169         char *context   = uves_sprintf("%s%s%s", recipe_id,                \
00170                                        subcontext != NULL ? "." : "",      \
00171                                        subcontext != NULL ? subcontext: "");\
00172         char *full_name = uves_sprintf("%s.%s", context, name);            \
00173         uves_parameter_new_value(p, full_name,                             \
00174                  type,                                     \
00175                  description,                              \
00176                                  context,                                  \
00177                  default);                                 \
00178        cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI, name);           \
00179        cpl_parameterlist_append(parameters, p);                            \
00180        cpl_free(context);                                                  \
00181        cpl_free(full_name);                                                \
00182     } while(false)
00183 
00184 /*----------------------------------------------------------------------------*/
00197 /*----------------------------------------------------------------------------*/
00198 #define uves_par_new_range(name, type, description, default, min, max)     \
00199     do {                                                                   \
00200         cpl_parameter *p;                                                  \
00201         char *context   = uves_sprintf("%s%s%s", recipe_id,                \
00202                                        subcontext != NULL ? "." : "",      \
00203                                        subcontext != NULL ? subcontext: "");\
00204         char *full_name = uves_sprintf("%s.%s", context, name);            \
00205         uves_parameter_new_range(p, full_name,                             \
00206                  type,                                     \
00207                  description,                              \
00208                                  context,                                  \
00209                  default, min, max);                       \
00210        cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI, name);           \
00211        cpl_parameterlist_append(parameters, p);                            \
00212        cpl_free(context);                                                  \
00213        cpl_free(full_name);                                                \
00214     } while(false)
00215 
00216 
00217 /*----------------------------------------------------------------------------*/
00229 /*----------------------------------------------------------------------------*/
00230 #define uves_par_new_enum(name, type, description, default, nopt, ...)       \
00231     do {                                                                     \
00232         cpl_parameter *p;                                                    \
00233         char *context   = uves_sprintf("%s%s%s", recipe_id,                \
00234                                        subcontext != NULL ? "." : "",      \
00235                                        subcontext != NULL ? subcontext: "");\
00236         char *full_name = uves_sprintf("%s.%s", context, name);              \
00237         uves_parameter_new_enum(p, full_name,                                \
00238                  type,                                       \
00239                  description,                                \
00240                                  context,                                    \
00241                  default, nopt, __VA_ARGS__);                \
00242        cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI, name);             \
00243        cpl_parameterlist_append(parameters, p);                              \
00244        cpl_free(context);                                                    \
00245        cpl_free(full_name);                                                  \
00246     } while(false)
00247 
00248 #endif  /* UVES_PARAMETERS_H */

Generated on Thu Nov 15 14:32:29 2007 for UVES Pipeline Reference Manual by  doxygen 1.5.1