00001 /* 00002 // -*- mode: c++; c-basic-offset:4 -*- 00003 00004 // This file is part of libdap, A C++ implementation of the OPeNDAP Data 00005 // Access Protocol. 00006 00007 // Copyright (c) 2002,2003 OPeNDAP, Inc. 00008 // Author: James Gallagher <jgallagher@opendap.org> 00009 // 00010 // This library is free software; you can redistribute it and/or 00011 // modify it under the terms of the GNU Lesser General Public 00012 // License as published by the Free Software Foundation; either 00013 // version 2.1 of the License, or (at your option) any later version. 00014 // 00015 // This library is distributed in the hope that it will be useful, 00016 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00018 // Lesser General Public License for more details. 00019 // 00020 // You should have received a copy of the GNU Lesser General Public 00021 // License along with this library; if not, write to the Free Software 00022 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00023 // 00024 // You can contact OPeNDAP, Inc. at PO Box 112, Saunderstown, RI. 02874-0112. 00025 */ 00026 00027 /* 00028 This header defines macros which enable compile-time program 00029 instrumentation. These macros work for both C and C++. Enclose the entire 00030 statement to be debugged within the DBG() macro *and* put the semicolon 00031 after the macro. (e.g., DBG(cerr << "Bad program" << endl); ). Statements 00032 should not span lines unless they include `\'s to escape the newlines. 00033 00034 jhrg 10/13/94 00035 */ 00036 00037 #ifndef _debug_h 00038 #define _debug_h 00039 00040 #ifdef __cplusplus 00041 00042 #include <iostream> 00043 using std::cerr; 00044 using std::string; 00045 using std::endl; 00046 #define FILE_N_LINE cerr << __FILE__ << ": " << __LINE__ << ":" 00047 00048 #else 00049 00050 #define FILE_N_LINE fprintf(stderr, "%s:%d: ", __FILE__, __LINE__); 00051 00052 #endif /* cplusplus */ 00053 00054 #ifdef DODS_DEBUG 00055 #define DBG(x) FILE_N_LINE; x 00056 #define DBGN(x) x 00057 #else 00058 #define DBG(x) /* x */ 00059 #define DBGN(x) /* x */ 00060 #endif 00061 00064 #ifdef DODS_DEBUG1 00065 #define DBG1(x) FILE_N_LINE; x 00066 #else 00067 #define DBG1(x) /* x */ 00068 #endif 00069 00070 #ifdef DODS_DEBUG2 00071 #define DBG2(x) FILE_N_LINE; x 00072 #else 00073 #define DBG2(x) /* x */ 00074 #endif 00075 00076 #ifdef DODS_PERF 00077 #error "Deprecated macro!" 00078 #endif 00079 00080 #endif /* _debug_h */