static char *pastie(char *str) { char **tab; char *ret; char *tmp; char *tempo; int curs; curs = -1; tab = str_to_wordtab(str); while (tab[++curs]); if (curs == 3) tmp = tab[2]; ret = concate(tab[0], tab[1]); free(tab[0]); free(tab[1]); free(tab); if (curs == 3) { tempo = ret; ret = concate(tempo, tmp); free(tempo); free(tmp); } return (ret); }
void psdHandle::setLayer(QStringList& p_rStrList,PsdLayers layers, QStringList& p_rImageList, int level) { if(NULL == layers) return; QString rResult; vector<shared_ptr<PsdLayer> >::reverse_iterator iter = layers->rbegin(), end = layers->rend(); for (; iter != end; iter++) { shared_ptr<PsdLayer> layer = *iter; if (layer->getType() == PsdLayer::LayerTypeGroup) { concate(rResult,layer->getName(),level); //printf("%*s+ %s(%d)\n", level, "", layer->getName(),level); p_rStrList << rResult; setLayer(p_rStrList,((PsdLayerGroup *) layer.get())->getLayers(), p_rImageList,level + 2); } else { layerImage(layers,p_rImageList); concate(rResult,layer->getName(),level); p_rStrList << rResult; //printf("%*s- %s(%d)\n", level, "", layer->getName(),level); } } }
NFA *kleene(NFA *A) { State *start = new State(false); State *end = new State(true); A->end->setFinal(false); concate(start, A->start); concate(A->end, A->start); concate(A->end, end); concate(start, end); return new NFA(start, end); }
NFA *concate(NFA *A, NFA *B) { State *start = new State(false); State *end = new State(true); concate(start, A->start); A->end->setFinal(false); concate(A->end, B->start); B->end->setFinal(false); concate(B->end, end); return new NFA(start, end); }
NFA::NFA(char c) { start = new State(false); end = new State(true); concate(start, end, c); }
static char *paste_str(char *begin, char *send, char *end, t_history **history) { char *str; str = rmbhistory(send, history); xfree(send); if (str == NULL) return (NULL); if ((send = concate(begin, str)) == NULL) return (NULL); xfree(begin); xfree(str); begin = concate(send, end); xfree(send); xfree(end); str = begin; if (str == NULL) return (NULL); printf("%s\n", str); return (str); }
NFA::NFA(std::string postfixRegex) { std::queue<NFA*> nfaQueue; for (auto it = postfixRegex.cbegin(); it != postfixRegex.cend(); ++it) { switch (*it) { case '*': { NFA *n = nfaQueue.front(); nfaQueue.pop(); nfaQueue.push(kleene(n)); break; } case '&': { NFA *left = nfaQueue.front(); nfaQueue.pop(); NFA *right = nfaQueue.front(); nfaQueue.pop(); nfaQueue.push(concate(left, right)); break; } case '|': { NFA *left = nfaQueue.front(); nfaQueue.pop(); NFA *right = nfaQueue.front(); nfaQueue.pop(); nfaQueue.push(alternate(left, right)); break; } default: { nfaQueue.push(new NFA(*it)); break; }} } NFA *nfa = nfaQueue.front(); nfaQueue.pop(); assert(nfaQueue.empty()); start = nfa->start; end = nfa->end; }
void lzw(char *filename, char *outputfile) { static done = 0; char arr; char c[2]; char x; char *mod; int n, z ,i; trie t; code *cc; char *temp; inittrie(&t); result *l; int fd = open(filename, O_RDONLY); FILE *fr = fopen(outputfile, "w"); //printf("%d",fd); if(fd == -1) { perror("fopen failed"); //return errno; } char h[2]; h[1] = 255; h[0] = 255; strcpy(word,""); size_t largest = 0; while((n = read(fd, &arr, 1))){ //printf("(%c %d)\t",arr,fd); c[0] = arr; c[1] = '\0'; mod = concate(word,arr); //printf("%s\n",c); if(present(mod,&t)){ strcat(word,c); //printf("%s",word); } else{ ///printf("%s\n",word); result *l = searchintrie(word, &t); if(l->d.value > largest) largest = l->d.value;/*we keep a record of the largest encoded number*/ if(largest > 65535 && flag1 == 0){ /*the first time we get a number beyond 65535, insert 65535 start reading 24 bits*/ for( i = 0;i < 2; i++) putc(h[0],fr); } if(largest > 16777215 && flag1 == 1) { /*the first time we get a number beyond 16777215, insert 65535 start reading 24 bits*/ for( i = 0; i < 3 ; i++) putc(h[0],fr); flag1 = 2; } if(largest > 4294967295 && flag1 == 2) { /*the first time we get a number beyond 4294967295, insert 65535 start reading 24 bits*/ for( i = 0; i < 4 ; i++) putc(h[0],fr); flag1 = 3; } //if(l->found) //printf("%d\t",l->d.value); cc = converttocode(l->d.value); z = (cc->bits)/ 8; temp = cc->b; while(z){ z--; putc(temp[z],fr); } //printf("%s\n",concat(word,x)); add(mod, &t);/*add new entry to dictionary*/ strcpy(word,c); } } close(fd); fclose(fr); }