From 6c2d1d95cbf0b13f3de71a5eb4f8e65426fa6a47 Mon Sep 17 00:00:00 2001 From: Adrian Thurston Date: Sat, 5 Jan 2013 12:45:49 -0500 Subject: towards compositional streams moved attachStream calls to inside recursive getData calls --- colm/ctinput.cc | 4 ++++ colm/input.c | 8 ++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/colm/ctinput.cc b/colm/ctinput.cc index a10d03f5..bde9f424 100644 --- a/colm/ctinput.cc +++ b/colm/ctinput.cc @@ -67,6 +67,8 @@ int inputStreamPatternGetData( FsmRun *fsmRun, StreamImpl *ss, int skip, char *d PatternItem *buf = ss->patItem; int offset = ss->offset; + attachStream( fsmRun, ss ); + while ( true ) { if ( buf == 0 ) return INPUT_EOD; @@ -242,6 +244,8 @@ int inputStreamConsGetData( FsmRun *fsmRun, StreamImpl *ss, int skip, char *dest ConsItem *buf = ss->consItem; int offset = ss->offset; + attachStream( fsmRun, ss ); + while ( true ) { if ( buf == 0 ) return INPUT_EOD; diff --git a/colm/input.c b/colm/input.c index 8ff9f56b..64871979 100644 --- a/colm/input.c +++ b/colm/input.c @@ -233,6 +233,8 @@ int fdGetData( FsmRun *fsmRun, StreamImpl *ss, int skip, char *dest, int length, buf = buf->next; } + attachStream( fsmRun, ss ); + return ret; } @@ -450,6 +452,8 @@ int _getData( FsmRun *fsmRun, StreamImpl *is, int skip, char *dest, int length, int ret = 0; *copied = 0; + attachStream( fsmRun, is ); + /* Move over skip bytes. */ RunBuf *buf = is->queue; while ( true ) { @@ -463,8 +467,6 @@ int _getData( FsmRun *fsmRun, StreamImpl *is, int skip, char *dest, int length, Stream *stream = (Stream*)buf->tree; int type = stream->in->funcs->getData( fsmRun, stream->in, skip, dest, length, copied ); - attachStream( fsmRun, stream->in ); - if ( type == INPUT_EOD && is->eof ) { ret = INPUT_EOF; break; @@ -514,8 +516,6 @@ int _getData( FsmRun *fsmRun, StreamImpl *is, int skip, char *dest, int length, buf = buf->next; } - attachStream( fsmRun, is ); - #if DEBUG switch ( ret ) { case INPUT_DATA: -- cgit v1.2.1