void genCode() { printProc("Generating code... "); printStatus("DONE",10); printProc("Writing on file... "); printStatus("DONE",10); writeHeader(); int i, k; for(i=1; i<=charCount; i++) { k=mark[charSet[i]]; while(k!=parent[k]) { k=parent[k]; if(k<0) k = -k, push(0); else push(1); } while((k=pop())> -1) writeOnFile(k); } if(dc<7) { for(i=dc+1; i<8; i++) s[i] = '0'; toDec(); fputc(7-dc+'0', fp); } else { fputc(0+'0', fp); } closeFile2Write(); }
void initAll() { printProc("Initializing all... "); for(int i=1; i<=N; i++) mark[i] = 0; top = 0; }
void Interpreter::printHelp() { ProcInfo info; ChirpProc p; for (p=0; true; p++) { if (m_chirp->getProcInfo(p, &info)<0) break; emit textOut(QString::number(p) + ": " + printProc(&info)); } }
void openFile2Write(char str[]) { char str1[NORM]; strcpy(str1,str); str1[strlen(str1)-3] = 0; strcat(str1,"zip"); fp = fopen(str1, "wb"); if(fp==NULL) showError(3); printProc("Opening file to write... "); printStatus("DONE",4); }
void genTree() { printProc("Generating huffman tree... "); printStatus("DONE",2); int min1, min2, nd = charCount; while(hn>1) { min1 = extractRoot(), min2 = extractRoot(); freq[++nd] = freq[min1] + freq[min2]; insert(nd), parent[min1] = -nd, parent[min2] = nd; } parent[nd] = nd; }
void Interpreter::handleHelp() { ChirpProc proc; ProcInfo info; if (m_argv.size()==1) printHelp(); else if (m_argv.size()>1) { if ((proc=m_chirp->getProc(m_argv[1].toLocal8Bit()))>=0 && m_chirp->getProcInfo(proc, &info)>=0) emit textOut(printProc(&info, 1)); else emit error("can't find procedure.\n"); } }
int main(int argc, char *argv[]) { clrscr(); showCredits(); checkUsages(argc); readFromFile(argv[1]); genTree(); openFile2Write(argv[1]); genCode(); closeFile2Write(); printProc("Closing destination file... "); printStatus("DONE",1); printf("\n"); return 0; }
void readFromFile(char *fileName) { char c; charCount = 0; printProc("Reading from file... "); printStatus("DONE",8); FILE *fp = fopen(fileName, "rb"); if(fp==NULL) showError(2); while((c=fgetc(fp))!=EOF) if(mark[c]== 0) mark[c] = ++charCount, freq[charCount] = 1, charSet[charCount] = c; else freq[mark[c]]++; initHeap(charCount); fclose(fp); }
void debugStatement() { int flag = 1; char c; while (flag) { printf("Debug Point (l, n, p, num): "); c = getc(); printf("\n"); switch(c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': printProc(&proc[c-'0']); break; case 'n': printf("nproc: %d\n", nproc); break; case 'p': kps(); break; case 'l': printLists(); break; default: flag = 0; break; } } }