1/* $OpenBSD: tables.h,v 1.2 2015/11/19 22:16:43 tedu Exp $ */
2
3/*  tables.h - tables serialization code
4 *
5 *  Copyright (c) 1990 The Regents of the University of California.
6 *  All rights reserved.
7 *
8 *  This code is derived from software contributed to Berkeley by
9 *  Vern Paxson.
10 *
11 *  The United States Government has rights in this work pursuant
12 *  to contract no. DE-AC03-76SF00098 between the United States
13 *  Department of Energy and the University of California.
14 *
15 *  This file is part of flex.
16 *
17 *  Redistribution and use in source and binary forms, with or without
18 *  modification, are permitted provided that the following conditions
19 *  are met:
20 *
21 *  1. Redistributions of source code must retain the above copyright
22 *     notice, this list of conditions and the following disclaimer.
23 *  2. Redistributions in binary form must reproduce the above copyright
24 *     notice, this list of conditions and the following disclaimer in the
25 *     documentation and/or other materials provided with the distribution.
26 *
27 *  Neither the name of the University nor the names of its contributors
28 *  may be used to endorse or promote products derived from this software
29 *  without specific prior written permission.
30 *
31 *  THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
32 *  IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
33 *  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
34 *  PURPOSE.
35 */
36
37#ifndef TABLES_H
38#define TABLES_H
39
40#ifdef __cplusplus
41/* *INDENT-OFF* */
42extern  "C" {
43/* *INDENT-ON* */
44#endif
45
46/* Tables serialization API declarations. */
47#include "tables_shared.h"
48struct yytbl_writer {
49	FILE   *out;
50	flex_uint32_t total_written;
51			    /**< bytes written so far */
52	fpos_t  th_ssize_pos;
53			    /**< position of th_ssize */
54};
55
56/* These are used by main.c, gen.c, etc.
57 * tablesext - if true, create external tables
58 * tablesfilename - filename for external tables
59 * tablesname - name that goes in serialized data, e.g., "yytables"
60 * tableswr -  writer for external tables
61 * tablesverify - true if tables-verify option specified
62 * gentables - true if we should spit out the normal C tables
63 */
64extern bool tablesext, tablesverify,gentables;
65extern char *tablesfilename, *tablesname;
66extern struct yytbl_writer tableswr;
67
68int     yytbl_writer_init (struct yytbl_writer *, FILE *);
69int     yytbl_hdr_init (struct yytbl_hdr *th, const char *version_str,
70			const char *name);
71int     yytbl_data_init (struct yytbl_data *tbl, enum yytbl_id id);
72int     yytbl_data_destroy (struct yytbl_data *td);
73int     yytbl_hdr_fwrite (struct yytbl_writer *wr,
74			  const struct yytbl_hdr *th);
75int     yytbl_data_fwrite (struct yytbl_writer *wr, struct yytbl_data *td);
76void    yytbl_data_compress (struct yytbl_data *tbl);
77struct yytbl_data *mkftbl (void);
78
79
80#ifdef __cplusplus
81/* *INDENT-OFF* */
82}
83/* *INDENT-ON* */
84#endif
85#endif
86