PUD: include nmealib v0.6.7
[olsrd.git] / lib / pud / nmealib / include / nmea / parser.h
1 /*
2  * This file is part of nmealib.
3  *
4  * Copyright (c) 2008 Timur Sinitsyn
5  * Copyright (c) 2011 Ferry Huberts
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19  */
20
21 #ifndef __NMEA_PARSER_H__
22 #define __NMEA_PARSER_H__
23
24 #include <nmea/info.h>
25
26 #ifdef  __cplusplus
27 extern "C" {
28 #endif
29
30 /*
31  * high level
32  */
33
34 typedef struct _nmeaPARSER
35 {
36     void *top_node;
37     void *end_node;
38     unsigned char *buffer;
39     int buff_size;
40     int buff_use;
41
42 } nmeaPARSER;
43
44 int     nmea_parser_init(nmeaPARSER *parser);
45 void    nmea_parser_destroy(nmeaPARSER *parser);
46
47 int     nmea_parse(
48         nmeaPARSER *parser,
49         const char *buff, int buff_sz,
50         nmeaINFO *info
51         );
52
53 /*
54  * low level
55  */
56
57 int     nmea_parser_push(nmeaPARSER *parser, const char *buff, int buff_sz);
58 int     nmea_parser_top(nmeaPARSER *parser);
59 int     nmea_parser_pop(nmeaPARSER *parser, void **pack_ptr);
60 int     nmea_parser_peek(nmeaPARSER *parser, void **pack_ptr);
61 int     nmea_parser_drop(nmeaPARSER *parser);
62 int     nmea_parser_buff_clear(nmeaPARSER *parser);
63 int     nmea_parser_queue_clear(nmeaPARSER *parser);
64
65 #ifdef  __cplusplus
66 }
67 #endif
68
69 #endif /* __NMEA_PARSER_H__ */