00001 // 00002 // C++ Interface: arbol 00003 // 00004 // Description: 00005 // 00006 // 00007 // Author: Ricardo DÃaz <richard@galdi.es>, (C) 2005 00008 // 00009 // Copyright: See COPYING file that comes with this distribution 00010 // 00011 /*************************************************************************** 00012 * * 00013 * This program is free software; you can redistribute it and/or modify * 00014 * it under the terms of the GNU General Public License as published by * 00015 * the Free Software Foundation; either version 2 of the License, or * 00016 * (at your option) any later version. * 00017 * * 00018 ***************************************************************************/ 00019 00020 #ifndef ARBOL_H 00021 #define ARBOL_H 00022 00023 #include <qstring.h> 00024 #include "postgresiface2.h" 00025 00034 class Arbol{ 00035 private: 00036 typedef struct tipohoja; 00037 typedef struct tiporama { 00038 tipohoja* hoja; // puntero a la hoja donde se almacena los datos de la cuenta 00039 tiporama* sgte; // puntero a una rama que apunta a una hoja hermana (del mismo nivel) 00040 }; 00041 typedef struct tipohoja { 00042 int idcuenta; // idcuenta de la BD 00043 QString codigo; // codigo de la cuenta 00044 QString descripcion; // su descripcion contable 00045 double saldoant, debe, haber, saldo, debeej, haberej, saldoej; // los valores a calcular 00046 int numapuntes; // num. de apuntes que modifican los valores a calcular 00047 tiporama* ramas; // puntero a mas ramas con hojas 00048 }; 00049 tipohoja** raiz; // Raiz del arbol que contiene todas las cuentas de nivel 2 00050 tipohoja* hoja; // Hoja que contiene los datos de una cuenta 00051 tiporama* rama; // Rama que contiene una hoja y más ramas o no 00052 postgresiface2 *conexionbase; // Para el acceso a la BD con la que estamos trabajando 00053 QString hojaactiva; // Codigo de la ultima hoja visitada (nos servira de indice) 00054 00055 private: 00056 void SintetizarRamas(cursor2**, tiporama**); 00057 void ActualizarHoja(tiporama**, cursor2*, bool*); 00058 void Deshojar(tiporama*, unsigned int, bool, bool*); 00059 //void ImprimirRama(tiporama*); 00060 00061 public: 00062 Arbol(); 00063 ~Arbol(); 00065 void nuevarama(cursor2*); 00067 void inicializa(cursor2*); 00069 void actualizahojas(cursor2*); 00071 void inicia(); 00073 bool deshoja(unsigned int, bool); 00075 QString hojaactual(QString); 00077 //void imprimir(); 00078 }; 00079 00080 #endif