~ubuntu-branches/ubuntu/precise/kompozer/precise

« back to all changes in this revision

Viewing changes to mozilla/js/src/xpconnect/src/xpclog.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Anthony Yarusso
  • Date: 2007-08-27 01:11:03 UTC
  • Revision ID: james.westby@ubuntu.com-20070827011103-2jgf4s6532gqu2ka
Tags: upstream-0.7.10
ImportĀ upstreamĀ versionĀ 0.7.10

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 
2
 *
 
3
 * ***** BEGIN LICENSE BLOCK *****
 
4
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 
5
 *
 
6
 * The contents of this file are subject to the Mozilla Public License Version
 
7
 * 1.1 (the "License"); you may not use this file except in compliance with
 
8
 * the License. You may obtain a copy of the License at
 
9
 * http://www.mozilla.org/MPL/
 
10
 *
 
11
 * Software distributed under the License is distributed on an "AS IS" basis,
 
12
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 
13
 * for the specific language governing rights and limitations under the
 
14
 * License.
 
15
 *
 
16
 * The Original Code is Mozilla Communicator client code, released
 
17
 * March 31, 1998.
 
18
 *
 
19
 * The Initial Developer of the Original Code is
 
20
 * Netscape Communications Corporation.
 
21
 * Portions created by the Initial Developer are Copyright (C) 1998
 
22
 * the Initial Developer. All Rights Reserved.
 
23
 *
 
24
 * Contributor(s):
 
25
 *   John Bandhauer <jband@netscape.com> (original author)
 
26
 *
 
27
 * Alternatively, the contents of this file may be used under the terms of
 
28
 * either of the GNU General Public License Version 2 or later (the "GPL"),
 
29
 * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 
30
 * in which case the provisions of the GPL or the LGPL are applicable instead
 
31
 * of those above. If you wish to allow use of your version of this file only
 
32
 * under the terms of either the GPL or the LGPL, and not to allow others to
 
33
 * use your version of this file under the terms of the MPL, indicate your
 
34
 * decision by deleting the provisions above and replace them with the notice
 
35
 * and other provisions required by the GPL or the LGPL. If you do not delete
 
36
 * the provisions above, a recipient may use your version of this file under
 
37
 * the terms of any one of the MPL, the GPL or the LGPL.
 
38
 *
 
39
 * ***** END LICENSE BLOCK ***** */
 
40
 
 
41
/* Debug Logging support. */
 
42
 
 
43
#include "xpcprivate.h"
 
44
 
 
45
// this all only works for DEBUG...
 
46
#ifdef DEBUG
 
47
 
 
48
#define SPACE_COUNT     200
 
49
#define LINE_LEN        200
 
50
#define INDENT_FACTOR   2
 
51
 
 
52
#define CAN_RUN (g_InitState == 1 || (g_InitState == 0 && Init()))
 
53
 
 
54
static char*    g_Spaces;
 
55
static int      g_InitState = 0;
 
56
static int      g_Indent = 0;
 
57
static PRLogModuleInfo* g_LogMod = nsnull;
 
58
 
 
59
static PRBool Init()
 
60
{
 
61
    g_LogMod = PR_NewLogModule("xpclog");
 
62
    g_Spaces = new char[SPACE_COUNT+1];
 
63
    memset(g_Spaces, ' ', SPACE_COUNT);
 
64
    g_Spaces[SPACE_COUNT] = 0;
 
65
    if(!g_LogMod || !g_Spaces || !PR_LOG_TEST(g_LogMod,1))
 
66
    {
 
67
        g_InitState = 1;
 
68
        XPC_Log_Finish();
 
69
        return PR_FALSE;
 
70
    }
 
71
    g_InitState = 1;
 
72
    return PR_TRUE;
 
73
}
 
74
 
 
75
void
 
76
XPC_Log_Finish()
 
77
{
 
78
    if(g_InitState == 1)
 
79
    {
 
80
        delete g_Spaces;
 
81
        // we'd like to properly cleanup the LogModule, but nspr owns that
 
82
        g_LogMod = nsnull;
 
83
    }
 
84
    g_InitState = -1;
 
85
}
 
86
 
 
87
void
 
88
XPC_Log_print(const char *fmt, ...)
 
89
{
 
90
    va_list ap;
 
91
    char line[LINE_LEN];
 
92
 
 
93
    va_start(ap, fmt);
 
94
    PR_vsnprintf(line, sizeof(line)-1, fmt, ap);
 
95
    va_end(ap);
 
96
    if(g_Indent)
 
97
        PR_LogPrint("%s%s",g_Spaces+SPACE_COUNT-(INDENT_FACTOR*g_Indent),line);
 
98
    else
 
99
        PR_LogPrint("%s",line);
 
100
}
 
101
 
 
102
PRBool
 
103
XPC_Log_Check(int i)
 
104
{
 
105
    return CAN_RUN && PR_LOG_TEST(g_LogMod,1);
 
106
}
 
107
 
 
108
void
 
109
XPC_Log_Indent()
 
110
{
 
111
    if(INDENT_FACTOR*(++g_Indent) > SPACE_COUNT)
 
112
        g_Indent-- ;
 
113
}
 
114
 
 
115
void
 
116
XPC_Log_Outdent()
 
117
{
 
118
    if(--g_Indent < 0)
 
119
        g_Indent++;
 
120
}
 
121
 
 
122
void
 
123
XPC_Log_Clear_Indent()
 
124
{
 
125
    g_Indent = 0;
 
126
}
 
127
 
 
128
#endif