Kommentit tehty ao. commitin perusteella:
commit fa10c86b5fc6f762e4de1021155d131ea2d4cb9e
En tunne CMakea, joten en alkanut tarkemmin selvittelemään sen sielunelämää.
$ cmake .
$ make tira
tarvitsi vielä gcovr:n.
Ohjeissa ei ollut testien tekemisestä mainintaa, kaivoin vähän Makefilea ja löysin test-targetin:
$ make test
Running tests...
Test project /home/p/dev/compression_tira
Start 1: tira_test
Could not find executable /home/p/dev/compression_tira/tira_test
<CUT>
En ruvennut sen enempää tutkimaan asiaa, testit eivät siis toimineet.
Itse ohjelman ajaminen:
./tira -c file
tekee file.huffin ja
./tira -d file.huff
tekee output nimisen filen, mutta ko. output ei vastaa täysin inputtia, ts. jotain on algoritmissä rikki. (output-filen löysin vasta lähdekoodista, nämä ohjeet pitäisi olla README.md:ssä)
Lähdekoodista kommentteja:
Kommentteja on todella vähän, osa avuliaita, osasta en ymmärrä miten liittyvät kontekstiin.
Muuten koodi näyttäisi tekevän Hoffman-koodauksen ja sen purun, en tällä tutkinnalla keksinyt missä bugi olisi, voi olla pakkauspuolella tai purkupuolella.
heap.h:
Määritelty sekaisin prototyyppejä ja toteutusta, minulle sekavaa lukea. Varmaankin tyylikysymys.
huffman.h:
On #ifndef HUFFMAN_H mutta sen sisällä ei ole #define HUFFMAN_H. #pragma once riittää myös jos tuota HUFFMAN_H:n defineä ei tarvita muualla.
Alun #includeista suurin osa turhia? #includet mielummin toteutuksen puolella.
huffman.cpp:
Funkioiden deklarointi inline on yleensä turhaa, (järkevä moderni) linkkeri inlinee ne muutenkin. (inline on käsittääkseni ainoastaan templateissa nykyään tarpeen)
Tässä kontekstissa extern ei taida tehdä mitään, mutta jos lähtee linkkaamaan muiden eri kielten projektien kanssa niin sitten juu.
Koodi sais vähän hengittää, eli loogiset koknaisuudet olisivat peräkkäin ja niitten välissä olisi tyhjä rivi. Nyt esim. huffman_decompress() on yksi melkein satarivinen blokki jossa on yhden monirivikommentin lisäksi vain yksi loogisesti kokonaisuuksia erottava tyhjä rivi. Raskasta lukea ja pilkkoa itse ymmärrettäväksi paketiksi.
Joo se algoritmi o viel vähä rikki, en oo iha saannu sitä decompressionii toimii viel, toi huffman_decompressii oon vähä niinku vääntämäs parhaimmillaa ni se o vähä paskaa koodii atm
Kommentit tehty ao. commitin perusteella: commit fa10c86b5fc6f762e4de1021155d131ea2d4cb9e
En tunne CMakea, joten en alkanut tarkemmin selvittelemään sen sielunelämää.
tarvitsi vielä gcovr:n.
Ohjeissa ei ollut testien tekemisestä mainintaa, kaivoin vähän Makefilea ja löysin test-targetin:
En ruvennut sen enempää tutkimaan asiaa, testit eivät siis toimineet.
Itse ohjelman ajaminen:
./tira -c file
tekee file.huffin ja./tira -d file.huff
tekee output nimisen filen, mutta ko. output ei vastaa täysin inputtia, ts. jotain on algoritmissä rikki. (output-filen löysin vasta lähdekoodista, nämä ohjeet pitäisi olla README.md:ssä)Lähdekoodista kommentteja:
heap.h:
huffman.h:
huffman.cpp: