Revert "Merge branch 'upstream' into tizen"
[platform/upstream/nettle.git] / tools / parse.h
1 /* parse.h */
2
3 /* nettle, low-level cryptographics library
4  *
5  * Copyright (C) 2002, 2003 Niels Möller
6  *  
7  * The nettle library is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU Lesser General Public License as published by
9  * the Free Software Foundation; either version 2.1 of the License, or (at your
10  * option) any later version.
11  * 
12  * The nettle library is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
15  * License for more details.
16  * 
17  * You should have received a copy of the GNU Lesser General Public License
18  * along with the nettle library; see the file COPYING.LIB.  If not, write to
19  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
20  * MA 02111-1301, USA.
21  */
22
23 #ifndef NETTLE_TOOLS_PARSE_H_INCLUDED
24 #define NETTLE_TOOLS_PARSE_H_INCLUDED
25
26 #include "misc.h"
27 #include "buffer.h"
28
29 struct sexp_compound_token
30 {
31   enum sexp_token type;
32   struct nettle_buffer display;
33   struct nettle_buffer string;  
34 };
35
36 void
37 sexp_compound_token_init(struct sexp_compound_token *token);
38
39 void
40 sexp_compound_token_clear(struct sexp_compound_token *token);
41
42 struct sexp_parser
43 {
44   struct sexp_input *input;
45   enum sexp_mode mode;
46
47   /* Nesting level of lists. Transport encoding counts as one
48    * level of nesting. */
49   unsigned level;
50
51   /* The nesting level where the transport encoding occured.
52    * Zero if we're not currently using tranport encoding. */
53   unsigned transport;
54 };
55
56 void
57 sexp_parse_init(struct sexp_parser *parser,
58                 struct sexp_input *input,
59                 enum sexp_mode mode);
60
61 void
62 sexp_parse(struct sexp_parser *parser,
63            struct sexp_compound_token *token);
64
65 #endif /* NETTLE_TOOLS_PARSE_H_INCLUDED */