Coverage Report

Created: 2026-09-14 06:53

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 <log4cxx/pattern/formattinginfo.h>
25
#include <vector>
26
27
#define DECLARE_LOG4CXX_PATTERN(cls) DECLARE_ABSTRACT_LOG4CXX_OBJECT(cls)
28
29
namespace LOG4CXX_NS
30
{
31
namespace pattern
32
{
33
34
typedef std::vector<LogString> OptionsList;
35
36
/**
37
38
   <p>PatternConverter is an abstract class that provides the
39
   formatting functionality that derived classes need.
40
41
   <p>Conversion specifiers in a conversion patterns are parsed to
42
   individual PatternConverters. Each of which is responsible for
43
   converting an object in a converter specific manner.
44
45
 */
46
class LOG4CXX_EXPORT PatternConverter : public virtual helpers::Object
47
{
48
  protected:
49
    LOG4CXX_DECLARE_PRIVATE_MEMBER_PTR(PatternConverterPrivate, m_priv)
50
    PatternConverter(LOG4CXX_PRIVATE_PTR(PatternConverterPrivate) priv);
51
52
    /**
53
     * Create a new pattern converter.  Use this constructor when you have a subclass
54
     * that does not have any private data.
55
     * @param name name for pattern converter.
56
     * @param style CSS style for formatted output.
57
     */
58
    PatternConverter(const LogString& name,
59
      const LogString& style);
60
61
    virtual ~PatternConverter();
62
63
  public:
64
        DECLARE_LOG4CXX_PATTERN(PatternConverter)
65
4.01k
        BEGIN_LOG4CXX_CAST_MAP()
66
4.01k
        LOG4CXX_CAST_ENTRY(PatternConverter)
67
4.01k
        END_LOG4CXX_CAST_MAP()
68
69
    /**
70
     * Formats an object into a string buffer.
71
     * @param obj holds the attributes, may not be null.
72
     * @param toAppendTo string buffer to which the formatted event will be appended.  May not be null.
73
     */
74
#if LOG4CXX_ABI_VERSION <= 15
75
    void format(const helpers::ObjectPtr& obj, LogString& toAppendTo) const;
76
    /**
77
    @deprecated The \c pool parameter is not used and will be removed in a future version.
78
    Implement this method for now, but plan to migrate to format() without a helpers::Pool parameter.
79
    */
80
    virtual void format(const helpers::ObjectPtr& obj,
81
      LogString& toAppendTo,
82
      helpers::Pool& p) const = 0;
83
#define LOG4CXX_FORMAT_OBJECT_FORMAL_PARAMETERS const helpers::ObjectPtr& obj, LogString& toAppendTo, helpers::Pool& p
84
#else
85
    virtual void format(const helpers::ObjectPtr& obj, LogString& toAppendTo) const = 0;
86
#define LOG4CXX_FORMAT_OBJECT_FORMAL_PARAMETERS const helpers::ObjectPtr& obj, LogString& toAppendTo
87
    /**
88
    @deprecated The \c pool parameter is not used and will be removed in a future version.
89
    */
90
    [[deprecated("Use format() without a Pool parameter instead")]]
91
    virtual void format(const helpers::ObjectPtr& obj, LogString& toAppendTo, helpers::Pool& p) const;
92
#endif
93
94
    /**
95
     * This method returns the name of the conversion pattern.
96
     *
97
     * The name can be useful to certain Layouts such as HTMLLayout.
98
     *
99
     * @return        the name of the conversion pattern
100
     */
101
    LogString getName() const;
102
103
    /**
104
     * This method returns the CSS style class that should be applied to
105
     * the LoggingEvent passed as parameter, which can be null.
106
     *
107
     * This information is currently used only by HTMLLayout.
108
     *
109
     * @param e null values are accepted
110
     * @return  the name of the conversion pattern
111
     */
112
    virtual LogString getStyleClass(const helpers::ObjectPtr& e) const;
113
114
        /**
115
         * Provides a minimum width, a maximum width and the alignment
116
         */
117
        const FormattingInfo& getFormattingInfo() const;
118
119
        /**
120
         * Use \c newValue for the minimum width, a maximum width and the alignment
121
         */
122
        void setFormattingInfo(const FormattingInfoPtr& newValue);
123
124
  protected:
125
    /**
126
    * Appends content in the locale code page to a LogString.
127
    * @param toAppendTo string to which content is appended.
128
    * @param src content.
129
    */
130
    static void append(LogString& toAppendTo, const std::string& src);
131
};
132
133
134
LOG4CXX_PTR_DEF(PatternConverter);
135
136
}
137
}
138
139
140
#endif