Mercurial > hg > Members > e085722 > Cerium
view example/test/spe/Exec.cc @ 0:04e28d8d3c6f
first commit
author | Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 08 Nov 2010 01:23:25 +0900 |
parents | |
children | 9a61a58604e7 |
line wrap: on
line source
#include <stdio.h> #include <string.h> #include "Exec.h" #include "Func.h" #include "WordGrep.h" /* これは必須 */ SchedDefineTask(Exec); int str_search(char *r_data,char *sstr,int point); //実際のタスク内での処理 static int run(SchedTask *s, void *rbuf, void *wbuf){ Grep *r_buf = *(Grep**)rbuf; int *o_data = (int*)wbuf; *o_data = 0; char *r_data = r_buf->read_buf; char *sstr = r_buf->read_sstr; int len_r_data = (int)strlen(r_data); int len_sstr = (int)strlen(sstr); printf("%s : %s\n",sstr,r_data); int search = 0; int s_next = 0; int hits = 0; while(search+len_sstr <= len_r_data){ s_next = len_sstr; for(int i = 0;i<len_sstr;i++){ if(sstr[len_sstr-i-1] == r_data[len_sstr+search-1]){ if(i == 0){ s_next = len_sstr; if(strncmp(r_data+search,sstr,len_sstr) == 0){ printf(" hit!->"); for(int j = 0;j < 10;j++){ if(r_data[search+j] == 0){ break; }else if(r_data[search+j] == '\n') { s->printf(" "); }else{ s->printf("%c",r_data[search+j]); } } printf("\n"); hits++; break; } }else{ s_next = i; } } } search += s_next; } o_data[0] = hits; return 0; }