-
Notifications
You must be signed in to change notification settings - Fork 1
/
Comandos.h
86 lines (77 loc) · 2.53 KB
/
Comandos.h
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#ifndef COMANDOS_H
#define COMANDOS_H
#include <iostream>
#include <algorithm>
#include <fstream>
#include <string.h>
#include <cstdio>
#include <time.h> /* time_t, struct tm, time, localtime */
#include <stdio.h>
#include <vector>
#include <limits>
#include <dirent.h>
#include <unistd.h>
#include <stdio.h>
#include <cstring>
#include <string>
#include <tuple>
// verifica o Sistema Operacional para a busca (default LINUX = 1)
// retirado de https://stackoverflow.com/questions/142508/how-do-i-check-os-with-a-preprocessor-directive
#ifdef WINDOWS
#include <direct.h>
#define Define_CurrentDir _getcwd
#define SO 2
#else
#include <unistd.h>
#define Define_CurrentDir getcwd
#define SO 1
#endif
using namespace std;
#define SUCCESS 0
#define FINISH_PROGRAM 1
// FFFFFFFF#FFFFFFFF#
#define MIN_SIZE 18
#define PONTEIRO_HEAD_SIZE 10
typedef struct busca{
string nome_tabela;
vector<int> linhas;
}busca;
class Comandos {
public:
Comandos();
int criarArquivoComNomeTabela(string tabela, string* campos);
int apagaArquivoComNomeTabela(string tabela);
void resumoDaTabela(string tabela);
void listarTabelas();
void inserirRegistro(string tabela, string registro);
void buscaEmTabela(string modifier, string tabela, string busca);
void apresentarRegistrosUltimaBusca(string tabela);
void removeRegistrosUltimaBusca(string tabela);
int criaIndice(string modifier, string tabela, string chave);
void removeIndiceChave(string tabela, string chave);
void geraNovoIndiceDeTabelaChave(string tabela, string chave);
string retornaPalavraDeInput (string &input, char delimitador, bool removerEspacosAfrente = true);
string* parseCampoCT(string input);
string horaatual();
string convertToString(char* a, int size);
int existearquivoindice(string tabela, string tipoindice, string chave);
vector<string> parseBuscaMetaDados(string dados_meta);
int ponteiroProximo(string &linha);
pair<int, int> bestFit(string tabela, vector<string>inserir);
typedef struct Removido{
int pos;
int prox;
int tamanho;
string buffer;
string conteudo;
} posicoes;
vector<busca> buscas;
private:
vector<string> parseInsercao(string registro);
pair<vector<string>, vector<string>> getVetorDeMetadados(string tabela, bool IR=false);
void alterarPonteiroHead(string tabela, int ponteiro_head);
tuple<Comandos::Removido, Comandos::Removido, int> encontrarOndeInserir(string tabela, int tam_inserir);
bool possuiHash(string tabela, string indice);
bool possuiArvore(string tabela, string indice);
};
#endif