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