Mercurial > hg > Applications > Grep
annotate regexParser/cerium/ppe/Print.cc @ 279:6cc1d9779f45
add CeriumMain.h
author | Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 31 Jan 2016 15:59:11 +0900 |
parents | 8879eb8c64a8 |
children | b74e3b4b11d7 |
rev | line source |
---|---|
266 | 1 #include <stdio.h> |
2 #include <string.h> | |
3 #include "Print.h" | |
4 #include "Func.h" | |
5 #include "FileMapReduce.h" | |
272 | 6 #include "regexParser.h" |
279
6cc1d9779f45
add CeriumMain.h
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
275
diff
changeset
|
7 #include "CeriumMain.h" |
266 | 8 |
9 #define STATUS_NUM 2 | |
10 /* これは必須 */ | |
11 SchedDefineTask1(Print,run_print); | |
12 | |
13 static int | |
14 run_print(SchedTask *s, void *rbuf, void *wbuf) | |
15 { | |
16 MapReduce *w = (MapReduce*)s->get_input(0); | |
17 | |
18 int out_size = w->division_out_size / sizeof(unsigned long long); | |
272 | 19 int out_task_num = w->task_num; |
266 | 20 ResultPtr prev = NULL; |
21 for (int i = 0; i < out_task_num ; i++) { | |
275
8879eb8c64a8
remove segmentation fault
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
272
diff
changeset
|
22 ResultPtr r = (ResultPtr)w->o_data[i*out_size+0]; |
8879eb8c64a8
remove segmentation fault
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
272
diff
changeset
|
23 StatePtr blockEnd = (StatePtr)w->o_data[i*out_size+2]; |
8879eb8c64a8
remove segmentation fault
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
272
diff
changeset
|
24 StatePtr blockBegin = (StatePtr)w->o_data[i*out_size+4]; // next Block's blockBegin. |
266 | 25 if (prev && i != out_task_num-1) { |
26 // 最後のブロックでなく、前の blockEnd が state 1 でない場合) | |
272 | 27 if ((blockBegin->bitState.bitContainer & ~blockEnd->bitState.bitContainer)==0) { |
266 | 28 // 前のブロックの matchBegin から最初 result の end までがマッチ |
272 | 29 fwrite(prev->begin,r->end - prev->begin,1,stdout); |
266 | 30 } |
31 r = r->next; | |
32 } | |
279
6cc1d9779f45
add CeriumMain.h
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
275
diff
changeset
|
33 prev = resultPrint(r,"Print"); |
266 | 34 } |
35 return 0; | |
36 } |