mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-28 03:15:50 +00:00
Re-introduced Yosys::readsome() helper function
(f.read() + f.gcount() made problems with lines > 16kB)
This commit is contained in:
parent
750c615e7f
commit
c5eb5e56b8
6 changed files with 25 additions and 21 deletions
|
@ -35,11 +35,7 @@
|
|||
USING_YOSYS_NAMESPACE
|
||||
|
||||
#define YY_INPUT(buf,result,max_size) \
|
||||
do { \
|
||||
ILANG_FRONTEND::lexin->read(buf, max_size-1); \
|
||||
result = ILANG_FRONTEND::lexin->gcount(); \
|
||||
if (result >= 0) buf[result] = '\0'; \
|
||||
} while (0)
|
||||
result = readsome(*ILANG_FRONTEND::lexin, buf, max_size)
|
||||
|
||||
%}
|
||||
|
||||
|
|
|
@ -196,16 +196,14 @@ static std::string next_token(bool pass_newline = false)
|
|||
static void input_file(std::istream &f, std::string filename)
|
||||
{
|
||||
char buffer[513];
|
||||
int rc;
|
||||
|
||||
insert_input("");
|
||||
auto it = input_buffer.begin();
|
||||
|
||||
input_buffer.insert(it, "`file_push " + filename + "\n");
|
||||
while (1) {
|
||||
f.read(buffer, sizeof(buffer)-1);
|
||||
if (f.gcount() <= 0)
|
||||
break;
|
||||
buffer[f.gcount()] = 0;
|
||||
while ((rc = readsome(f, buffer, sizeof(buffer)-1)) > 0) {
|
||||
buffer[rc] = 0;
|
||||
input_buffer.insert(it, buffer);
|
||||
}
|
||||
input_buffer.insert(it, "\n`file_pop\n");
|
||||
|
|
|
@ -64,11 +64,7 @@ YOSYS_NAMESPACE_END
|
|||
return TOK_ID;
|
||||
|
||||
#define YY_INPUT(buf,result,max_size) \
|
||||
do { \
|
||||
lexin->read(buf, max_size-1); \
|
||||
result = lexin->gcount(); \
|
||||
if (result >= 0) buf[result] = '\0'; \
|
||||
} while (0)
|
||||
result = readsome(*VERILOG_FRONTEND::lexin, buf, max_size)
|
||||
|
||||
%}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue