This repository was archived by the owner on Feb 2, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFano.h
More file actions
61 lines (50 loc) · 1.53 KB
/
Fano.h
File metadata and controls
61 lines (50 loc) · 1.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#pragma once
#include <list>
#include <iostream>
#include <map>
#include <vector>
#include "FanoTree.h"
using namespace std;
#define ONE_ELEMENT 1
/// Ñòðóêòóðà, õðàíÿùàÿ â ñåáå {ñèìâîë, åãî êîëè÷åñòâî â ôàéëå}
/**
@param symbol Ñàì ñèìâîë
@param frequancy ×àñòîòà âñòðå÷àåìîñòè ñèìâîëà â ôàéëå
*/
struct SymbolRate {
char symbol;
int frequancy;
};
/// Ãëàâíûé êëàññ, êîòîðûé óïðàâëÿåò âñåìè ïðåîáðàçîâàíèÿìè îáüåêòîâ
/**
* Êëàññ, êîòîðûé äîáàâëÿåò â list ñèìâîëû, èç Listà ôîðìèðóåò äåðåâî è ò.ä.
*  êîíöå êîíöîâ óïðàâëÿåò çàïèñüþ â ôàéë ïîëó÷èâøèõñÿ êîäîâ
@param symbolNumber êîëè÷åñòâî ñèìâîëîâ
@param SRate ëèñò ñèìâîëîâ
@param fanoTree Äåðåâî Ôàíî
@param fMap_comp Map, õðàíÿùèé â ñåáå {ñèìâîë, åãî êîä Ôàíî} äëÿ àðõèâàöèè
@param fMap_comp Map, õðàíÿùèé â ñåáå {ñèìâîë, åãî êîä Ôàíî} äëÿ ðàçàðõèâàöèè
*/
class Fano {
private:
int symbolNumber;//êîëè÷åñòâî ñèìâîëîâ
list<SymbolRate> SRate;//ëèñò ñèìâîëîâ
Tree* fanoTree;//äåðåâî Ôàíî
map<char, vector<int>>* fMap_comp;
map<string, char>* fMap_decomp;
public:
Fano();
void compression(char* file_name);
void decompression(char* comp_file_name, char* out_file_name);
void create_tree();
void create_map_comp();
void create_map_decomp();
void symbol_sort();
void comp_add_symbol(char);
void pred_compression(ofstream& outf);
void file_compression(ifstream& inf, ofstream& outf);
void decomp_add_symbol(ifstream& inf);
void file_decompression(ifstream& inf, ofstream& outf);
char my_find(string& vec, int& vec_it);
~Fano();
};