Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
LSMHuffman/.dep.inc # This code depends on make tool being used DEPFILES=$(wildcard $(addsuffix .d, ${OBJECTFILES})) ifneq (${DEPFILES},) include ${DEPFILES} endif LSMHuffman/Forms.h /* * File: Forms.h * Author: joao * * Created on 13 de Maio de 2016, 14:43 */ #ifndef FORMS_H #define FORMS_H #include"boxCurses.h" #ifdef __cplusplus extern "C" { #endif void telaPrincipal(); void formArq(); void infoFile(char fileName[],char cpFlag); /*------------------------------------------------------------------------*/ void telaPrincipal() { char menu[8][56]; int cont = 2; strcpy(menu[0], "*** Large Shit Maker Huffman File Compressor v.2.0 ***"); strcpy(menu[1], "Main Menu"); strcpy(menu[2], "Select File "); strcpy(menu[3], "Compress File "); strcpy(menu[4], "Restore File File"); strcpy(menu[5], "Exit"); strcpy(menu[6], "*** Copyleft (c) 2016 v2.0 By Joao Andre ***"); int linha, coluna; getmaxyx(stdscr, linha, coluna); attron(COLOR_PAIR((1))); spc(coluna, 1); spc(coluna, 1); attron(COLOR_PAIR((7))); for (int i = 3; i < linha; i++) { spc(coluna, 1); } attron(COLOR_PAIR((1))); move(4, 3); spc(coluna - 8, 1); attron(COLOR_PAIR((9))); for (int i = 5; i < linha - 3; i++) { move(i, 3); spc(coluna - 8, 2); } attroff(A_BOLD); move(8, 36); attron(COLOR_PAIR((1))); spc(36, 2); attron(COLOR_PAIR((3))); for (int i = 9; i < 19; i++) { move(i, 36); spc(36, 2); } attron(COLOR_PAIR((1))); attron(A_BOLD); displayMsgCenter(0, menu[0]); displayMsgCenter(4, menu[1]); attroff(A_BOLD); for (int i = 8; i < 20; i += 3) { attron(COLOR_PAIR((1))); move(i, 5); spc(25, 1); move(i, 6); attron(A_BOLD); printw("%s", menu[cont++]); attroff(A_BOLD); attron(COLOR_PAIR((17))); move(i + 1, 6); spc(25, 1); move(i, 30); spc(1, 0); } attron(COLOR_PAIR((12))); move(8, 7); attron(A_BOLD); printw("%c", 'e'); move(11, 9); printw("%c", 'p'); move(14, 6); printw("%c", 'R'); move(17, 7); printw("%c", 'x'); attroff(A_BOLD); move(linha - 1, 0); attron(COLOR_PAIR((1))); spc(coluna, 1); attron(A_BOLD); displayMsgCenter(linha - 1, menu[6]); refresh(); } void formArq() { char menu[8][56]; int cont = 2; strcpy(menu[0], "*** Large Shit Maker Huffman File Compressor v.2.0 ***"); strcpy(menu[1], "*** Copyleft (c) 2016 v2.0 By Joao Andre ***"); int linha, coluna; getmaxyx(stdscr, linha, coluna); attron(COLOR_PAIR((1))); spc(coluna, 1); spc(coluna, 1); attron(COLOR_PAIR((7))); for (int i = 3; i < linha; i++) { spc(coluna, 1); } attron(COLOR_PAIR((1))); move(4, 3); spc(coluna - 8, 1); attron(COLOR_PAIR((9))); for (int i = 5; i < linha - 3; i++) { move(i, 3); spc(coluna - 8, 2); } attron(COLOR_PAIR((1))); move(linha - 1, 0); spc(coluna, 1); attroff(A_BOLD); attron(A_BOLD); displayMsgCenter(0, menu[0]); displayMsgCenter(linha - 1, menu[1]); attroff(A_BOLD); refresh(); } void infoFile(char fileName[], char cpFlag) { FILE *arquivo = fopen(fileName, "rb"); FILE *cpFile; char unidade[3],fileAux[25]; int len = 0, lenCp = 0; strcpy(unidade, "Bytes"); strcpy(fileAux,fileName); fseek(arquivo, 0, 2); len = ftell(arquivo); if (len > 1024) { len = len / 1024; strcpy(unidade, "KB"); } if (cpFlag) { strcpy(unidade, "Bytes"); strcat(fileName, ".PAC"); cpFile = fopen(fileName, "rb"); fseek(cpFile, 0, 2); lenCp = ftell(cpFile); if (lenCp > 1024) { lenCp = lenCp / 1024; strcpy(unidade, "KB"); fclose(cpFile); } } fclose(arquivo); move(10, 36); attron(COLOR_PAIR((14))); attron(A_BOLD); printw("File:[%s]", fileAux); move(11, 36); printw("File Size:[%d] %s", len, unidade); if (cpFlag) { move(12, 36); printw("Compress File:[%s]", fileName); move(13, 36); printw("Compress File Size:[%d] %s", lenCp, unidade); move(14, 36); printw("Compress Rate:[%d] %s", len-lenCp, unidade); } attroff(A_BOLD); } #ifdef __cplusplus } #endif #endif /* FORMS_H */ LSMHuffman/Huffman.h /* * File: Huffman.h * Author: joao * * Created on 9 de Maio de 2016, 15:22 */ #ifndef HUFFMAN_H #define HUFFMAN_H #define TF 47 #include<string.h> #ifdef __cplusplus extern "C" { #endif /*Estrutura de dados------------------------------------------------------------ * char[] - Palavra para a ser codificada * int - Frequencia da palavra no texto a ser codificado * *HuffNode - ponteiros para os nós filhos */ struct HuffNode { char str[TF]; double Fi; struct HuffNode *dir, *esq; }; typedef struct HuffNode No; //------------------------------------------------------------------------------ No* criaNo(char word[], double Fi); int isLeaf(No *no); char isEqual(No *xNo, No *yNo); void showTree(No *raiz, int y, int x, int dist); void init(No **raiz); //------------------------------------------------------------------------------ /*retorna um novo no para arvore de huffman No* criaNo(char[],int) * @param word - string a ser codificada * @param Fi - Frequencia da string no texto a ser codificado * Retorna um ponteiro para um novo no contendo a strin e sua frequencia. */ No* criaNo(char word[], double Fi) { No *novo = (No*) malloc(sizeof (No)); strcpy(novo->str, word); novo->Fi = Fi; novo->dir = novo->esq = NULL; return novo; } //------------------------------------------------------------------------------ /*Retorna true (1) se o parametro for uma folha char isLeaf(No*) * @param no - ponteiro para o no a ser comparado * Retorna true (1) se o parametro no for um no do tipo folha. */ int isLeaf(No *no) { return (no->dir == NULL && no->esq == NULL); } //------------------------------------------------------------------------------ /*Inicializa a raiz da arvore de huffman void init(No**) * @param raiz - ponteiro para raiz da arvore a ser inicializada */ void init(No **raiz) { (*raiz) = NULL; } //------------------------------------------------------------------------------ /*Compara dois ponteiros do tipo No* e reo=torna true se x==y char isEqual(No*, No*) * @param xNo - ponteiro para o no x a ser comparado * @param yNo - ponteiro para o no y a ser comparado * Retorna true (1) se o parametro x == y . */ char isEqual(No *xNo, No *yNo) { return (strcmp(xNo->str, yNo->str) == 0 && xNo->Fi == yNo->Fi); } //------------------------------------------------------------------------------ void showTree(No *raiz, int y, int x, int dist) { if (raiz != NULL) { move(y, x); attron(COLOR_PAIR((23))); (raiz->str[0] == '*') ? printw("%.2f", raiz->Fi) : printw("%s", raiz->str); if (raiz->esq != NULL) { move(y + 1, x - dist / 2); printw("/"); } if (raiz->dir != NULL) { move(y + 1, x + dist / 2); printw("\\"); } showTree(raiz->esq, y + 2, x - dist, dist / 2); showTree(raiz->dir, y + 2, x + dist, dist / 2); } refresh(); } /*------------------------------------------------------------------------*/ /* DTMV (Dont move The Fucking Tuttle) * void simbol(char []) * @param codigo - str a ser copiada para ela mesma */ void simbol(char codigo[]) { char aux[21]; int cont = 0; while (codigo[cont + 1] != '\0') { aux[cont] = codigo[cont]; cont++; } aux[cont] = '\0'; strcpy(codigo, aux); } /*------------------------------------------------------------------------*/ /* Confirma se uma codigo contido em um str é uma folha * na arvore de Huffman e caso positivo retorna a palavra contida na folha * void strToHuffman(No *, char [], char [], char [], char *) * @param raiz - raiz da arvore de huffman * @param chave - str com a chave a ser codificada * @param codigo str com o codigo de huffman equivalente a chave * @param vetor auxiliar para funcao (tf deve ser igual a codigo) * @param flag -flag interno da funcao inicialmente deve ser atribuido '0' */ void strToHuffman(No *raiz, char chave[], char codigo[], char aux[], char *flag) { if (raiz != NULL) { if (isLeaf(raiz) && strcmp(chave, raiz->str) != 0) { } else if (!isLeaf(raiz)) { strcat(aux, "0"); strToHuffman(raiz->esq, chave, codigo, aux, *&flag); simbol(aux);//DTMV strcat(aux, "1"); strToHuffman(raiz->dir, chave, codigo, aux, *&flag); simbol(aux);//DTMV } else { if (*flag == '0') { strcpy(codigo, aux); *flag = '1'; } } } } /*------------------------------------------------------------------------*/ char huffmanTostr(No *raiz, char chave[], char str[]) { int i = 0; char flag = 0; while (raiz != NULL && chave[i] != '\0') { if (chave[i] == '0') raiz = raiz->esq; else raiz = raiz->dir; i++; } } /*------------------------------------------------------------------------*/ /* Confirma se uma codigo contido em um str é uma folha * na arvore de Huffman e caso positivo retorna a palavra contida na folha * char codigoEfolha(No*, char[], int, char[TF]) * @param aux - raiz da arvore de huffman * @param code - str com o codigo binario * @param tl tamamnho logico do vetor code * @param palavra vetor para a palava contida na folha * retorna 0 ou 1 caso o codigo seja uma folha */ int codigoEfolha(No *aux, char code[], int tl, char palavra[TF]) { char flag = 0; int cont = 0, st = 0; while (!flag&& cont<=tl) { if (aux->dir == NULL && aux->esq == NULL) { strcpy(palavra, aux->str); flag = 1; } else { if (code[cont] == '0') aux = aux->esq; else aux = aux->dir; } cont++; } return flag; } /*------------------------------------------------------------------------*/ #ifdef __cplusplus } #endif #endif /* HUFFMAN_H */ LSMHuffman/HuffmanUtil.h /* * File: HuffmanUtil.h * Author: joao * * Created on 9 de Maio de 2016, 19:13 */ #ifndef HUFFMANUTIL_H #define HUFFMANUTIL_H #include "Huffman.h" #include "NodeList.h" #ifdef __cplusplus extern "C" { #endif void fileTolist(char fileName[], list **l); char extrairPontuacao(char linha[], char palavra[], char ponto[]); void montarArvore(list *l, No **huffmanTree); void splitLine(char line[], char tokens[], char auxStr[10][TF], int *tl); void compactarArquivo(char nomeArq[], No *raiz); void recuperaNome(char nomeArq[], char nomeTabela[]); int getFileLenth(char fileName[]); /*------------------------------------------------------------------------*/ /*Cria uma lista de Nos de huffman com as palavras do arquivo ordenadas pela sua Fi fileTolist(char[],list **) * @param fileName - nome do arquivo texto a ser lido * @param l - ponteiro para lista de nos */ void fileTolist(char fileName[], list **l) { char auxStr[TF], palavra[TF], ponto[2]; //auxiliar para palavra lida FILE *arquivo = fopen(fileName, "r"); //abrindo arquivo while (fscanf(arquivo, "%s", &auxStr) == 1) {//le o arquivo palavra a palavra if (extrairPontuacao(auxStr, palavra, ponto)) { if (!addFi(&(*l), palavra)) { enqueue(&(*l), criaNo(palavra, 1)); } if (!addFi(&(*l), ponto)) { enqueue(&(*l), criaNo(ponto, 1)); } } else { if (!addFi(&(*l), auxStr)) { enqueue(&(*l), criaNo(auxStr, 1)); } } } fclose(arquivo); normalizaFi(&(*l)); selecaoDireta(&(*l)); //Ordena a fila por Fi } /*------------------------------------------------------------------------*/ void compactarArquivo(char nomeArq[], No *raiz) { char linha[TF], palavra[TF], ponto[2], codigo[21], aux[21], nnome[21], flag = '0'; strcpy(nnome, nomeArq); strcat(nnome, ".PAC"); FILE *arquivo = fopen(nnome, "wb+"); FILE *fonte = fopen(nomeArq, "r"); strcpy(codigo, ""); strcpy(ponto, ""); while (fscanf(fonte, "%s", &linha) == 1) {//le o arquivo palavra a palavra if (extrairPontuacao(linha, palavra, ponto)) { strToHuffman(raiz, palavra, codigo, aux, &flag); fputs(codigo, arquivo); /*----------------*/ flag = '0'; strcpy(codigo, ""); strcpy(aux, ""); /*----------------*/ strToHuffman(raiz, ponto, codigo, aux, &flag); fputs(codigo, arquivo); } else { strToHuffman(raiz, linha, codigo, aux, &flag); fputs(codigo, arquivo); } /*----------------*/ flag = '0'; strcpy(codigo, ""); strcpy(aux, ""); /*----------------*/ } fclose(fonte); fclose(arquivo); } /*------------------------------------------------------------------------*/ void descompactarArquivo(char nomeArq[]) { int cont = 0, pos = 0, fileLen = getFileLenth(nomeArq); char nomeTabela[strlen(nomeArq) + 5], codigo[fileLen + 1], auxCod[16], palavra[TF], fl = '0', pte[TF], auxpte[TF]; recuperaNome(nomeArq, nomeTabela); FILE *arquivoCom = fopen(nomeArq, "r"); FILE *arquivoOri = fopen(nomeTabela, "wb"); No *raiz = NULL; list *lista = NULL; strcpy(auxCod, ""); strcpy(palavra, ""); /*Recuperando tabela de Frequencias do arquivo*/ strcat(nomeTabela, ".tab"); recuperaLista(nomeTabela, &lista); selecaoDireta(&lista); /*Montando arvore de Huffman*/ montarArvore(lista, &raiz); showTree(raiz, 5, 36, 19); /*Obtendo codificação de huffman do arquivo compactado*/ fread(codigo, fileLen, 1, arquivoCom); codigo[fileLen] = '\0'; move(20, 3); printw("Codigo de huffman:[<%s>]", codigo); fclose(arquivoCom); /*Decodificando sequencia binaria e restaurando arquivo Original*/ while (pos < fileLen) { auxCod[cont++] = codigo[pos]; auxCod[cont] = '\0'; if (codigoEfolha(raiz, auxCod, cont, palavra)) { strcat(palavra, " "); fputs(palavra, arquivoOri); strcpy(auxCod, ""); strcpy(palavra, ""); cont = 0; } pos++; } fclose(arquivoOri); pos = getch(); } /*------------------------------------------------------------------------*/ /*Monta a arvore de Huffman a partir da fila de frequencias ordenadas fileTolist(char[],list **) * @param fileName - nome do arquivo texto a ser lido * @param l - ponteiro para fila de nos ordenados */ void montarArvore(list *l, No **huffmanTree) { list *tempList = l; //Lista temporaria No *newRoot = NULL; // no auxiliar while (tempList->prox != NULL) { newRoot = criaNo("*", tempList->info->Fi + tempList->prox->info->Fi); //soma das duas menores Fi deEnqueue(&tempList, &newRoot->esq); //Menor a esq deEnqueue(&tempList, &newRoot->dir); //Maior a dir enqueue(&tempList, newRoot); //insere o novo no na fila selecaoDireta(&tempList); //reordena a fila por Fi } deEnqueue(&tempList, &(*huffmanTree)); //Ultimo nó da fila resultante é a prorpia arvore de huffman } /*------------------------------------------------------------------------*/ char extrairPontuacao(char linha[], char palavra[], char ponto[]) { int tam = strlen(linha), i = 0, k = 0; char auxStr[tam], auxP[2], pont[7], flag = 0; strcpy(pont, ".,;?!:"); while (!flag && k < 6) { if (linha[tam - 1] == pont[k]) { flag = 1; } k++; } if (flag) { while (i < tam - 1) { auxStr[i] = linha[i]; i++; } auxStr[i] = '\0'; auxP[0] = pont[k - 1]; auxP[1] = '\0'; strcpy(palavra, auxStr); strcpy(ponto, auxP); } return flag; } /*------------------------------------------------------------------------*/ void recuperaNome(char nomeArq[], char nomeTabela[]) { int len = strlen(nomeArq), i = 0; while (i < len - 4) { nomeTabela[i] = nomeArq[i]; i++; } nomeTabela[i] = '\0'; } /*------------------------------------------------------------------------*/ int getFileLenth(char fileName[]) { FILE *arquivo = fopen(fileName, "rb"); int tam; fseek(arquivo, 0, 2); tam = ftell(arquivo); fclose(arquivo); return tam; } /*------------------------------------------------------------------------*/ #ifdef __cplusplus } #endif #endif /* HUFFMANUTIL_H */ LSMHuffman/Makefile # # There exist several targets which are by default empty and which can be # used for execution of your targets. These targets are usually executed # before and after some main targets. They are: # # .build-pre: called before 'build' target # .build-post: called after 'build' target # .clean-pre: called before 'clean' target # .clean-post: called after 'clean' target # .clobber-pre: called before 'clobber' target # .clobber-post: called after 'clobber' target # .all-pre: called before 'all' target # .all-post: called after 'all' target # .help-pre: called before 'help' target # .help-post: called after 'help' target # # Targets beginning with '.' are not intended to be called on their own. # # Main targets can be executed directly, and they are: # # build build a specific configuration # clean remove built files from a configuration # clobber remove all built files # all build all configurations # help print help mesage # # Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and # .help-impl are implemented in nbproject/makefile-impl.mk. # # Available make variables: # # CND_BASEDIR base directory for relative paths # CND_DISTDIR default top distribution directory (build artifacts) # CND_BUILDDIR default top build directory (object files, ...) # CONF name of current configuration # CND_PLATFORM_${CONF} platform name (current configuration) # CND_ARTIFACT_DIR_${CONF} directory of build artifact (current configuration) # CND_ARTIFACT_NAME_${CONF} name of build artifact (current configuration) # CND_ARTIFACT_PATH_${CONF} path to build artifact (current configuration) # CND_PACKAGE_DIR_${CONF} directory of package (current configuration) # CND_PACKAGE_NAME_${CONF} name of package (current configuration) # CND_PACKAGE_PATH_${CONF} path to package (current configuration) # # NOCDDL # Environment MKDIR=mkdir CP=cp CCADMIN=CCadmin # build build: .build-post .build-pre: # Add your pre 'build' code here... .build-post: .build-impl # Add your post 'build' code here... # clean clean: .clean-post .clean-pre: # Add your pre 'clean' code here... .clean-post: .clean-impl # Add your post 'clean' code here... # clobber clobber: .clobber-post .clobber-pre: # Add your pre 'clobber' code here... .clobber-post: .clobber-impl # Add your post 'clobber' code here... # all all: .all-post .all-pre: # Add your pre 'all' code here... .all-post: .all-impl # Add your post 'all' code here... # build tests build-tests: .build-tests-post .build-tests-pre: # Add your pre 'build-tests' code here... .build-tests-post: .build-tests-impl # Add your post 'build-tests' code here... # run tests test: .test-post .test-pre: build-tests # Add your pre 'test' code here... .test-post: .test-impl # Add your post 'test' code here... # help help: .help-post .help-pre: # Add your pre 'help' code here... .help-post: .help-impl # Add your post 'help' code here... # include project implementation makefile include nbproject/Makefile-impl.mk # include project make variables include nbproject/Makefile-variables.mk LSMHuffman/NodeList.h /* * File: NodeList.h * Author: joao * * Created on 9 de Maio de 2016, 15:51 */ #ifndef NODELIST_H #define NODELIST_H #include"Huffman.h" #include "HuffmanUtil.h" #ifdef __cplusplus extern "C" { #endif //------------------------------------------------------------------------------ struct ListNo { No *info; struct ListNo *prox; }; typedef struct ListNo list; //----------------------------------------------------------------------------- void deEnqueue(list **llist, No **node); void enqueue(list **ll, No *info); void exibeLista(list *ll); void selecaoDireta(list **l); void normalizaFi(list **l); void gravaLista(char fileName[], list *l); char addFi(list **l, char str[]); int getLenght(list *l); double contaPalavras(list *l); list* criaCaixa(No *info); void splitLine(char line[], char tokens[], char auxStr[2][TF], int *tl); //----------------------------------------------------------------------------- list* criaCaixa(No *info) { list *nc = (list*) malloc(sizeof (list)); nc->info = info; nc->prox = NULL; return nc; } //----------------------------------------------------------------------------- void exibeLista(list *ll) { while (ll != NULL) { printw("[%s] - Fi[%.2f]\n", ll->info->str, ll->info->Fi); ll = ll->prox; } refresh(); } //----------------------------------------------------------------------------- void enqueue(list **ll, No *info) { list *aux, *nc; if (*ll == NULL) { *ll = criaCaixa(info); } else { aux = *ll; nc = criaCaixa(info); while (aux->prox != NULL) { aux = aux->prox; } aux->prox = nc; } } //----------------------------------------------------------------------------- char addFi(list **l, char str[]) { list *aux = *l; while (aux != NULL && strcmp(aux->info->str, str) != 0) { aux = aux->prox; } if (aux != NULL && strcmp(aux->info->str, str) == 0) { aux->info->Fi += 1; } return (aux != NULL); } //----------------------------------------------------------------------------- int getLenght(list *l) { int cont = 0; while (l != NULL) { cont++; l = l->prox; } return cont; } //----------------------------------------------------------------------------- void selecaoDireta(list **l) { list *i = *l, *j = NULL; No *menor = NULL; while (i->prox != NULL) { menor = i->info; j = i->prox; while (j != NULL) { if (j->info->Fi < menor->Fi) { menor = j->info; j->info = i->info; i->info = menor; } j = j->prox; } i = i->prox; } } //----------------------------------------------------------------------------- void deEnqueue(list **llist, No **node) { list *ant = NULL; if ((*llist) != NULL) { (*node) = (*llist)->info; ant = (*llist); (*llist) = (*llist)->prox; free(ant); } else (*node) = NULL; } //---------------------------------------------------------------------------------------------------------------------------------------------- void normalizaFi(list **l) { list *aux = *l; double normFi = 0, nPalavras = contaPalavras(aux); while (aux != NULL) { aux->info->Fi = ((aux->info->Fi * 100) / nPalavras) / 100; aux = aux->prox; } } //---------------------------------------------------------------------------------------------------------------------------------------------- double contaPalavras(list *l) { double nPalavras = 0; while (l != NULL) { nPalavras += l->info->Fi; l = l->prox; } return nPalavras; } //---------------------------------------------------------------------------------------------------------------------------------------------- void gravaLista(char fileName[], list *l) { FILE *arquivo = fopen(fileName, "wb+"); while (l != NULL) { fprintf(arquivo, "%s;%.2f\n", l->info->str, l->info->Fi); l = l->prox; } fclose(arquivo); } //----------------------------------------------------------------------------- void recuperaLista(char fileName[], list **l) { FILE *arquivo = fopen(fileName, "r"); char auxStr[2][TF], palavra[TF]; double Fi; int tl = 0; fscanf(arquivo, "%s;%f\n", palavra, &Fi); splitLine(palavra, ";", auxStr, &tl); strcpy(palavra, auxStr[0]); Fi = atof(auxStr[1]); while (!feof(arquivo)) { enqueue(&(*l), criaNo(palavra, Fi)); fscanf(arquivo, "%s;%f\n", palavra, &Fi); splitLine(palavra, ";", auxStr, &tl); strcpy(palavra, auxStr[0]); Fi = atof(auxStr[1]); } fclose(arquivo); } void splitLine(char line[], char tokens[], char auxStr[2][TF], int *tl) { char *lineAux, *strBroke; int cont = 0; lineAux = line; strBroke = strtok(lineAux, tokens); while (strBroke != NULL) { strcpy(auxStr[cont++], strBroke); strBroke = strtok(NULL, tokens); } *tl = cont; } #ifdef __cplusplus } #endif #endif /* NODELIST_H */ LSMHuffman/balada.txt eu já lavei o meu carro, regulei o som já tá tudo preparado, vem que o reggae é bom menina fica à vontade, entre e faça a festa me liga mais tarde, vou adorar, vamos nessa gata, me liga, mais tarde tem balada quero curtir com você na madrugada dançar, pular até o Sol raiar gata, me liga, mais tarde tem balada quero curtir com você na madrugada dançar, pular que hoje vai rolar tchê tchererê tchê tchê tchererê tchê tchê tchererê tchê tchê tchereretchê tchê, tchê, tchê Gusttavo Lima e você tchê tchererê tchê tchê tchererê tchê tchê tchererê tchê tchê tchereretchê tchê, tchê, tchê Gusttavo Lima e você se você me olhar, vou querer te pegar e depois namorar, curtição que hoje vai rolar gata, me liga, mais tarde tem balada quero curtir com você na madrugada dançar, pular até o Sol raiar gata, me liga, mais tarde tem balada quero curtir com você na madrugada dançar, pular que hoje vai rolar tchê tchererê tchê tchê tchererê tchê tchê tchererê tchê tchê tchereretchê tchê, tchê, tchê, Gusttavo Lima e você tchê tchererê tchê tchê tchererê tchê tchê tchererê tchê tchê tchereretchê tchê, tchê, tchê Gusttavo Lima e você gata, me liga, mais tarde tem balada quero curtir com você na madrugada dançar, pular que hoje vai rolar gata, me liga, mais tarde tem balada quero curtir com você na madrugada dançar, pular que hoje vai rolar tem Gusttavo Lima até de madrugada tchê tchererê tchê tchê tchererê tchê tchê tchererê tchê tchê tchereretchê tchê, tchê, tchê Gusttavo Lima e você tchê tchererê tchê tchê tchererê tchê tchê tchererê tchê tchê tchereretchê tchê, tchê, tchê Gusttavo Lima e você se você me olhar vou querer te pegar e depois namorar, curtição que hoje vai rolar gata, me liga, mais tarde tem balada quero curtir com você na madrugada dançar, pular até o Sol raiar gata, me liga, mais tarde tem balada quero curtir com você na madrugada dançar, pular que hoje vai rolar tchê tchererê tchê tchê tchererê tchê tchê tchererê tchê tchê tchereretchê tchê, tchê, tchê Gusttavo Lima e você tchê tchererê tchê tchê tchererê tchê tchê tchererê tchê tchê tchereretchê tchê, tchê, tchê Gusttavo Lima e você LSMHuffman/bb.txt vilégio que então redigi, chamei a atenção do governo para esse resultado, verdadeiramente cristão. Todavia, não neguei aos amigos as vantagens pecuniárias que deviam resultar da distribuição de um produto de tamanhos e tão profundos efei- tos. Agora, porém, que estou cá do outro lado da vida, posso confessar tudo: o que me influiu principalmente foi o gosto de ver impressas nos jornais, mostradores, folhetos, esquinas, e enfim nas caixinhas do remédio, estas três palavras: Emplasto Brás Cubas. Para que negá-lo? Eu tinha a paixão do arruído, do cartaz, do foguete de lágrimas. Talvez os modestos me ar- guam esse defeito; fio, porém, que esse talento me hão de re- conhecer os hábeis; "...e eu era hábil." Assim, a minha idéia trazia duas faces, como as medalhas, uma virada para o públi- co, outra para mim. De um lado, filantropia e lucro; de outro lado, sede de nomeada. Digamos: -- amor da glória. Um tio meu, cônego de prebenda inteira, costumava di- zer que o amor da glória temporal era a perdição das almas, que só devem cobiçar a glória eterna. Ao que retorquia outro tio, oficial de um dos antigos terços de infantaria, que o amor da glória era a coisa mais verdadeiramente humana que há no homem, e, conseguintemente, a sua mais genuína feição. Decida o leitor entre o militar e o cônego; eu volto ao emplasto. CAPÍTULO 3 Genealogia Mas, já que falei nos meus dois tios, deixem-me fazer aqui um curto esboço genealógico. O fundador de minha família foi um certo Damião Cu- bas, que floresceu na primeira metade do século XVIII. Era tanoeiro de ofício, natural do Rio de Janeiro, onde teria morrido na penúria e na obscuridade, se somente exercesse a tanoaria. Mas não; fez-se lavrador, plantou, colheu, permu- tou o seu produto por boas e honradas patacas, até que mor- reu, deixando grosso cabedal a um filho, o licenciado Luís Cubas. Neste rapaz é que verdadeiramente começa a série de meus avós -- dos avós que a minha família sempre confessou - porque o Damião Cubas era afinal de contas um tanoeiro, e talvez mau tanoeiro, ao passo que o Luís Cubas estudou em Coimbra, primou no Estado, e foi um dos amigos particulares do vice-rei conde da Cunha. Como este apelido de Cubas lhe cheirasse excessivamen- te a tanoaria, alegava meu pai, bisneto do Damião, que o dito apelido fora dado a um cavaleiro, herói nas jornadas da Afri- ca, em prêmio da façanha que praticou arrebatando trezen- tas cubas ao mouros. Meu pai era homem de imaginação; es- capou à tanoaria nas asas de um calembour. Era um bom cará- ter, meu pai, varão digno e leal como poucos. Tinha, é verda- de, uns fumos de pacholice; mas quem não é um pouco pachola nesse mundo? Releva notar que ele não recorreu à inventiva senão depois de experimentar a falsificação; primei- ramente, entroncou-se na família daquele meu famoso homô- nimo, o capitão-mor Brás Cubas, que fundou a vila de São Vicente, onde morreu em 1592, e por esse motivo é que me deu o nome de Brás. Opôs-se-lhe, porém, a família do capi- tão-mor, e foi então que ele imaginou as trezentas cubas mouriscas. Vivem ainda alguns membros de minha família, minha sobrinha Venância, por exemplo, o lírio-do-vale, que é a flor das damas do seu tempo; vive o pai, o Cotrim, um sujeito que... Mas não antecipemos os sucessos; acabemos de uma vez com o nosso emplasto. CAPÍTULO 4 A Idéia Fixa A minha idéia, depois de tantas cabriolas, constituíra-se idéia fixa. Deus te livre, leitor, de uma idéia fixa; antes um argueiro, antes uma trave no olho. Vê o Cavour; foi a idéia fixa da unidade italiana que o matou. Verdade é que Bismarck não morreu; mas cumpre advertir que a natureza é uma gran- de caprichosa e a história uma eterna loureira. Por exemplo, Suetônio deu-nos um Cláudio, que era um "verdadeiro bana- na", -- ou "uma abóbora" como lhe chamou Sêneca, e um Tito, que mereceu ser as delícias de Roma. Veio moder- namente um professor e achou meio de demonstrar que am- bos esses conceitos eram errôneos e abstrusos, e que dos dois césares, o delicioso, o verdadeiramente delicioso, foi o "abó- bora" de Sêneca. E tu, madama Lucrécia, flor dos Bórgias, se um poeta te pintou como a Messalina católica, apareceu um Gregorovius incrédulo que te apagou muito essa qualidade, e, se não vieste a lírio, também não ficaste pântano. Eu dei- xo-me estar entre o poeta e o sábio. Viva pois a história, a volúvel história que dá para tudo; e, tomando à idéia fixa, direi que é ela a que faz os varões fortes e os doidos; a idéia móbil, vaga ou furta-cor é a que faz os Cláudios, -- formula Suetônio. Era fixa a minha idéia, fixa como... Não me ocorre nada que seja assaz fixo nesse mundo: talvez a lua, talvez as pirâmi- des do Egito, talvez a finada dieta germânica. Veja o leitor a comparação que melhor lhe quadrar, veja-a e não esteja daí a torcer-me o nariz, só porque ainda não chegamos à parte nar- rativa destas memórias. Lá iremos. Creio que prefere a ane- dota à reflexão, como os outros leitores, seus confrades, e acho que faz muito bem. Pois lá iremos. Todavia, importa dizer que este livro é escrito com pachorra, com a pachorra de um. LSMHuffman/boxCurses.h /* * File: boxCurses.h * Author: joao * * Created on 12 de Maio de 2016, 19:20 */ #ifndef BOXCURSES_H #define BOXCURSES_H #include<ncurses.h> #include<string.h> #ifdef __cplusplus extern "C" { #endif //-------------------- void initSetup(); void exitWin(); void makeWindow(int rowStart,int lineStart,int rowEnd,int lineEnd,int color); void displayMsgCenter(int line,char mesg[]); void spc(register int nSpcs,register int typeBlock); //--------------------------------------------------------------------------- void displayMsgCenter(int line,char mesg[]){ int row,col; getmaxyx(stdscr,row,col); move(line,(col-strlen(mesg))/2); printw("%s",mesg); refresh(); } //---------------------------------------------------------------------------- void makeWindow(int rowStart,int lineStart,int rowEnd,int lineEnd,int color){ attron(COLOR_PAIR((color))); move(lineStart,rowStart); addch(ACS_ULCORNER); move(lineStart,rowEnd); addch(ACS_URCORNER); move(lineEnd,rowStart); addch(ACS_LLCORNER); move(lineEnd,rowEnd); addch(ACS_LRCORNER); for(int i=lineStart+1;i<lineEnd;i++){ move(i,rowStart); addch(ACS_VLINE); move(i,rowEnd); addch(ACS_VLINE); } for(int i=rowStart+1;i<rowEnd;i++){ move(lineStart,i); addch(ACS_HLINE); move(lineEnd,i); addch(ACS_HLINE); } refresh(); } //-------------------- void spc(register int nSpcs,register int typeBlock){ for(register int i=0;i<nSpcs;i++) if (typeBlock==0) addch(ACS_CKBOARD); else printw(" "); refresh(); } //-------------------- void initSetup(){ initscr(); start_color(); use_default_colors(); init_pair(1,COLOR_WHITE,COLOR_BLUE); init_pair(2,COLOR_BLUE,COLOR_WHITE); init_pair(3,COLOR_BLUE,COLOR_BLACK); init_pair(4,COLOR_BLUE,COLOR_BLUE); init_pair(5,COLOR_CYAN,COLOR_BLUE); init_pair(6,COLOR_BLUE,COLOR_CYAN); init_pair(7,COLOR_CYAN,COLOR_CYAN); init_pair(8,COLOR_BLACK,COLOR_WHITE); init_pair(9,COLOR_WHITE,COLOR_WHITE); init_pair(10,COLOR_WHITE,COLOR_BLACK); init_pair(11,COLOR_WHITE,COLOR_RED); init_pair(12,COLOR_RED,COLOR_BLUE); init_pair(13,COLOR_RED,COLOR_BLACK); init_pair(14,COLOR_GREEN,COLOR_BLACK); init_pair(15,COLOR_YELLOW,COLOR_BLACK); init_pair(16,COLOR_GREEN,COLOR_BLUE); init_pair(17,COLOR_BLACK,COLOR_BLACK); init_pair(18,COLOR_RED,COLOR_RED); init_pair(19,COLOR_YELLOW,COLOR_RED); init_pair(20,COLOR_YELLOW,COLOR_BLUE); init_pair(21,COLOR_YELLOW,COLOR_BLACK); init_pair(22,COLOR_BLACK,COLOR_YELLOW); init_pair(23,COLOR_RED,COLOR_WHITE); } //-------------------- void exitWin(){ endwin(); } #ifdef __cplusplus } #endif #endif /* BOXCURSES_H */ LSMHuffman/bras.txt Algum tempo hesitei se devia abrir estas memórias pelo princípio ou pelo fim, isto é, se poria em primeiro lugar o meu nascimento ou a minha morte. Suposto o uso vulgar seja co- meçar pelo nascimento, duas considerações me levaram a adotar diferente método: a primeira é que eu não sou propria- mente um autor defunto, mas um defunto autor, para quem a campa foi outro berço; a segunda é que o escrito ficaria assim mais galante e mais novo. Moisés, que também contou a sua morte, não a pôs no intróito, mas no cabo; diferença radical entre este livro e o Pentateuco. Dito isto, expirei às duas horas da tarde de uma sexta-fei- ra do mês de agosto de 1869, na minha bela chácara de Catumbi. Tinha uns sessenta e quatro anos, rijos e prósperos, era solteiro, possuía cerca de trezentos contos e fui acompa- nhado ao cemitério por onze amigos. Onze amigos! Verdade é que não houve cartas nem anúncios. Acresce que chovia - peneirava - uma chuvinha miúda, triste e constante, tão constante e tão triste, que levou um daqueles fiéis da última hora a intercalar esta engenhosa idéia no discurso que profe- riu à beira de minha cova: -- "Vós, que o conhecestes, meus senhores, vós podeis dizer comigo que a natureza parece es- tar chorando a perda irreparável de um dos mais belos carac- teres que tem honrado a humanidade. Este ar sombrio, estas gotas do céu, aquelas nuvens escuras que cobrem o azul como um crepe funéreo, tudo isso é a dor crua e má que lhe rói à natureza as mais íntimas entranhas; tudo isso é um sublime louvor ao nosso ilustre finado." Bom e fiel amigo! Não, não me arrependo das vinte apó- lices que lhe deixei. E foi assim que cheguei à cláusula dos meus dias; foi assim que me encaminhei para o undiscovered country de Hamlet, sem as ânsias nem as dúvidas do moço príncipe, mas pausado e trôpego, como quem se retira tarde do espetáculo. Tarde e aborrecido. Viram-me ir umas nove ou dez pessoas, entre elas três senhoras, -- minha irmã Sabina, casada com o Cotrim, -- a filha, um lírio-do-vale, -- e... Te- nham paciência! daqui a pouco lhes direi quem era a terceira senhora. Contentem-se de saber que essa anônima, ainda que não parenta, padeceu mais do que as parentas. É verdade, padeceu mais. Não digo que se carpisse, não digo que se dei- xasse rolar pelo chão, epiléptica. Nem o meu óbito era coisa altamente dramática... Um solteirão que expira aos sessenta e quatro anos, não parece que reúna em si todos os elemen- tos de uma tragédia. E dado que sim, o que menos convinha a essa anônima era aparentá-lo. De pé, à cabeceira da cama, com os olhos estúpidos, a boca entreaberta, a triste senhora mal podia crer na minha extinção. - Morto! morto! dizia consigo. E a imaginação dela, como as cegonhas que um ilustre viajante viu desferirem o vôo desde o Ilisso às ribas africanas, sem embargo das ruínas e dos tempos, -- a imaginação dessa senhora também voou por sobre os destroços presentes até às ribas de uma África juvenil... Deixá-la ir; lá iremos mais tar- de; lá iremos quando eu me restituir aos primeiros anos. Ago- ra, quero morrer tranqüilamente, metodicamente, ouvindo os soluços das damas, as falas baixas dos homens, a chuva que tamborila nas folhas de tinhorão da chácara, e o som estrídulo de uma navalha que um amolador está afiando lá fora, à por- ta de um correeiro. Juro-lhes que essa orquestra da morte foi muito menos triste do que podia parecer. De certo ponto em diante chegou a ser deliciosa. A vida estrebuchava-me no peito, com uns ímpetos de vaga marinha, esvaía-se-me a cons- ciência, eu descia à imobilidade física e moral, e o corpo fa- zia-se-me planta, e pedra, e lodo, e coisa nenhuma. Morri de uma pneumonia; mas se lhe disser que foi menos a pneumonia, do que uma idéia grandiosa e útil, a causa da minha morte, é possível que o leitor me não creia, e todavia é verdade. Vou expor-lhe sumariamente o caso. Julgue-o por si mesmo. LSMHuffman/build/Debug/GNU-Linux-x86/main.o LSMHuffman/build/Debug/GNU-Linux-x86/main.o.d build/Debug/GNU-Linux-x86/main.o: main.cpp boxCurses.h HuffmanUtil.h \ Huffman.h NodeList.h Forms.h boxCurses.h: HuffmanUtil.h: Huffman.h: NodeList.h: Forms.h: LSMHuffman/dist/Debug/GNU-Linux-x86/lsmhuffman LSMHuffman/dist/Debug/GNU-Linux/lsmhuffman LSMHuffman/main.cpp /* * File: main.cpp * Author: joao * * Created on 9 de Maio de 2016, 15:21 */ #include <cstdlib> #include <stdio.h> #include <dirent.h> #include"boxCurses.h" #include "HuffmanUtil.h" #include"Forms.h" using namespace std; /* * */ /*----------------------------------------------------------------------------*/ void menuPrincipal(); char* listArq(); /*----------------------------------------------------------------------------*/ int main(int argc, char** argv) { //------------------ initSetup(); noecho(); keypad(stdscr, TRUE); //------------------ menuPrincipal(); } void menuPrincipal() { list *listaNos = NULL; No *huffmanTree = NULL; char op, nomeArq[20], nomeTab[25],codigo[21],aux[21], *nomeAux, flag = 0,hFlag='0',cp=0; strcpy(codigo,""); strcpy(aux,""); do { telaPrincipal(); if (flag) infoFile(nomeArq,cp); flushinp(); op = getch(); switch (op) { case'e': formArq(); nomeAux = listArq(); strcpy(nomeArq, nomeAux); strcpy(nomeTab, nomeAux); strcat(nomeTab, ".tab"); flag = 1; break; case'p': fileTolist(nomeArq,&listaNos); gravaLista(nomeTab, listaNos); montarArvore(listaNos, &huffmanTree); compactarArquivo(nomeArq,huffmanTree); cp=1; break; case'r': formArq(); nomeAux = listArq(); strcpy(nomeArq, nomeAux); formArq(); descompactarArquivo(nomeArq); break; case'x': exitWin(); break; } refresh(); } while (op != 'x'); } //------------------------------------------------------------------------------ char* listArq() { struct dirent **listaArq; char nameFile[20]; int n = scandir(".", &listaArq, 0, alphasort); int cont = 0, nArq = 0, lado = 0; attron(A_BOLD); attron(COLOR_PAIR((23))); move(5, 3); while (n--) { move(5 + cont++, 3 + lado); printw("[%d]-[%s]", n, listaArq[n]->d_name); if (cont % 16 == 0) { cont = 0; lado = lado + 25; } } move(22, 3); printw("Type the file number: "); scanw("%d", &nArq); attroff(A_BOLD); return listaArq[nArq]->d_name; free(listaArq); } LSMHuffman/moleque.txt Paparazzi ta de olho em nós Boa fase, pré, ao vivo e pós Tumultuou tudo e de novo passou batido Ah os moleque é liso A história começou assim Vi os vida louca contando dindim Um rapper gringo embrasar no plim plim Vou escrever uma história pra mim assim Vou visitar esse shopping, adquirir umas peças da Oakley Lançar um carro nome Amarok, um tênis Nike de modelo Shox Adquirir Calvin Klein, a Tommy, a Lacoste e as nota que vai E antes que o bronze sai, o ouro e a prata e a benção do pai Anota aí, pode escrever, os humilhados sempre vão vencer E se você paga pra ver, estou ao vivo aqui pra te dizer Paparazzi ta de olho em nós Boa fase, pré, ao vivo e pós Tumultuou tudo e de novo passou batido Ah os moleque é liso A história começou assim Vi os vida louca nadar no dindim Um rapper gringo embrasar no plim plim Vou escrever uma história pra mim assim Vou visitar esse shopping, adquirir umas peças da Oakley Lançar um carro nome Amarok, um tênis Nike de modelo Shox Adquirir Calvin Klein, a Tommy, a Lacoste é as nota que vai Quando o dj soltar no akai, rebola gatona no colo do pai Anota aí, pode escrever, onde nós cola faz o fuzuê E no final eu e você, do baile funk lá pro meu apê Paparazzi tá de olho em nós Boa fase, pré, ao vivo e pós Tumultuou tudo e de novo passou batido Ah, os moleque é liso LSMHuffman/nbproject/Makefile-Debug.mk # # Generated Makefile - do not edit! # # Edit the Makefile in the project folder instead (../Makefile). Each target # has a -pre and a -post target defined where you can add customized code. # # This makefile implements configuration specific macros and targets. # Environment MKDIR=mkdir CP=cp GREP=grep NM=nm CCADMIN=CCadmin RANLIB=ranlib CC=gcc CCC=g++ CXX=g++ FC=gfortran AS=as # Macros CND_PLATFORM=GNU-Linux-x86 CND_DLIB_EXT=so CND_CONF=Debug CND_DISTDIR=dist CND_BUILDDIR=build # Include project Makefile include Makefile # Object Directory OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} # Object Files OBJECTFILES= \ ${OBJECTDIR}/main.o # C Compiler Flags CFLAGS=-lcurses # CC Compiler Flags CCFLAGS=-lcurses CXXFLAGS=-lcurses # Fortran Compiler Flags FFLAGS= # Assembler Flags ASFLAGS= # Link Libraries and Options LDLIBSOPTIONS= # Build Targets .build-conf: ${BUILD_SUBPROJECTS} "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/lsmhuffman ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/lsmhuffman: ${OBJECTFILES} ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} ${LINK.cc} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/lsmhuffman ${OBJECTFILES} ${LDLIBSOPTIONS} ${OBJECTDIR}/main.o: main.cpp ${MKDIR} -p ${OBJECTDIR} ${RM} "$@.d" $(COMPILE.cc) -g -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/main.o main.cpp # Subprojects .build-subprojects: # Clean Targets .clean-conf: ${CLEAN_SUBPROJECTS} ${RM} -r ${CND_BUILDDIR}/${CND_CONF} ${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/lsmhuffman # Subprojects .clean-subprojects: # Enable dependency checking .dep.inc: .depcheck-impl include .dep.inc LSMHuffman/nbproject/Makefile-Release.mk # # Generated Makefile - do not edit! # # Edit the Makefile in the project folder instead (../Makefile). Each target # has a -pre and a -post target defined where you can add customized code. # # This makefile implements configuration specific macros and targets. # Environment MKDIR=mkdir CP=cp GREP=grep NM=nm CCADMIN=CCadmin RANLIB=ranlib CC=gcc CCC=g++ CXX=g++ FC=gfortran AS=as # Macros CND_PLATFORM=GNU-Linux-x86 CND_DLIB_EXT=so CND_CONF=Release CND_DISTDIR=dist CND_BUILDDIR=build # Include project Makefile include Makefile # Object Directory OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} # Object Files OBJECTFILES= \ ${OBJECTDIR}/main.o # C Compiler Flags CFLAGS= # CC Compiler Flags CCFLAGS= CXXFLAGS= # Fortran Compiler Flags FFLAGS= # Assembler Flags ASFLAGS= # Link Libraries and Options LDLIBSOPTIONS= # Build Targets .build-conf: ${BUILD_SUBPROJECTS} "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/lsmhuffman ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/lsmhuffman: ${OBJECTFILES} ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} ${LINK.cc} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/lsmhuffman ${OBJECTFILES} ${LDLIBSOPTIONS} ${OBJECTDIR}/main.o: main.cpp ${MKDIR} -p ${OBJECTDIR} ${RM} "$@.d" $(COMPILE.cc) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/main.o main.cpp # Subprojects .build-subprojects: # Clean Targets .clean-conf: ${CLEAN_SUBPROJECTS} ${RM} -r ${CND_BUILDDIR}/${CND_CONF} ${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/lsmhuffman # Subprojects .clean-subprojects: # Enable dependency checking .dep.inc: .depcheck-impl include .dep.inc LSMHuffman/nbproject/Makefile-impl.mk # # Generated Makefile - do not edit! # # Edit the Makefile in the project folder instead (../Makefile). Each target # has a pre- and a post- target defined where you can add customization code. # # This makefile implements macros and targets common to all configurations. # # NOCDDL # Building and Cleaning subprojects are done by default, but can be controlled with the SUB # macro. If SUB=no, subprojects will not be built or cleaned. The following macro # statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf # and .clean-reqprojects-conf unless SUB has the value 'no' SUB_no=NO SUBPROJECTS=${SUB_${SUB}} BUILD_SUBPROJECTS_=.build-subprojects BUILD_SUBPROJECTS_NO= BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}} CLEAN_SUBPROJECTS_=.clean-subprojects CLEAN_SUBPROJECTS_NO= CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}} # Project Name PROJECTNAME=LSMHuffman # Active Configuration DEFAULTCONF=Debug CONF=${DEFAULTCONF} # All Configurations ALLCONFS=Debug Release # build .build-impl: .build-pre .validate-impl .depcheck-impl @#echo "=> Running $@... Configuration=$(CONF)" "${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf # clean .clean-impl: .clean-pre .validate-impl .depcheck-impl @#echo "=> Running $@... Configuration=$(CONF)" "${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf # clobber .clobber-impl: .clobber-pre .depcheck-impl @#echo "=> Running $@..." for CONF in ${ALLCONFS}; \ do \ "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf; \ done # all .all-impl: .all-pre .depcheck-impl @#echo "=> Running $@..." for CONF in ${ALLCONFS}; \ do \ "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf; \ done # build tests .build-tests-impl: .build-impl .build-tests-pre @#echo "=> Running $@... Configuration=$(CONF)" "${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-tests-conf # run tests .test-impl: .build-tests-impl .test-pre @#echo "=> Running $@... Configuration=$(CONF)" "${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .test-conf # dependency checking support .depcheck-impl: @echo "# This code depends on make tool being used" >.dep.inc @if [ -n "${MAKE_VERSION}" ]; then \ echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES}))" >>.dep.inc; \ echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \ echo "include \$${DEPFILES}" >>.dep.inc; \ echo "endif" >>.dep.inc; \ else \ echo ".KEEP_STATE:" >>.dep.inc; \ echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \ fi # configuration validation .validate-impl: @if [ ! -f nbproject/Makefile-${CONF}.mk ]; \ then \ echo ""; \ echo "Error: can not find the makefile for configuration '${CONF}' in project ${PROJECTNAME}"; \ echo "See 'make help' for details."; \ echo "Current directory: " `pwd`; \ echo ""; \ fi @if [ ! -f nbproject/Makefile-${CONF}.mk ]; \ then \ exit 1; \ fi # help .help-impl: .help-pre @echo "This makefile supports the following configurations:" @echo " ${ALLCONFS}" @echo "" @echo "and the following targets:" @echo " build (default target)" @echo " clean" @echo " clobber" @echo " all" @echo " help" @echo "" @echo "Makefile Usage:" @echo " make [CONF=<CONFIGURATION>] [SUB=no] build" @echo " make [CONF=<CONFIGURATION>] [SUB=no] clean" @echo " make [SUB=no] clobber" @echo " make [SUB=no] all" @echo " make help" @echo "" @echo "Target 'build' will build a specific configuration and, unless 'SUB=no'," @echo " also build subprojects." @echo "Target 'clean' will clean a specific configuration and, unless 'SUB=no'," @echo " also clean subprojects." @echo "Target 'clobber' will remove all built files from all configurations and," @echo " unless 'SUB=no', also from subprojects." @echo "Target 'all' will will build all configurations and, unless 'SUB=no'," @echo " also build subprojects." @echo "Target 'help' prints this message." @echo "" LSMHuffman/nbproject/Makefile-variables.mk # # Generated - do not edit! # # NOCDDL # CND_BASEDIR=`pwd` CND_BUILDDIR=build CND_DISTDIR=dist # Debug configuration CND_PLATFORM_Debug=GNU-Linux-x86 CND_ARTIFACT_DIR_Debug=dist/Debug/GNU-Linux-x86 CND_ARTIFACT_NAME_Debug=lsmhuffman CND_ARTIFACT_PATH_Debug=dist/Debug/GNU-Linux-x86/lsmhuffman CND_PACKAGE_DIR_Debug=dist/Debug/GNU-Linux-x86/package CND_PACKAGE_NAME_Debug=lsmhuffman.tar CND_PACKAGE_PATH_Debug=dist/Debug/GNU-Linux-x86/package/lsmhuffman.tar # Release configuration CND_PLATFORM_Release=GNU-Linux-x86 CND_ARTIFACT_DIR_Release=dist/Release/GNU-Linux-x86 CND_ARTIFACT_NAME_Release=lsmhuffman CND_ARTIFACT_PATH_Release=dist/Release/GNU-Linux-x86/lsmhuffman CND_PACKAGE_DIR_Release=dist/Release/GNU-Linux-x86/package CND_PACKAGE_NAME_Release=lsmhuffman.tar CND_PACKAGE_PATH_Release=dist/Release/GNU-Linux-x86/package/lsmhuffman.tar # # include compiler specific variables # # dmake command ROOT:sh = test -f nbproject/private/Makefile-variables.mk || \ (mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk) # # gmake command .PHONY: $(shell test -f nbproject/private/Makefile-variables.mk || (mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk)) # include nbproject/private/Makefile-variables.mk LSMHuffman/nbproject/Package-Debug.bash #!/bin/bash -x # # Generated - do not edit! # # Macros TOP=`pwd` CND_PLATFORM=GNU-Linux-x86 CND_CONF=Debug CND_DISTDIR=dist CND_BUILDDIR=build CND_DLIB_EXT=so NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging TMPDIRNAME=tmp-packaging OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/lsmhuffman OUTPUT_BASENAME=lsmhuffman PACKAGE_TOP_DIR=lsmhuffman/ # Functions function checkReturnCode { rc=$? if [ $rc != 0 ] then exit $rc fi } function makeDirectory # $1 directory path # $2 permission (optional) { mkdir -p "$1" checkReturnCode if [ "$2" != "" ] then chmod $2 "$1" checkReturnCode fi } function copyFileToTmpDir # $1 from-file path # $2 to-file path # $3 permission { cp "$1" "$2" checkReturnCode if [ "$3" != "" ] then chmod $3 "$2" checkReturnCode fi } # Setup cd "${TOP}" mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package rm -rf ${NBTMPDIR} mkdir -p ${NBTMPDIR} # Copy files and create directories and links cd "${TOP}" makeDirectory "${NBTMPDIR}/lsmhuffman/bin" copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 # Generate tar file cd "${TOP}" rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/lsmhuffman.tar cd ${NBTMPDIR} tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/lsmhuffman.tar * checkReturnCode # Cleanup cd "${TOP}" rm -rf ${NBTMPDIR} LSMHuffman/nbproject/Package-Release.bash #!/bin/bash -x # # Generated - do not edit! # # Macros TOP=`pwd` CND_PLATFORM=GNU-Linux-x86 CND_CONF=Release CND_DISTDIR=dist CND_BUILDDIR=build CND_DLIB_EXT=so NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging TMPDIRNAME=tmp-packaging OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/lsmhuffman OUTPUT_BASENAME=lsmhuffman PACKAGE_TOP_DIR=lsmhuffman/ # Functions function checkReturnCode { rc=$? if [ $rc != 0 ] then exit $rc fi } function makeDirectory # $1 directory path # $2 permission (optional) { mkdir -p "$1" checkReturnCode if [ "$2" != "" ] then chmod $2 "$1" checkReturnCode fi } function copyFileToTmpDir # $1 from-file path # $2 to-file path # $3 permission { cp "$1" "$2" checkReturnCode if [ "$3" != "" ] then chmod $3 "$2" checkReturnCode fi } # Setup cd "${TOP}" mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package rm -rf ${NBTMPDIR} mkdir -p ${NBTMPDIR} # Copy files and create directories and links cd "${TOP}" makeDirectory "${NBTMPDIR}/lsmhuffman/bin" copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 # Generate tar file cd "${TOP}" rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/lsmhuffman.tar cd ${NBTMPDIR} tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/lsmhuffman.tar * checkReturnCode # Cleanup cd "${TOP}" rm -rf ${NBTMPDIR} LSMHuffman/nbproject/configurations.xml Forms.h Huffman.h HuffmanUtil.h NodeList.h boxCurses.h main.cpp Makefile Makefile default true false -lcurses -lcurses default true false 5 5 5 5 LSMHuffman/nbproject/private/Makefile-variables.mk # # Generated - do not edit! # # NOCDDL # # Debug configuration # Release configuration LSMHuffman/nbproject/private/configurations.xml Makefile localhost 2 gdb "${OUTPUT_PATH}" "${OUTPUT_PATH}" true 1 2 0 localhost 2 gdb "${OUTPUT_PATH}" "${OUTPUT_PATH}" true 0 0 LSMHuffman/nbproject/private/launcher.properties # Launchers File syntax: # # [Must-have property line] # launcher1.runCommand=<Run Command> # [Optional extra properties] # launcher1.displayName=<Display Name, runCommand by default> # launcher1.buildCommand=<Build Command, Build Command specified in project properties by default> # launcher1.runDir=<Run Directory, ${PROJECT_DIR} by default> # launcher1.symbolFiles=<Symbol Files loaded by debugger, ${OUTPUT_PATH} by default> # launcher1.env.<Environment variable KEY>=<Environment variable VALUE> # (If this value is quoted with ` it is handled as a native command which execution result will become the value) # [Common launcher properties] # common.runDir=<Run Directory> # (This value is overwritten by a launcher specific runDir value if the latter exists) # common.env.<Environment variable KEY>=<Environment variable VALUE> # (Environment variables from common launcher are merged with launcher specific variables) # common.symbolFiles=<Symbol Files loaded by debugger> # (This value is overwritten by a launcher specific symbolFiles value if the latter exists) # # In runDir, symbolFiles and env fields you can use these macroses: # ${PROJECT_DIR} - project directory absolute path # ${OUTPUT_PATH} - linker output path (relative to project directory path) # ${OUTPUT_BASENAME}- linker output filename # ${TESTDIR} - test files directory (relative to project directory path) # ${OBJECTDIR} - object files directory (relative to project directory path) # ${CND_DISTDIR} - distribution directory (relative to project directory path) # ${CND_BUILDDIR} - build directory (relative to project directory path) # ${CND_PLATFORM} - platform name # ${CND_CONF} - configuration name # ${CND_DLIB_EXT} - dynamic library extension # # All the project launchers must be listed in the file! # # launcher1.runCommand=... # launcher2.runCommand=... # ... # common.runDir=... # common.env.KEY=VALUE # launcher1.runCommand=<type your run command here> LSMHuffman/nbproject/private/private.xml 1 0 LSMHuffman/nbproject/project.xml org.netbeans.modules.cnd.makeproject LSMHuffman cpp h UTF-8 Debug 1 Release 1 false LSMHuffman/padre.txt O padre tem pouca capa , porque pouca capa compra . LSMHuffman/padre.txt.PAC 11101111000101110001010101110011100 LSMHuffman/padre.txt.tab O;0.09 padre;0.09 tem;0.09 ,;0.09 porque;0.09 compra;0.09 .;0.09 pouca;0.18 capa;0.18 LSMHuffman/perrita.txt El perrito de Rita me irrita. Si el perrito de Rita te irrita dile, a Rita que cambie el perrito por una perrita.
Compartilhar