Mercurial > hg > Applications > Grep
annotate regexParser/cerium/CeriumMain.cc @ 278:99d635926ef3
ceriumCreateAnyState implemented
author | Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 30 Jan 2016 21:19:05 +0900 |
parents | 7b4bcc7b5ae6 |
children | 6cc1d9779f45 |
rev | line source |
---|---|
266 | 1 #include <stdio.h> |
2 #include <sys/time.h> | |
3 #include "TaskManager.h" | |
4 #include "SchedTask.h" | |
5 #include "Func.h" | |
6 #include "FileMapReduce.h" | |
7 #include "CeriumGrep.h" | |
272 | 8 #include "subsetConstruction.h" |
9 #include "threadedSearch.h" | |
266 | 10 |
11 extern void task_init(); | |
12 void TMend(TaskManager *); | |
13 static double st_time; | |
14 static double ed_time; | |
15 const char* usr_help_str = ""; | |
16 | |
17 static double | |
18 getTime() { | |
19 struct timeval tv; | |
20 gettimeofday(&tv, NULL); | |
21 return tv.tv_sec + (double)tv.tv_usec*1e-6; | |
22 } | |
23 | |
278
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
24 static |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
25 TSValue stateNothing(TSValue tsv) { |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
26 return tsv; |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
27 } |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
28 |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
29 static |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
30 TSValue stateSkip(TSValue tsv) { |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
31 tsv.buff.matchBegin = tsv.buff.buffptr; |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
32 return tsv; |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
33 } |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
34 |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
35 static |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
36 TSValue stateMatch(TSValue tsv) { |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
37 ResultPtr r = NEW(Result); |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
38 r->begin = tsv.buff.matchBegin; |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
39 r->end = tsv.buff.buffptr; |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
40 *tsv.resultEnd = r; |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
41 r->next = NULL; |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
42 tsv.resultEnd = &r->next; |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
43 tsv.current = tsv.tg->stateList->tState; |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
44 tsv.buff.buffptr--; |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
45 tsv = stateSkip(tsv); |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
46 return tsv; |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
47 } |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
48 |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
49 void ceriumCreateAnyState(TransitionGeneratorPtr tg) { |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
50 tg->stateSkip = stateSkip; |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
51 tg->stateMatch = stateMatch; |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
52 tg->stateNothing = stateNothing; |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
53 createAnyState(tg); |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
54 generateTState(tg->anyState,tg); |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
55 // generateTState for startState. It is used in stateMatch. |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
56 generateTState(tg->stateList,tg); |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
57 } |
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
58 |
266 | 59 int |
60 TMmain(TaskManager *manager, int argc, char *argv[]) | |
61 { | |
62 char *filename = 0; | |
271
6640b0d5bf13
remove anystate processing in sequential seqrch
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
268
diff
changeset
|
63 st_time = getTime(); |
266 | 64 Search s = grep(argc,argv,true); |
277
7b4bcc7b5ae6
nextTState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
272
diff
changeset
|
65 |
278
99d635926ef3
ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
277
diff
changeset
|
66 ceriumCreateAnyState(s.tg); |
268
0e423d9f9647
remove error (remain 1 warning(no use variable))
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
266
diff
changeset
|
67 |
266 | 68 FileMapReduce *fmp = new FileMapReduce(manager,TASK_EXEC,TASK_EXEC_DATA_PARALLEL,TASK_PRINT); |
69 filename = fmp->init(argc, argv); | |
70 fmp->w->global = (void*)s.tg; | |
71 if (filename < 0) { | |
72 return -1; | |
73 } | |
74 fmp->division_out_size = sizeof(void*)*3; // *Result,*blockBegin,*blockEnd | |
75 task_init(); | |
76 fmp->run_start(manager, filename); | |
77 manager->set_TMend(TMend); | |
78 return 0; | |
79 } | |
80 | |
81 void | |
82 TMend(TaskManager *manager) | |
83 { | |
84 ed_time = getTime(); | |
85 printf("Time: %0.6f\n",ed_time-st_time); | |
86 } | |
87 | |
88 /* end */ |