aboutsummaryrefslogtreecommitdiffstats
path: root/my-evolution/metar.h
blob: 91ec15d2a124983e108e73a2585b7ad46b75481e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/*
 * metar.h
 */

#ifndef __METAR_H__
#define __METAR_H__

#define TIME_RE_STR  "^([0-9]{6})Z$"
#define WIND_RE_STR  "^(([0-9]{3})|VRB)([0-9]?[0-9]{2})(G[0-9]?[0-9]{2})?KT$"
#define VIS_RE_STR   "^(([0-9]?[0-9])|(M?1/[0-9]?[0-9]))SM$"
#define CLOUD_RE_STR "^(CLR|BKN|SCT|FEW|OVC)([0-9]{3})?$"
#define TEMP_RE_STR  "^(M?[0-9][0-9])/(M?[0-9][0-9])$"
#define PRES_RE_STR  "^(A|Q)([0-9]{4})$"
#define COND_RE_STR  "^(-|\\+)?(VC|MI|BC|PR|TS|BL|SH|DR|FZ)?(DZ|RA|SN|SG|IC|PE|GR|GS|UP|BR|FG|FU|VA|SA|HZ|PY|DU|SQ|SS|DS|PO|\\+?FC)$"

enum {
    TIME_RE,
    WIND_RE,
    VIS_RE,
    CLOUD_RE,
    TEMP_RE,
    PRES_RE,
    COND_RE,
    RE_NUM
};

const char *weather_sky_string (Weather *w);
char *weather_temp_string (Weather *w);
const char *weather_conditions_string (Weather *w);
const char *weather_wind_direction_string (Weather *w);
const char *icon_from_weather (Weather *w);

void metar_init_re (void);
gboolean metar_tok_time (char *token,
             Weather *w);
gboolean metar_tok_wind (char *tokp, 
             Weather *w);
gboolean metar_tok_vis (char *tokp, 
            Weather *w);
gboolean metar_tok_cloud (char *tokp, 
              Weather *w);
gboolean metar_tok_pres (char *tokp, 
             Weather *w);
gboolean metar_tok_temp (char *tokp, 
             Weather *w);
gboolean metar_tok_cond (char *tokp,
             Weather *w);
#endif