Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

output.h

Go to the documentation of this file.
00001 /*
00002 Copyright (c) 2001, John Lambert jlambert@jlambert.com
00003 All rights reserved.
00004 
00005 Redistribution and use in source and binary forms, with or without modification, are 
00006 permitted provided that the following conditions are met:
00007 
00008 Redistributions of source code must retain the above copyright notice, this list of 
00009 conditions and the following disclaimer.
00010 
00011 Redistributions in binary form must reproduce the above copyright notice, this list
00012 of conditions and the following disclaimer in the documentation and/or other
00013 materials provided with the distribution. 
00014 
00015 Neither the name of the xdProf project nor the names of its contributors may be used
00016 to endorse or promote products derived from this software without specific prior 
00017 written permission. 
00018 
00019 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
00020 EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
00021 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
00022 SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
00023 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
00024 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 
00025 BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
00026 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
00027 WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00028 */
00029 /*
00030 $Header: /xdprof-dll/output.h 5     5/07/01 12:03a Admin $ 
00031  */
00032 #ifndef _OUTPUT_H_
00033 #define _OUTPUT_H_
00034 
00035 #if _MSC_VER > 1000
00036 #pragma once
00037 #endif // _MSC_VER > 1000
00038 
00039 #include "monitors.h"
00040 
00041 #ifdef NDEBUG
00042 #define LeaveRelease    return;
00043 //efine debug           if(false) Debug
00044 #define debug           ((void)0)   
00045 #define unsafe_debug    ((void)0)   
00046 //efine unsafe_debug    if(false) UnsafeDebug
00047 
00048 #pragma warning(disable: 4127)
00049 #pragma warning(disable: 4702)  // unreachable code
00050 
00051 #else
00052 #define debug           Debug
00053 #define unsafe_debug    UnsafeDebug
00054 #define LeaveRelease    ((void)0)
00055 
00057 extern ofstream traceOut;
00058 
00059 #endif
00060 
00061 template <class T>
00062 void Debug(const T& t)
00063 {
00064     LeaveRelease;
00065     Lock(output_lock);
00066     traceOut << t << endl;
00067     Unlock(output_lock);
00068 }
00069 
00070 template <class T1, class T2>
00071 void Debug(const T1& t1, const T2& t2)
00072 {
00073     LeaveRelease;
00074     Lock(output_lock);
00075     traceOut << t1 << "\t" << t2 << endl;
00076     Unlock(output_lock);
00077 }
00078 
00079 template <class T1, class T2>
00080 void UnsafeDebug(const T1& t1, const T2& t2)
00081 {
00082     LeaveRelease;
00083     traceOut << t1 << "\t" << t2 << endl;
00084 }
00085 
00086 template <class T1, class T2, class T3>
00087 void UnsafeDebug(const T1& t1, const T2& t2, const T3& t3)
00088 {
00089     LeaveRelease;
00090     traceOut << t1 << "\t" << t2 << "\t" << t3 << endl;
00091 }
00092 
00093 template <class T1, class T2, class T3>
00094 void Debug(const T1& t1, const T2& t2, const T3& t3)
00095 {
00096     LeaveRelease;
00097     Lock(output_lock);
00098     traceOut << t1 << "\t" << t2 << "\t" << t3 << endl;
00099     Unlock(output_lock);
00100 }
00101 
00102 
00103 template <class T1, class T2, class T3, class T4>
00104 void Debug(const T1& t1, const T2& t2, const T3& t3, const T4& t4)
00105 {
00106     LeaveRelease;
00107     Lock(output_lock);
00108     traceOut << t1 << "\t" << t2 << "\t" << t3 << "\t" << t4 << endl;
00109     Unlock(output_lock);
00110 }
00111 #endif // _OUTPUT_H_

Generated at Sun Jun 24 20:57:15 2001 for xdprof by doxygen1.2.8.1 written by Dimitri van Heesch, © 1997-2001