Range VC_INVF(float x);
Range SD_INVF(float x);
+/* Type identifiers and function tables */
+extern char *RSL_ftype[];
+extern float (*RSL_f_list[])(Range x);
+extern Range (*RSL_invf_list[])(float x);
-/* If you like these variables, you can use them in your application
- * by defining USE_RSL_VARS before #include "rsl.h"
- */
-#ifdef USE_RSL_VARS
-static char *RSL_ftype[] = {"DZ", "VR", "SW", "CZ", "ZT", "DR",
- "LR", "ZD", "DM", "RH", "PH", "XZ",
- "CD", "MZ", "MD", "ZE", "VE", "KD",
- "TI", "DX", "CH", "AH", "CV", "AV",
- "SQ", "VS", "VL", "VG", "VT", "NP",
- "HC", "VC", "V2", "S2", "V3", "S3",
- "CR", "CC", "PR", "SD", "ZZ", "RD"};
-
-static float (*RSL_f_list[])(Range x) = {DZ_F, VR_F, SW_F, CZ_F, ZT_F, DR_F,
- LR_F, ZD_F, DM_F, RH_F, PH_F, XZ_F,
- CD_F, MZ_F, MD_F, ZE_F, VE_F, KD_F,
- TI_F, DX_F, CH_F, AH_F, CV_F, AV_F,
- SQ_F, VS_F, VL_F, VG_F, VT_F, NP_F,
- HC_F, VC_F, VR_F, SW_F, VR_F, SW_F,
- DZ_F, CZ_F, PH_F, SD_F, DZ_F, DZ_F};
-
-static Range (*RSL_invf_list[])(float x)
- = {DZ_INVF, VR_INVF, SW_INVF, CZ_INVF, ZT_INVF, DR_INVF,
- LR_INVF, ZD_INVF, DM_INVF, RH_INVF, PH_INVF, XZ_INVF,
- CD_INVF, MZ_INVF, MD_INVF, ZE_INVF, VE_INVF, KD_INVF,
- TI_INVF, DX_INVF, CH_INVF, AH_INVF, CV_INVF, AV_INVF,
- SQ_INVF, VS_INVF, VL_INVF, VG_INVF, VT_INVF, NP_INVF,
- HC_INVF, VC_INVF, VR_INVF, SW_INVF, VR_INVF, SW_INVF,
- DZ_INVF, CZ_INVF, PH_INVF, SD_INVF, DZ_INVF, DZ_INVF};
-#endif
/* Secret routines that are quite useful and useful to developers. */
void radar_load_date_time(Radar *radar);
int big_endian(void);
#include <stdarg.h>
int strcasecmp(const char *s1, const char *s2);
-#define USE_RSL_VARS
#include "rsl.h"
#define bin_azimuth(x, dx) (float)((float)x/dx)
*/
#define F_OFFSET 4
+char *RSL_ftype[] = {"DZ", "VR", "SW", "CZ", "ZT", "DR",
+ "LR", "ZD", "DM", "RH", "PH", "XZ",
+ "CD", "MZ", "MD", "ZE", "VE", "KD",
+ "TI", "DX", "CH", "AH", "CV", "AV",
+ "SQ", "VS", "VL", "VG", "VT", "NP",
+ "HC", "VC", "V2", "S2", "V3", "S3",
+ "CR", "CC", "PR", "SD", "ZZ", "RD"};
+
+float (*RSL_f_list[])(Range x) = {DZ_F, VR_F, SW_F, CZ_F, ZT_F, DR_F,
+ LR_F, ZD_F, DM_F, RH_F, PH_F, XZ_F,
+ CD_F, MZ_F, MD_F, ZE_F, VE_F, KD_F,
+ TI_F, DX_F, CH_F, AH_F, CV_F, AV_F,
+ SQ_F, VS_F, VL_F, VG_F, VT_F, NP_F,
+ HC_F, VC_F, VR_F, SW_F, VR_F, SW_F,
+ DZ_F, CZ_F, PH_F, SD_F, DZ_F, DZ_F};
+
+Range (*RSL_invf_list[])(float x)
+ = {DZ_INVF, VR_INVF, SW_INVF, CZ_INVF, ZT_INVF, DR_INVF,
+ LR_INVF, ZD_INVF, DM_INVF, RH_INVF, PH_INVF, XZ_INVF,
+ CD_INVF, MZ_INVF, MD_INVF, ZE_INVF, VE_INVF, KD_INVF,
+ TI_INVF, DX_INVF, CH_INVF, AH_INVF, CV_INVF, AV_INVF,
+ SQ_INVF, VS_INVF, VL_INVF, VG_INVF, VT_INVF, NP_INVF,
+ HC_INVF, VC_INVF, VR_INVF, SW_INVF, VR_INVF, SW_INVF,
+ DZ_INVF, CZ_INVF, PH_INVF, SD_INVF, DZ_INVF, DZ_INVF};
float DZ_F(Range x) {
if (x >= F_OFFSET) /* This test works when Range is unsigned. */