Coverage Report

Created: 2025-08-29 06:29

/src/logging-log4cxx/src/main/include/log4cxx/helpers/inputstreamreader.h
Line
Count
Source (jump to first uncovered line)
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_HELPERS_INPUTSTREAMREADER_H
19
#define _LOG4CXX_HELPERS_INPUTSTREAMREADER_H
20
21
#include <log4cxx/helpers/reader.h>
22
#include <log4cxx/helpers/inputstream.h>
23
#include <log4cxx/helpers/charsetdecoder.h>
24
25
// Instantiate template pointer types passed as parameters
26
LOG4CXX_INSTANTIATE_EXPORTED_PTR(LOG4CXX_NS::helpers::InputStream);
27
LOG4CXX_INSTANTIATE_EXPORTED_PTR(LOG4CXX_NS::helpers::CharsetDecoder);
28
29
namespace LOG4CXX_NS
30
{
31
32
namespace helpers
33
{
34
35
/**
36
 * Class for reading from character streams.
37
 * Decorates a byte based InputStream and provides appropriate
38
 * conversion to characters.
39
 */
40
class LOG4CXX_EXPORT InputStreamReader : public Reader
41
{
42
  private:
43
    LOG4CXX_DECLARE_PRIVATE_MEMBER_PTR(InputStreamReaderPrivate, m_priv)
44
45
  public:
46
    DECLARE_ABSTRACT_LOG4CXX_OBJECT(InputStreamReader)
47
0
    BEGIN_LOG4CXX_CAST_MAP()
48
0
    LOG4CXX_CAST_ENTRY(InputStreamReader)
49
0
    LOG4CXX_CAST_ENTRY_CHAIN(Reader)
50
0
    END_LOG4CXX_CAST_MAP()
51
52
    /**
53
     * Creates an InputStreamReader that uses the default charset.
54
     *
55
     * @param in The input stream to decorate.
56
     */
57
    InputStreamReader(const InputStreamPtr& in);
58
59
    /**
60
     * Creates an InputStreamReader that uses the given charset decoder.
61
     *
62
     * @param in The input stream to decorate.
63
     * @param enc The charset decoder to use for the conversion.
64
     */
65
    InputStreamReader(const InputStreamPtr& in, const CharsetDecoderPtr& enc);
66
67
    ~InputStreamReader();
68
69
    /**
70
     * Closes the stream.
71
     *
72
     * @param p The memory pool associated with the reader.
73
     */
74
    void close(Pool& p) override;
75
76
    /**
77
     * @return The complete stream contents as a LogString.
78
     * @param p The memory pool associated with the reader.
79
     */
80
    LogString read(Pool& p) override;
81
82
    /**
83
     * @return The name of the character encoding being used by this stream.
84
     */
85
    LogString getEncoding() const;
86
87
  private:
88
    InputStreamReader(const InputStreamReader&);
89
90
    InputStreamReader& operator=(const InputStreamReader&);
91
};
92
93
LOG4CXX_PTR_DEF(InputStreamReader);
94
} // namespace helpers
95
96
}  //namespace log4cxx
97
98
#endif //_LOG4CXX_HELPERS_INPUTSTREAMREADER_H