fors_utils.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef FORS_UTILS_H
00029 #define FORS_UTILS_H
00030
00031 #include <fors_setting.h>
00032 #include <fors_star.h>
00033
00034 #include <cpl.h>
00035
00042 #define assure(condition, action, ...) \
00043 do if (!(condition)) { \
00044 cpl_error_set_message(cpl_func, \
00045 cpl_error_get_code() ? \
00046 cpl_error_get_code() : \
00047 CPL_ERROR_UNSPECIFIED, \
00048 __VA_ARGS__); \
00049 cleanup; \
00050 action; \
00051 } while(0)
00052
00053
00067 #define cassure(condition, errc, action, ...) \
00068 do if (!(condition)) { \
00069 cpl_error_set_message( cpl_func, \
00070 errc, \
00071 __VA_ARGS__); \
00072 cleanup; \
00073 action; \
00074 } while(0)
00075
00076
00089 #define cassure_automsg(condition, errc, action) \
00090 do if (!(condition)) { \
00091 cpl_error_set_message( cpl_func, \
00092 errc, \
00093 "!("#condition")");\
00094 cleanup; \
00095 action; \
00096 } while(0)
00097
00098
00108 #define passure(condition, action) \
00109 assure(condition, action, \
00110 "Internal error. Please report to %s", PACKAGE_BUGREPORT)
00111
00121 #define ppassure(condition, errc, action) \
00122 cassure(condition, errc, action, \
00123 "Internal error (!(%s)). Please report to %s", \
00124 #condition, \
00125 PACKAGE_BUGREPORT)
00126
00127 #define fors_msg(level, ...) fors_msg_macro(level, cpl_func, __VA_ARGS__)
00128
00129 #ifndef M_PI
00130 #define M_PI 3.1415926535897932384626433832795
00131 #endif
00132
00133 #ifndef M_E
00134 #define M_E 2.7182818284590452354
00135 #endif
00136
00137 #define TWOSQRT2LN2 2.35482004503095
00138
00139 CPL_BEGIN_DECLS
00140
00141 extern const double STDEV_PR_MAD;
00142
00143 void fors_print_banner(void);
00144 const char * fors_get_license(void);
00145 int fors_get_version_binary(void);
00146 double fors_rand_gauss(void);
00147
00148 double fors_tools_get_kth_double(double *a, int n, int k);
00149 float fors_tools_get_kth_float(float *a, int n, int k);
00150 float fors_tools_get_median_float( float *a, int n);
00151 float fors_tools_get_median_fast_float(float *a, int n) ;
00152 double fors_utils_median_corr(int n);
00153
00154 void fors_frameset_print(const cpl_frameset *frames);
00155 void fors_frame_print(const cpl_frame *f);
00156 const char *fors_frame_get_type_string(const cpl_frame *f);
00157 const char *fors_frame_get_group_string(const cpl_frame *f);
00158 const char *fors_frame_get_level_string(const cpl_frame *f);
00159 cpl_frameset *fors_frameset_extract(const cpl_frameset *frames,
00160 const char *tag);
00161 const char *fors_type_get_string(cpl_type type);
00162 void fors_parameterlist_set_defaults(cpl_parameterlist *parlist);
00163
00164 #ifdef CPL_IS_NOT_CRAP
00165 #else
00166 cpl_image *fors_imagelist_collapse_create(const cpl_imagelist *ilist);
00167 cpl_image *fors_imagelist_collapse_median_create(const cpl_imagelist *ilist);
00168 #endif
00169
00170 double fors_angle_diff(const double *a1, const double *a2);
00171
00172 void fors_msg_macro(cpl_msg_severity level, const char *fct, const char *format, ...)
00173 #ifdef __GNUC__
00174 __attribute__((format (printf, 3, 4)))
00175 #endif
00176 ;
00177 #endif
00178
00179 CPL_END_DECLS