utiles_v2017/csv_file.h

80 lines
1.8 KiB
C++

#pragma once
#include "base_head.h"
#include "static_array.h"
#include "StrArray.h"
#define MODULO_CSV_FILE "Ccsv_file"
typedef struct Columna_csv_file
{
int flags;//flags
int itex;//indice a texto
}Columna_csv_file;
typedef struct Fila_csv_file
{
int flags;
Cstatic_array *colum;//valor
//metodos-----------------------
void inicia(int incre=100)
{
colum = new Cstatic_array(sizeof(Columna_csv_file));
colum->incremento=incre;
}
Columna_csv_file* get(int i)
{
return(Columna_csv_file*) colum->get(i);
}
Columna_csv_file* add_coun()
{
Columna_csv_file* c;
colum->reserva();
colum->n++;
c=(Columna_csv_file*)colum->get(colum->n-1);
c->flags=0;
c->itex=0;
return c;
}
void del()
{
delete(colum);
}
}Fila_csv_file;
class C_error;
class UTILES_EXPORT Ccsv_file
{
private:
StrArray str;
Cstatic_array filas;
C_error *er;
BOOL b_er;
int incre_col;
public:
Ccsv_file(C_error* err=NULL);
~Ccsv_file(void);
//funciones-------------------------------------------------------------------
BOOL lee( char *path,char separa=';' );
BOOL guarda( char *path, char separa, BOOL ret_carro=TRUE );
char* get(int fila,int col);//consigue la columna col de la fila fila
int n();//numero de filas
int n_col(int fil);//numero de columnas de la fila fil
int add();//añade una fila (da el indice de dicha fila)
int add(int fila, char *valor);//añade una columna a la fila
int add(int fila, int valor);
int add(int fila, double valor);
BOOL set(int fila, int col, char* value);//ojo con hacer muchos cambios (la memoria no se libera)
BOOL set(int fila, int col, int value);
BOOL set(int fila, int col, double value);
void borra();//borra todo
//funciones auxiliares--------------------------------------------------------
private:
Fila_csv_file* get_f(int i);
char* busca_salto_linea( char* st );
};