Fix some spelling mistakes
[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 /* __cplusplus */
29
30 /**
31  * Description of a parser node / packet
32  */
33 typedef struct _nmeaParserNODE {
34         int packType;                                           /**< the type of the packet (see nmeaPACKTYPE) */
35         void *pack;                         /**< the packet (a pointer to a malloced sentence sctucture) */
36         struct _nmeaParserNODE *next_node;  /**< pointer to the next node / packet */
37 } nmeaParserNODE;
38
39 /**
40  * The parser data.
41  */
42 typedef struct _nmeaPARSER {
43         nmeaParserNODE *top_node; /**< the first node / packet */
44         nmeaParserNODE *end_node; /**< the last node / packet */
45         char *buffer;             /**< the buffer containing the string to parse */
46         int buff_size;            /**< the size of the buffer */
47         int buff_use;             /**< the number of bytes in the buffer */
48 } nmeaPARSER;
49
50 int nmea_parser_init(nmeaPARSER *parser);
51 void nmea_parser_destroy(nmeaPARSER *parser);
52 int nmea_parse(nmeaPARSER *parser, const char *buff, const int buff_sz, nmeaINFO *info);
53
54 int nmea_parser_push(nmeaPARSER *parser, const char *buff, int buff_sz);
55 int nmea_parser_top(const nmeaPARSER *parser);
56 int nmea_parser_pop(nmeaPARSER *parser, void **pack_ptr);
57 int nmea_parser_peek(const nmeaPARSER *parser, void **pack_ptr);
58 int nmea_parser_drop(nmeaPARSER *parser);
59 void nmea_parser_buff_clear(nmeaPARSER *parser);
60 void nmea_parser_queue_clear(nmeaPARSER *parser);
61
62 #ifdef  __cplusplus
63 }
64 #endif /* __cplusplus */
65
66 #endif /* __NMEA_PARSER_H__ */