DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(flex.info.gz) Loading and Unloading Serialized Tables

Info Catalog (flex.info.gz) Creating Serialized Tables (flex.info.gz) Serialized Tables (flex.info.gz) Tables File Format
 
 22.2 Loading and Unloading Serialized Tables
 ============================================
 
 If you've built your scanner with `%option tables-file', then you must
 load the scanner tables at runtime. This can be accomplished with the
 following function:
 
  -- Function: int yytables_fload (FILE* FP [, yyscan_t SCANNER])
      Locates scanner tables in the stream pointed to by FP and loads
      them.  Memory for the tables is allocated via `yyalloc'.  You must
      call this function before the first call to `yylex'. The argument
      SCANNER only appears in the reentrant scanner.  This function
      returns `0' (zero) on success, or non-zero on error.
 
    The loaded tables are *not* automatically destroyed (unloaded) when
 you call `yylex_destroy'. The reason is that you may create several
 scanners of the same type (in a reentrant scanner), each of which needs
 access to these tables.  To avoid a nasty memory leak, you must call
 the following function:
 
  -- Function: int yytables_destroy ([yyscan_t SCANNER])
      Unloads the scanner tables. The tables must be loaded again before
      you can scan any more data.  The argument SCANNER only appears in
      the reentrant scanner.  This function returns `0' (zero) on
      success, or non-zero on error.
 
    *The functions `yytables_fload' and `yytables_destroy' are not
 thread-safe.* You must ensure that these functions are called exactly
 once (for each scanner type) in a threaded program, before any thread
 calls `yylex'.  After the tables are loaded, they are never written to,
 and no thread protection is required thereafter - until you destroy
 them.
 
Info Catalog (flex.info.gz) Creating Serialized Tables (flex.info.gz) Serialized Tables (flex.info.gz) Tables File Format
automatically generated byinfo2html