Coverage Report

Created: 2026-01-10 07:03

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/logging-log4cxx/src/main/include/log4cxx/pattern/patternconverter.h
Line
Count
Source
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_PATTERN_PATTERN_CONVERTER_H
19
#define _LOG4CXX_PATTERN_PATTERN_CONVERTER_H
20
21
22
#include <log4cxx/helpers/object.h>
23
#include <log4cxx/logstring.h>
24
#include <vector>
25
26
#define DECLARE_LOG4CXX_PATTERN(cls) DECLARE_ABSTRACT_LOG4CXX_OBJECT(cls)
27
28
namespace LOG4CXX_NS
29
{
30
namespace pattern
31
{
32
33
typedef std::vector<LogString> OptionsList;
34
35
/**
36
37
   <p>PatternConverter is an abstract class that provides the
38
   formatting functionality that derived classes need.
39
40
   <p>Conversion specifiers in a conversion patterns are parsed to
41
   individual PatternConverters. Each of which is responsible for
42
   converting an object in a converter specific manner.
43
44
 */
45
class LOG4CXX_EXPORT PatternConverter : public virtual helpers::Object
46
{
47
  protected:
48
    LOG4CXX_DECLARE_PRIVATE_MEMBER_PTR(PatternConverterPrivate, m_priv)
49
    PatternConverter(LOG4CXX_PRIVATE_PTR(PatternConverterPrivate) priv);
50
51
    /**
52
     * Create a new pattern converter.  Use this constructor when you have a subclass
53
     * that does not have any private data.
54
     * @param name name for pattern converter.
55
     * @param style CSS style for formatted output.
56
     */
57
    PatternConverter(const LogString& name,
58
      const LogString& style);
59
60
    virtual ~PatternConverter();
61
62
  public:
63
        DECLARE_LOG4CXX_PATTERN(PatternConverter)
64
1.86k
        BEGIN_LOG4CXX_CAST_MAP()
65
1.86k
        LOG4CXX_CAST_ENTRY(PatternConverter)
66
1.86k
        END_LOG4CXX_CAST_MAP()
67
68
    /**
69
     * Formats an object into a string buffer.
70
     * @param obj event to format, may not be null.
71
     * @param toAppendTo string buffer to which the formatted event will be appended.  May not be null.
72
     * @param p pool for any allocations necessary during formatting.
73
     */
74
    virtual void format(const helpers::ObjectPtr& obj,
75
      LogString& toAppendTo,
76
      helpers::Pool& p) const = 0;
77
78
    /**
79
     * This method returns the name of the conversion pattern.
80
     *
81
     * The name can be useful to certain Layouts such as HTMLLayout.
82
     *
83
     * @return        the name of the conversion pattern
84
     */
85
    LogString getName() const;
86
87
    /**
88
     * This method returns the CSS style class that should be applied to
89
     * the LoggingEvent passed as parameter, which can be null.
90
     *
91
     * This information is currently used only by HTMLLayout.
92
     *
93
     * @param e null values are accepted
94
     * @return  the name of the conversion pattern
95
     */
96
    virtual LogString getStyleClass(const helpers::ObjectPtr& e) const;
97
98
  protected:
99
    /**
100
    * Appends content in the locale code page to a LogString.
101
    * @param toAppendTo string to which content is appended.
102
    * @param src content.
103
    */
104
    static void append(LogString& toAppendTo, const std::string& src);
105
};
106
107
108
LOG4CXX_PTR_DEF(PatternConverter);
109
110
}
111
}
112
113
114
#endif