MCPcopy Create free account
hub / github.com/Gecode/gecode / input

Function input

gecode/flatzinc/lexer.yy.cpp:1713–1788  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1711 static int yyinput (yyscan_t yyscanner)
1712#else
1713 static int input (yyscan_t yyscanner)
1714#endif
1715
1716{
1717 int c;
1718 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1719
1720 *yyg->yy_c_buf_p = yyg->yy_hold_char;
1721
1722 if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
1723 {
1724 /* yy_c_buf_p now points to the character we want to return.
1725 * If this occurs *before* the EOB characters, then it's a
1726 * valid NUL; if not, then we've hit the end of the buffer.
1727 */
1728 if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
1729 /* This was really a NUL. */
1730 *yyg->yy_c_buf_p = '\0';
1731
1732 else
1733 { /* need more input */
1734 int offset = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr);
1735 ++yyg->yy_c_buf_p;
1736
1737 switch ( yy_get_next_buffer( yyscanner ) )
1738 {
1739 case EOB_ACT_LAST_MATCH:
1740 /* This happens because yy_g_n_b()
1741 * sees that we've accumulated a
1742 * token and flags that we need to
1743 * try matching the token before
1744 * proceeding. But for input(),
1745 * there's no matching to consider.
1746 * So convert the EOB_ACT_LAST_MATCH
1747 * to EOB_ACT_END_OF_FILE.
1748 */
1749
1750 /* Reset buffer status. */
1751 yyrestart( yyin , yyscanner);
1752
1753 /*FALLTHROUGH*/
1754
1755 case EOB_ACT_END_OF_FILE:
1756 {
1757 if ( yywrap( yyscanner ) )
1758 return 0;
1759
1760 if ( ! yyg->yy_did_buffer_switch_on_eof )
1761 YY_NEW_FILE;
1762#ifdef __cplusplus
1763 return yyinput(yyscanner);
1764#else
1765 return input(yyscanner);
1766#endif
1767 }
1768
1769 case EOB_ACT_CONTINUE_SCAN:
1770 yyg->yy_c_buf_p = yyg->yytext_ptr + offset;

Callers

nothing calls this directly

Calls 2

yy_get_next_bufferFunction · 0.85
yyrestartFunction · 0.85

Tested by

no test coverage detected