Mercurial > hg > Members > masakoha > testcode
view regexParser/cerium/CeriumMain.cc @ 280:6bbd1cbf90d0
fix prev initialize in Print.c . Search in a block worked
author | Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 31 Jan 2016 16:59:43 +0900 |
parents | 6cc1d9779f45 |
children | b74e3b4b11d7 |
line wrap: on
line source
#include <stdio.h> #include <sys/time.h> #include "TaskManager.h" #include "SchedTask.h" #include "Func.h" #include "FileMapReduce.h" #include "CeriumGrep.h" #include "subsetConstruction.h" #include "threadedSearch.h" #include "CeriumMain.h" extern void task_init(); void TMend(TaskManager *); static double st_time; static double ed_time; const char* usr_help_str = ""; static double getTime() { struct timeval tv; gettimeofday(&tv, NULL); return tv.tv_sec + (double)tv.tv_usec*1e-6; } static TSValue stateNothing(TSValue tsv) { return tsv; } static TSValue stateSkip(TSValue tsv) { tsv.buff.matchBegin = tsv.buff.buffptr; return tsv; } static TSValue stateMatch(TSValue tsv) { ResultPtr r = NEW(Result); r->begin = tsv.buff.matchBegin; r->end = tsv.buff.buffptr; *tsv.resultEnd = r; r->next = NULL; tsv.resultEnd = &r->next; tsv.current = tsv.tg->stateList->tState; tsv.buff.buffptr--; tsv = stateSkip(tsv); return tsv; } ResultPtr resultPrint(ResultPtr r,const char* comment) { ResultPtr prev = NULL; // printf("%s\n",comment); for (;r;r = r->next) { if (r->end == NULL) { prev = r; break; } fwrite(r->begin,r->end - r->begin-1,1,stdout); puts(""); } return prev; } void ceriumCreateAnyState(TransitionGeneratorPtr tg) { tg->stateSkip = stateSkip; tg->stateMatch = stateMatch; tg->stateNothing = stateNothing; createAnyState(tg); generateTState(tg->anyState,tg); // generateTState for startState. It is used in stateMatch. generateTState(tg->stateList,tg); } int TMmain(TaskManager *manager, int argc, char *argv[]) { char *filename = 0; st_time = getTime(); Search s = grep(argc,argv,true); ceriumCreateAnyState(s.tg); FileMapReduce *fmp = new FileMapReduce(manager,TASK_EXEC,TASK_EXEC_DATA_PARALLEL,TASK_PRINT); filename = fmp->init(argc, argv); fmp->w->global = (void*)s.tg; if (filename < 0) { return -1; } fmp->division_out_size = sizeof(void*)*3; // *Result,*blockBegin,*blockEnd task_init(); fmp->run_start(manager, filename); manager->set_TMend(TMend); return 0; } void TMend(TaskManager *manager) { ed_time = getTime(); printf("Time: %0.6f\n",ed_time-st_time); } /* end */