add destry routine

git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@725 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Linas Vepstas 1998-03-25 08:00:17 +00:00
parent f910c4b448
commit 5ba96f4421
2 changed files with 74 additions and 9 deletions

View File

@ -1,7 +1,35 @@
/*
* FILE:
* cellblock.c
*
* FUNCTION:
* implements a rectangular array of cells. See the header file for
* additional documentation.
*
* HISTORY:
* Copyright (c) 1998 Linas Vepstas
*/
/********************************************************************\
* This program is free software; you can redistribute it and/or *
* modify it under the terms of the GNU General Public License as *
* published by the Free Software Foundation; either version 2 of *
* the License, or (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License*
* along with this program; if not, write to the Free Software *
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
\********************************************************************/
#include <stdlib.h> #include <stdlib.h>
#include "cellblock.h" #include "cellblock.h"
/* =================================================== */
CellBlock * xaccMallocCellBlock (int numrows, int numcols) CellBlock * xaccMallocCellBlock (int numrows, int numcols)
{ {
@ -24,18 +52,16 @@ CellBlock * xaccMallocCellBlock (int numrows, int numcols)
/* =================================================== */ /* =================================================== */
void static void
xaccInitCellBlock (CellBlock *arr, int numrows, int numcols) FreeCellBlockMem (CellBlock *arr)
{ {
int i, j; int i;
int oldrows, oldcols; int oldrows, oldcols;
if (!arr) return;
oldrows = arr->numRows; oldrows = arr->numRows;
oldcols = arr->numCols; oldcols = arr->numCols;
/* free old cell array, if any */ /* free cell array, if any */
if (arr->cells) { if (arr->cells) {
for (i=0; i<oldrows; i++) { for (i=0; i<oldrows; i++) {
if (arr->cells[i]) free (arr->cells[i]); if (arr->cells[i]) free (arr->cells[i]);
@ -43,7 +69,7 @@ xaccInitCellBlock (CellBlock *arr, int numrows, int numcols)
free (arr->cells); free (arr->cells);
} }
/* free old traversal chain */ /* free traversal chain */
if (arr->right_traverse_r) { if (arr->right_traverse_r) {
for (i=0; i<oldrows; i++) { for (i=0; i<oldrows; i++) {
if (arr->right_traverse_r[i]) free (arr->right_traverse_r[i]); if (arr->right_traverse_r[i]) free (arr->right_traverse_r[i]);
@ -55,11 +81,21 @@ xaccInitCellBlock (CellBlock *arr, int numrows, int numcols)
} }
} }
/* free old widths, alignments */ /* free widths, alignments */
if (arr->widths) free (arr->widths); if (arr->widths) free (arr->widths);
if (arr->alignments) free (arr->alignments); if (arr->alignments) free (arr->alignments);
}
/* =================================================== */
void
xaccInitCellBlock (CellBlock *arr, int numrows, int numcols)
{
int i, j;
if (!arr) return;
FreeCellBlockMem (arr);
/* -------------------------------------------------- */
/* record new size */ /* record new size */
arr->numRows = numrows; arr->numRows = numrows;
arr->numCols = numcols; arr->numCols = numcols;
@ -103,6 +139,19 @@ xaccInitCellBlock (CellBlock *arr, int numrows, int numcols)
/* =================================================== */ /* =================================================== */
void
xaccDestroyCellBlock (CellBlock *arr)
{
if (!arr) return;
FreeCellBlockMem (arr);
/* finally, free this object itself */
free (arr);
}
/* =================================================== */
void void
xaccAddCell (CellBlock *arr, BasicCell *cell, int row, int col) xaccAddCell (CellBlock *arr, BasicCell *cell, int row, int col)
{ {

View File

@ -31,6 +31,21 @@
* The right_traverse array indicates which cell chould be * The right_traverse array indicates which cell chould be
* traversed to when the tab key is pressed. * traversed to when the tab key is pressed.
*/ */
/********************************************************************\
* This program is free software; you can redistribute it and/or *
* modify it under the terms of the GNU General Public License as *
* published by the Free Software Foundation; either version 2 of *
* the License, or (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License*
* along with this program; if not, write to the Free Software *
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
\********************************************************************/
#ifndef __XACC_CELL_BLOCK_H__ #ifndef __XACC_CELL_BLOCK_H__
#define __XACC_CELL_BLOCK_H__ #define __XACC_CELL_BLOCK_H__
@ -58,6 +73,7 @@ typedef struct _CellBlock {
CellBlock * xaccMallocCellBlock (int numrows, int numcols); CellBlock * xaccMallocCellBlock (int numrows, int numcols);
void xaccInitCellBlock (CellBlock *, int numrows, int numcols); void xaccInitCellBlock (CellBlock *, int numrows, int numcols);
void xaccDestroyCellBlock (CellBlock *);
/* add a cell to the array */ /* add a cell to the array */
void xaccAddCell (CellBlock *, BasicCell *, int row, int col); void xaccAddCell (CellBlock *, BasicCell *, int row, int col);