00001 /* 00002 * $Id: db_row.h 5362 2008-12-15 16:33:22Z henningw $ 00003 * 00004 * Copyright (C) 2001-2003 FhG Fokus 00005 * Copyright (C) 2007-2008 1&1 Internet AG 00006 * 00007 * This file is part of Kamailio, a free SIP server. 00008 * 00009 * Kamailio is free software; you can redistribute it and/or modify 00010 * it under the terms of the GNU General Public License as published by 00011 * the Free Software Foundation; either version 2 of the License, or 00012 * (at your option) any later version 00013 * 00014 * Kamailio is distributed in the hope that it will be useful, 00015 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00017 * GNU General Public License for more details. 00018 * 00019 * You should have received a copy of the GNU General Public License 00020 * along with this program; if not, write to the Free Software 00021 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00022 */ 00023 00024 /** 00025 * \file db/db_row.h 00026 * \brief Type that represents a row in a database. 00027 * 00028 * This file holds a type that represents a row in a database, some convenience 00029 * macros and a function for memory managements. 00030 * \ingroup db 00031 */ 00032 00033 00034 #ifndef DB_ROW_H 00035 #define DB_ROW_H 00036 00037 #include "db_val.h" 00038 #include "db_res.h" 00039 00040 00041 /** 00042 * Structure holding the result of a query table function. 00043 * It represents one row in a database table. In other words, the row is an 00044 * array of db_val_t variables, where each db_val_t variable represents exactly 00045 * one cell in the table. 00046 */ 00047 typedef struct db_row { 00048 db_val_t* values; /**< Columns in the row */ 00049 int n; /**< Number of columns in the row */ 00050 } db_row_t; 00051 00052 /** Return the columns in the row */ 00053 #define ROW_VALUES(rw) ((rw)->values) 00054 /** Return the number of colums */ 00055 #define ROW_N(rw) ((rw)->n) 00056 00057 /** 00058 * Release memory used by a row. This method only frees values that are inside 00059 * the row if the free flag of the specific value is set. Otherwise this 00060 * storage must be released when the database specific result free function is 00061 * called. Only string based values are freed if wanted, null values are skipped. 00062 * \param _r row that should be released 00063 * \return zero on success, negative on error 00064 */ 00065 inline int db_free_row(db_row_t* _r); 00066 00067 00068 /** 00069 * Allocate memory for row value. 00070 * \param _res result set 00071 * \param _row filled row 00072 * \return zero on success, negative on errors 00073 */ 00074 inline int db_allocate_row(const db_res_t* _res, db_row_t* _row); 00075 00076 #endif /* DB_ROW_H */
1.5.6