UVES Pipeline Reference Manual  5.4.0
uves_parameters.h
1 /*
2  * This file is part of the ESO UVES Pipeline
3  * Copyright (C) 2004,2005 European Southern Observatory
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, 51 Franklin St, Fifth Floor, Boston, MA 02111-1307 USA
18  */
19 
20 /*
21  * $Author: amodigli $
22  * $Date: 2010-09-24 09:32:06 $
23  * $Revision: 1.19 $
24  * $Name: not supported by cvs2svn $
25  * $Log: not supported by cvs2svn $
26  * Revision 1.17 2010/06/09 07:17:14 amodigli
27  * renamed parameter definition function used by response step in redchain recipe to make them more explicit
28  *
29  * Revision 1.16 2010/06/08 16:29:23 amodigli
30  * Fixed problems in parameter definition for reduction chain recipe
31  *
32  * Revision 1.15 2010/05/18 11:35:18 amodigli
33  * added uves_master_flat_define_parameters
34  *
35  * Revision 1.14 2010/04/28 08:46:17 amodigli
36  * add uves_define_efficiency_parameters()
37  *
38  * Revision 1.13 2010/03/22 15:55:33 amodigli
39  * added uves_master_stack_define_parameters
40  *
41  * Revision 1.12 2008/03/04 15:21:36 amodigli
42  * fixed redchain problem with clean_traps parameter
43  *
44  * Revision 1.11 2008/03/03 16:35:07 amodigli
45  * added parameter to control trap column correction
46  *
47  * Revision 1.10 2007/06/26 13:34:57 jmlarsen
48  * Exported function for FLAMES
49  *
50  * Revision 1.9 2007/06/06 08:17:33 amodigli
51  * replace tab with 4 spaces
52  *
53  * Revision 1.8 2007/03/15 12:34:08 jmlarsen
54  * Added missing include directive
55  *
56  * Revision 1.7 2006/10/24 14:04:46 jmlarsen
57  * Defined macros to provide minimal syntax for parameter creation
58  *
59  * Revision 1.6 2006/08/17 13:56:53 jmlarsen
60  * Reduced max line length
61  *
62  * Revision 1.5 2006/08/07 11:35:35 jmlarsen
63  * Disabled parameter environment variable mode
64  *
65  * Revision 1.4 2005/12/19 16:17:56 jmlarsen
66  * Replaced bool -> int
67  *
68  */
69 #ifndef UVES_PARAMETERS_H
70 #define UVES_PARAMETERS_H
71 
72 /*-----------------------------------------------------------------------------
73  Includes
74  -----------------------------------------------------------------------------*/
75 
76 #include <uves_utils_wrappers.h>
77 
78 #include <cpl.h>
79 /*-----------------------------------------------------------------------------
80  Typedefs
81  -----------------------------------------------------------------------------*/
82 /*-----------------------------------------------------------------------------
83  Defines
84  -----------------------------------------------------------------------------*/
85 /*-----------------------------------------------------------------------------
86  Prototypes
87  -----------------------------------------------------------------------------*/
88 
89 cpl_error_code
90 uves_define_global_parameters(cpl_parameterlist *parlist);
91 
92 cpl_error_code
93 uves_define_efficiency_parameters(cpl_parameterlist *parlist);
94 
95 
96 cpl_error_code
97 uves_define_rebin_for_response_chain_parameters(cpl_parameterlist *parlist);
98 
99 cpl_error_code
100 uves_define_reduce_for_response_chain_parameters(cpl_parameterlist *parlist);
101 
102 cpl_error_code
103 uves_define_efficiency_for_response_chain_parameters(cpl_parameterlist *parlist);
104 
105 cpl_error_code
106 uves_define_extract_for_response_chain_parameters(cpl_parameterlist *parlist);
107 
108 cpl_error_code
109 uves_define_background_for_response_chain_parameters(cpl_parameterlist *parlist);
110 
111 cpl_error_code
112 uves_master_stack_define_parameters(cpl_parameterlist *parlist, const char *recipe_id);
113 cpl_error_code
114 uves_master_flat_define_parameters(cpl_parameterlist *parlist, const char *recipe_id);
115 
116 int
117 uves_exec_recipe(int (*get_info)(cpl_pluginlist *),
118  const char *recipe_domain,
119  const cpl_parameterlist *parameters,
120  cpl_frameset *frames,
121  const char *caller_id, const char *context);
122 
123 int
124 uves_invoke_recipe(const char *recipe_id, const cpl_parameterlist *parameters,
125  cpl_frameset *frames,
126  const char *caller_id, const char *context);
127 
128 int
129 uves_propagate_parameters_step(const char *step_id,
130  cpl_parameterlist *parameters,
131  const char *recipe_id, const char *context);
132 
133 int
134 uves_prop_par(int (*get_info)(cpl_pluginlist *),
135  cpl_parameterlist *parameters,
136  const char *recipe_id, const char *context);
137 
138 int
139 uves_propagate_parameters(const char *subrecipe_id,
140  cpl_parameterlist *parameters,
141  const char *recipe_id, const char *context);
142 
143 cpl_error_code
144 uves_corr_traps_define_parameters(cpl_parameterlist * parameters,
145  const char *recipe_id);
146 
147 
148 /*----------------------------------------------------------------------------*/
158 /*----------------------------------------------------------------------------*/
159 #define uves_parameter_new_value(p, name, type, description, context, default) \
160  do { \
161  p = cpl_parameter_new_value( \
162  name, type, description, context, default); \
163  cpl_parameter_disable(p, CPL_PARAMETER_MODE_ENV); \
164  } while(false)
165 
166 /*----------------------------------------------------------------------------*/
175 /*----------------------------------------------------------------------------*/
176 #define uves_parameter_new_range(p, name, type, description, context, \
177  default, min, max) \
178  do { \
179  p = cpl_parameter_new_range( \
180  name, type, description, context, default, min, max); \
181  cpl_parameter_disable(p, CPL_PARAMETER_MODE_ENV); \
182  } while(false)
183 
184 /*----------------------------------------------------------------------------*/
194 /*----------------------------------------------------------------------------*/
195 #define uves_parameter_new_enum(p, name, type, description, context, nopt, ...)\
196  do { \
197  p = cpl_parameter_new_enum( \
198  name, type, description, context, nopt, __VA_ARGS__); \
199  cpl_parameter_disable(p, CPL_PARAMETER_MODE_ENV); \
200  } while(false)
201 
202 
203 
204 /*----------------------------------------------------------------------------*/
215 /*----------------------------------------------------------------------------*/
216 #define uves_par_new_value(name, type, description, default) \
217  do { \
218  cpl_parameter *p; \
219  char *context = uves_sprintf("%s%s%s", recipe_id, \
220  subcontext != NULL ? "." : "", \
221  subcontext != NULL ? subcontext: "");\
222  char *full_name = uves_sprintf("%s.%s", context, name); \
223  uves_parameter_new_value(p, full_name, \
224  type, \
225  description, \
226  context, \
227  default); \
228  cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI, name); \
229  cpl_parameterlist_append(parameters, p); \
230  cpl_free(context); \
231  cpl_free(full_name); \
232  } while(false)
233 
234 /*----------------------------------------------------------------------------*/
247 /*----------------------------------------------------------------------------*/
248 #define uves_par_new_range(name, type, description, default, min, max) \
249  do { \
250  cpl_parameter *p; \
251  char *context = uves_sprintf("%s%s%s", recipe_id, \
252  subcontext != NULL ? "." : "", \
253  subcontext != NULL ? subcontext: "");\
254  char *full_name = uves_sprintf("%s.%s", context, name); \
255  uves_parameter_new_range(p, full_name, \
256  type, \
257  description, \
258  context, \
259  default, min, max); \
260  cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI, name); \
261  cpl_parameterlist_append(parameters, p); \
262  cpl_free(context); \
263  cpl_free(full_name); \
264  } while(false)
265 
266 
267 /*----------------------------------------------------------------------------*/
279 /*----------------------------------------------------------------------------*/
280 #define uves_par_new_enum(name, type, description, default, nopt, ...) \
281  do { \
282  cpl_parameter *p; \
283  char *context = uves_sprintf("%s%s%s", recipe_id, \
284  subcontext != NULL ? "." : "", \
285  subcontext != NULL ? subcontext: "");\
286  char *full_name = uves_sprintf("%s.%s", context, name); \
287  uves_parameter_new_enum(p, full_name, \
288  type, \
289  description, \
290  context, \
291  default, nopt, __VA_ARGS__); \
292  cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI, name); \
293  cpl_parameterlist_append(parameters, p); \
294  cpl_free(context); \
295  cpl_free(full_name); \
296  } while(false)
297 
298 
299 
300 
301 #endif /* UVES_PARAMETERS_H */