File size: 5,029 Bytes
10f2621 | 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 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 | /**
* @defgroup Bnode Bnode class
* @brief A block node object.
*/
/**
* @file bnode.h
* @ingroup Bnode
* @brief Class Bnode: a block node object.
* @version $Id: bnode.h,v 1.21 2010/08/12 05:18:21 fetk Exp $
* @author Michael Holst
*
* @attention
* @verbatim
*
* MC = < Manifold Code >
* Copyright (C) 1994-- Michael Holst
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* @endverbatim
*/
#ifndef _BNODE_H_
#define _BNODE_H_
#include <mc/mc_base.h>
#include <mc/bam.h>
#include <mc/node.h>
/**
* @ingroup Bnode
* @brief Class Bnode: Parameters and datatypes. Class Bnode: Definition.
* @author Michael Holst
*/
struct sBnode {
/** @brief the memory manager */
Vmem *vmem;
/** @brief did i make vmem or was it inherited */
int iMadeVmem;
/** @brief Character string name for this node vector */
char name[10];
/** @brief num vector blocks */
int numB;
/** @brief the nodes in each block */
Node *ND[MAXV];
};
/**
* @ingroup Bnode
* @brief Declaration of the Bnode class as the Vio structure
* @author Michael Holst
* @return None
*/
typedef struct sBnode Bnode;
#if !defined(VINLINE_APRX)
/**
* @ingroup Bnode
* @brief Return the number of blocks.
* @author Michael Holst
* @note Class Bnode: Non-inlineable methods (bnode.c)\n
* if VINLINE_APRX is not defined
* @return the number of blocks
* @param thee the Bnode class
*/
VEXTERNC int Bnode_numB(Bnode *thee);
#else
/**
* @ingroup Bnode
* @brief Return the number of blocks.
* @author Michael Holst
* @note Class Bnode: Non-inlineable methods (bnode.c)\n
* if VINLINE_APRX is defined
* @return the number of blocks
* @param thee Pointer to the Bnode class
*/
# define Bnode_numB(thee) ((thee)->numB)
#endif
/**
* @ingroup Bnode
* @brief The Block node destructor.
* @author Michael Holst
* @note Class Bnode: Non-inlineable methods (bnode.c)
* @return Pointer to a bnode allocated memory location
* @param vmem Memory management object
* @param pnumB number of blocks
* @param pnumR number of rows
*/
VEXTERNC Bnode* Bnode_ctor(Vmem *vmem, int pnumB, int pnumR[MAXV]);
/**
* @ingroup Bnode
* @brief The Block node destructor.
* @author Michael Holst
* @note Class Bnode: Non-inlineable methods (bnode.c)
* @return None
* @param thee Pointer to a bnode allocated memory location
*/
VEXTERNC void Bnode_dtor(Bnode **thee);
/**
* @ingroup Bnode
* @brief Return the total number of nodes.
* @author Michael Holst
* @note Class Bnode: Non-inlineable methods (bnode.c)
* @return the total number of nodes
* @param thee Pointer to a bnode allocated memory location
*/
VEXTERNC int Bnode_numRT(Bnode *thee);
/**
* @ingroup Bnode
* @brief Return the number of nodes in a block.
* @author Michael Holst
* @note Class Bnode: Non-inlineable methods (bnode.c)
* @return the number of nodes in a block.
* @param thee Pointer to a bnode allocated memory location
* @param i index of blocks
*/
VEXTERNC int Bnode_numR(Bnode *thee, int i);
/**
* @ingroup Bnode
* @brief Return the nodes in one block.
* @author Michael Holst
* @note Class Bnode: Non-inlineable methods (bnode.c)
* @return the nodes in one block
* @param thee Pointer to a bnode allocated memory location
* @param i index of blocks
*/
VEXTERNC Node *Bnode_nodes(Bnode *thee, int i);
/**
* @ingroup Bnode
* @brief Return the actual nodes in one block.
* @author Michael Holst
* @note Class Bnode: Non-inlineable methods (bnode.c)
* @return the actual nodes in one block
* @param thee Pointer to a bnode allocated memory location
* @param i index of blocks
*/
VEXTERNC aNode *Bnode_data(Bnode *thee, int i);
/**
* @ingroup Bnode
* @brief Print the exact current malloc usage.
* @author Michael Holst
* @note Class Bnode: Non-inlineable methods (bnode.c)
* @return None
* @param thee Pointer to a bnode allocated memory location
*/
VEXTERNC void Bnode_memChk(Bnode *thee);
#endif /* _BNODE_H_ */
|