Apache Log4cxx
Version 1.7.0
Toggle main menu visibility
Loading...
Searching...
No Matches
locationinfo.h
Go to the documentation of this file.
1
/*
2
* Licensed to the Apache Software Foundation (ASF) under one or more
3
* contributor license agreements. See the NOTICE file distributed with
4
* this work for additional information regarding copyright ownership.
5
* The ASF licenses this file to You under the Apache License, Version 2.0
6
* (the "License"); you may not use this file except in compliance with
7
* the License. You may obtain a copy of the License at
8
*
9
* http://www.apache.org/licenses/LICENSE-2.0
10
*
11
* Unless required by applicable law or agreed to in writing, software
12
* distributed under the License is distributed on an "AS IS" BASIS,
13
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
* See the License for the specific language governing permissions and
15
* limitations under the License.
16
*/
17
18
#ifndef _LOG4CXX_SPI_LOCATION_LOCATIONINFO_H
19
#define _LOG4CXX_SPI_LOCATION_LOCATIONINFO_H
20
21
#include <log4cxx/log4cxx.h>
22
#include <string>
23
#include <string.h>
24
25
#if defined(_MSC_VER)
26
#define LOG4CXX_SHORT_FILENAME_SPLIT_CHAR '\\'
27
#else
28
#define LOG4CXX_SHORT_FILENAME_SPLIT_CHAR '/'
29
#endif
30
31
namespace
LOG4CXX_NS
32
{
33
namespace
spi
34
{
39
class
LOG4CXX_EXPORT
LocationInfo
40
{
41
public
:
42
47
static
const
char
*
const
NA
;
48
static
const
char
*
const
NA_METHOD
;
49
50
static
const
LocationInfo
&
getLocationUnavailable
();
51
57
#if 201304L <= __cpp_constexpr
58
static
constexpr
const
char
*
calcShortFileName
(
const
char
* fileName){
59
#else
60
static
const
char
*
calcShortFileName
(
const
char
* fileName){
61
#endif
62
if
(fileName ==
nullptr
)
return
nullptr
;
63
#if defined(_MSC_VER)
64
// As at 2024, the MSVC optimizer does not inline a function that calls another function
65
const
char
* location =
nullptr
;
66
for
(
auto
p = fileName; *p; ++p)
67
if
(*p ==
LOG4CXX_SHORT_FILENAME_SPLIT_CHAR
)
68
location = p;
69
#else
70
const
char
* location = strrchr(fileName,
LOG4CXX_SHORT_FILENAME_SPLIT_CHAR
);
71
#endif
72
return
location ==
nullptr
? fileName : location + 1;
73
}
74
80
LocationInfo
(
const
char
*
const
fileName,
81
const
char
*
const
shortFileName,
82
const
char
*
const
functionName,
83
int
lineNumber);
84
88
LocationInfo
();
89
94
LocationInfo
(
const
LocationInfo
& src );
95
100
LocationInfo
& operator = (
const
LocationInfo
& src );
101
105
void
clear
();
106
107
109
const
std::string
getClassName
()
const
;
110
115
const
char
*
getFileName
()
const
;
116
122
const
char
*
getShortFileName
()
const
;
123
128
int
getLineNumber
()
const
;
129
131
const
std::string
getMethodName
()
const
;
132
133
134
private
:
136
int
lineNumber;
137
139
const
char
* fileName;
140
142
const
char
* shortFileName;
143
145
const
char
* methodName;
146
147
148
};
149
}
150
}
151
152
#if !defined(LOG4CXX_LOCATION) && !LOG4CXX_DISABLE_LOCATION_INFO
153
#if defined(_MSC_VER)
154
#if _MSC_VER >= 1300
155
#define __LOG4CXX_FUNC__ __FUNCSIG__
156
#endif
157
#else
158
#if defined(__GNUC__)
159
#define __LOG4CXX_FUNC__ __PRETTY_FUNCTION__
160
#else
161
#if defined(__BORLANDC__)
162
#define __LOG4CXX_FUNC__ __FUNC__
163
#endif
164
#endif
165
#endif
166
#if !defined(__LOG4CXX_FUNC__)
167
#define __LOG4CXX_FUNC__ nullptr
168
#endif
169
170
171
#define LOG4CXX_LOCATION ::LOG4CXX_NS::spi::LocationInfo(__FILE__, \
172
::LOG4CXX_NS::spi::LocationInfo::calcShortFileName(__FILE__), \
173
__LOG4CXX_FUNC__, \
174
__LINE__)
175
176
#else
177
#define LOG4CXX_LOCATION ::LOG4CXX_NS::spi::LocationInfo::getLocationUnavailable()
178
#endif
// LOG4CXX_LOCATION
179
180
#endif
//_LOG4CXX_SPI_LOCATION_LOCATIONINFO_H
log4cxx::spi::LocationInfo::LocationInfo
LocationInfo(const LocationInfo &src)
Copy constructor.
log4cxx::spi::LocationInfo::clear
void clear()
Resets location info to default state.
log4cxx::spi::LocationInfo::calcShortFileName
static const char * calcShortFileName(const char *fileName)
The part of fileName after the path.
Definition
locationinfo.h:60
log4cxx::spi::LocationInfo::getClassName
const std::string getClassName() const
Return the class name of the call site.
log4cxx::spi::LocationInfo::LocationInfo
LocationInfo()
Default constructor.
log4cxx::spi::LocationInfo::LocationInfo
LocationInfo(const char *const fileName, const char *const shortFileName, const char *const functionName, int lineNumber)
Constructor.
log4cxx::spi::LocationInfo::getShortFileName
const char * getShortFileName() const
Return the short file name of the caller.
log4cxx::spi::LocationInfo::getMethodName
const std::string getMethodName() const
Returns the method name of the caller.
log4cxx::spi::LocationInfo::NA_METHOD
static const char *const NA_METHOD
Definition
locationinfo.h:48
log4cxx::spi::LocationInfo::getLocationUnavailable
static const LocationInfo & getLocationUnavailable()
log4cxx::spi::LocationInfo::getFileName
const char * getFileName() const
Return the file name of the caller.
log4cxx::spi::LocationInfo::getLineNumber
int getLineNumber() const
Returns the line number of the caller.
log4cxx::spi::LocationInfo::NA
static const char *const NA
When location information is not available the constant NA is returned.
Definition
locationinfo.h:47
LOG4CXX_SHORT_FILENAME_SPLIT_CHAR
#define LOG4CXX_SHORT_FILENAME_SPLIT_CHAR
Definition
locationinfo.h:28
src
main
include
log4cxx
spi
location
locationinfo.h
Generated by
1.17.0 on
SITE_PUBLISHED_DATE
Copyright © 2017-2026
Apache Software Foundation
. Apache, Chainsaw, log4cxx, Log4j, Log4net, log4php and the Apache logo are
trademarks or registered trademarks
of The Apache Software Foundation.
Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.
Privacy Policy
.