1 /* 2 * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 #ifndef _Included_Trace 27 #define _Included_Trace 28 29 #include <jni.h> 30 #include "debug_trace.h" 31 32 #ifdef __cplusplus 33 extern "C" { 34 #endif /* __cplusplus */ 35 36 /** 37 * J2dTrace 38 * Trace utility used throughout Java 2D code. Uses a "level" 39 * parameter that allows user to specify how much detail 40 * they want traced at runtime. Tracing is only enabled 41 * in debug mode, to avoid overhead running release build. 42 */ 43 44 #define J2D_TRACE_INVALID -1 45 #define J2D_TRACE_OFF 0 46 #define J2D_TRACE_ERROR 1 47 #define J2D_TRACE_WARNING 2 48 #define J2D_TRACE_INFO 3 49 #define J2D_TRACE_VERBOSE 4 50 #define J2D_TRACE_VERBOSE2 5 51 #define J2D_TRACE_MAX (J2D_TRACE_VERBOSE2+1) 52 53 JNIEXPORT void JNICALL 54 J2dTraceImpl(int level, jboolean cr, const char *string, ...); 55 JNIEXPORT void JNICALL 56 J2dTraceInit(); 57 58 #ifndef DEBUG 59 #define J2dTrace(level, string) 60 #define J2dTrace1(level, string, arg1) 61 #define J2dTrace2(level, string, arg1, arg2) 62 #define J2dTrace3(level, string, arg1, arg2, arg3) 63 #define J2dTrace4(level, string, arg1, arg2, arg3, arg4) 64 #define J2dTrace5(level, string, arg1, arg2, arg3, arg4, arg5) 65 #define J2dTrace6(level, string, arg1, arg2, arg3, arg4, arg5, arg6) 66 #define J2dTrace7(level, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7) 67 #define J2dTrace8(level, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) 68 #define J2dTraceLn(level, string) 69 #define J2dTraceLn1(level, string, arg1) 70 #define J2dTraceLn2(level, string, arg1, arg2) 71 #define J2dTraceLn3(level, string, arg1, arg2, arg3) 72 #define J2dTraceLn4(level, string, arg1, arg2, arg3, arg4) 73 #define J2dTraceLn5(level, string, arg1, arg2, arg3, arg4, arg5) 74 #define J2dTraceLn6(level, string, arg1, arg2, arg3, arg4, arg5, arg6) 75 #define J2dTraceLn7(level, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7) 76 #define J2dTraceLn8(level, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) 77 #else /* DEBUG */ 78 #define J2dTrace(level, string) { \ 79 J2dTraceImpl(level, JNI_FALSE, string); \ 80 } 81 #define J2dTrace1(level, string, arg1) { \ 82 J2dTraceImpl(level, JNI_FALSE, string, arg1); \ 83 } 84 #define J2dTrace2(level, string, arg1, arg2) { \ 85 J2dTraceImpl(level, JNI_FALSE, string, arg1, arg2); \ 86 } 87 #define J2dTrace3(level, string, arg1, arg2, arg3) { \ 88 J2dTraceImpl(level, JNI_FALSE, string, arg1, arg2, arg3); \ 89 } 90 #define J2dTrace4(level, string, arg1, arg2, arg3, arg4) { \ 91 J2dTraceImpl(level, JNI_FALSE, string, arg1, arg2, arg3, arg4); \ 92 } 93 #define J2dTrace5(level, string, arg1, arg2, arg3, arg4, arg5) { \ 94 J2dTraceImpl(level, JNI_FALSE, string, arg1, arg2, arg3, arg4, arg5); \ 95 } 96 #define J2dTrace6(level, string, arg1, arg2, arg3, arg4, arg5, arg6) { \ 97 J2dTraceImpl(level, JNI_FALSE, string, arg1, arg2, arg3, arg4, arg5, arg6); \ 98 } 99 #define J2dTrace7(level, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7) { \ 100 J2dTraceImpl(level, JNI_FALSE, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7); \ 101 } 102 #define J2dTrace8(level, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) { \ 103 J2dTraceImpl(level, JNI_FALSE, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); \ 104 } 105 #define J2dTraceLn(level, string) { \ 106 J2dTraceImpl(level, JNI_TRUE, string); \ 107 } 108 #define J2dTraceLn1(level, string, arg1) { \ 109 J2dTraceImpl(level, JNI_TRUE, string, arg1); \ 110 } 111 #define J2dTraceLn2(level, string, arg1, arg2) { \ 112 J2dTraceImpl(level, JNI_TRUE, string, arg1, arg2); \ 113 } 114 #define J2dTraceLn3(level, string, arg1, arg2, arg3) { \ 115 J2dTraceImpl(level, JNI_TRUE, string, arg1, arg2, arg3); \ 116 } 117 #define J2dTraceLn4(level, string, arg1, arg2, arg3, arg4) { \ 118 J2dTraceImpl(level, JNI_TRUE, string, arg1, arg2, arg3, arg4); \ 119 } 120 #define J2dTraceLn5(level, string, arg1, arg2, arg3, arg4, arg5) { \ 121 J2dTraceImpl(level, JNI_TRUE, string, arg1, arg2, arg3, arg4, arg5); \ 122 } 123 #define J2dTraceLn6(level, string, arg1, arg2, arg3, arg4, arg5, arg6) { \ 124 J2dTraceImpl(level, JNI_TRUE, string, arg1, arg2, arg3, arg4, arg5, arg6); \ 125 } 126 #define J2dTraceLn7(level, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7) { \ 127 J2dTraceImpl(level, JNI_TRUE, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7); \ 128 } 129 #define J2dTraceLn8(level, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) { \ 130 J2dTraceImpl(level, JNI_TRUE, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); \ 131 } 132 #endif /* DEBUG */ 133 134 135 /** 136 * NOTE: Use the following RlsTrace calls very carefully; they are compiled 137 * into the code and should thus not be put in any performance-sensitive 138 * areas. 139 */ 140 141 #define J2dRlsTrace(level, string) { \ 142 J2dTraceImpl(level, JNI_FALSE, string); \ 143 } 144 #define J2dRlsTrace1(level, string, arg1) { \ 145 J2dTraceImpl(level, JNI_FALSE, string, arg1); \ 146 } 147 #define J2dRlsTrace2(level, string, arg1, arg2) { \ 148 J2dTraceImpl(level, JNI_FALSE, string, arg1, arg2); \ 149 } 150 #define J2dRlsTrace3(level, string, arg1, arg2, arg3) { \ 151 J2dTraceImpl(level, JNI_FALSE, string, arg1, arg2, arg3); \ 152 } 153 #define J2dRlsTrace4(level, string, arg1, arg2, arg3, arg4) { \ 154 J2dTraceImpl(level, JNI_FALSE, string, arg1, arg2, arg3, arg4); \ 155 } 156 #define J2dRlsTrace5(level, string, arg1, arg2, arg3, arg4, arg5) { \ 157 J2dTraceImpl(level, JNI_FALSE, string, arg1, arg2, arg3, arg4, arg5); \ 158 } 159 #define J2dRlsTraceLn(level, string) { \ 160 J2dTraceImpl(level, JNI_TRUE, string); \ 161 } 162 #define J2dRlsTraceLn1(level, string, arg1) { \ 163 J2dTraceImpl(level, JNI_TRUE, string, arg1); \ 164 } 165 #define J2dRlsTraceLn2(level, string, arg1, arg2) { \ 166 J2dTraceImpl(level, JNI_TRUE, string, arg1, arg2); \ 167 } 168 #define J2dRlsTraceLn3(level, string, arg1, arg2, arg3) { \ 169 J2dTraceImpl(level, JNI_TRUE, string, arg1, arg2, arg3); \ 170 } 171 #define J2dRlsTraceLn4(level, string, arg1, arg2, arg3, arg4) { \ 172 J2dTraceImpl(level, JNI_TRUE, string, arg1, arg2, arg3, arg4); \ 173 } 174 #define J2dRlsTraceLn5(level, string, arg1, arg2, arg3, arg4, arg5) { \ 175 J2dTraceImpl(level, JNI_TRUE, string, arg1, arg2, arg3, arg4, arg5); \ 176 } 177 178 #ifdef __cplusplus 179 }; 180 #endif /* __cplusplus */ 181 182 #endif /* _Included_Trace */