Lime Parser Generator 0.1.0
Runtime-extensible LALR(1) parser with SIMD tokenization and LLVM JIT
Loading...
Searching...
No Matches
Cloning API

Deep-copy parser state for forking. More...

Functions

bool clone_parser_state (const void *parser, size_t parser_size, size_t stack_entry_size, size_t inline_stack_offset, uint32_t inline_stack_count, size_t stack_field_offset, size_t tos_field_offset, size_t stack_end_offset, ClonedParserState *out)
 Clone the parser state from an opaque parser handle.
 
void cloned_parser_state_destroy (ClonedParserState *cloned)
 Free a cloned parser state.
 

Detailed Description

Deep-copy parser state for forking.

Function Documentation

◆ clone_parser_state()

bool clone_parser_state ( const void *  parser,
size_t  parser_size,
size_t  stack_entry_size,
size_t  inline_stack_offset,
uint32_t  inline_stack_count,
size_t  stack_field_offset,
size_t  tos_field_offset,
size_t  stack_end_offset,
ClonedParserState out 
)

#include <include/parser_fork.h>

Clone the parser state from an opaque parser handle.

The caller must provide correct layout parameters derived from the generated parser's compile-time constants. Use the PARSER_FORK_LAYOUT_PARAMS() macro for convenience.

Parameters
parserPointer to a yyParser (cast to void*).
parser_sizesizeof(yyParser) for this grammar.
stack_entry_sizesizeof(yyStackEntry) for this grammar.
inline_stack_offsetoffsetof(yyParser, yystk0).
inline_stack_countYYSTACKDEPTH (number of inline stack entries).
stack_field_offsetoffsetof(yyParser, yystack).
tos_field_offsetoffsetof(yyParser, yytos).
stack_end_offsetoffsetof(yyParser, yystackEnd).
[out]outOn success, filled with the cloned state.
Return values
trueCloning succeeded.
falseAllocation failure.
See also
PARSER_FORK_LAYOUT_PARAMS()
cloned_parser_state_destroy()

◆ cloned_parser_state_destroy()

void cloned_parser_state_destroy ( ClonedParserState cloned)

#include <include/parser_fork.h>

Free a cloned parser state.

After this call, the ClonedParserState is zeroed and must not be used.

Parameters
clonedState to destroy.