Coverage Report

Created: 2021-08-22 09:07

/src/skia/src/sksl/SkSLStringStream.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * Copyright 2017 Google Inc.
3
 *
4
 * Use of this source code is governed by a BSD-style license that can be
5
 * found in the LICENSE file.
6
 */
7
8
#ifndef SKSL_STRINGSTREAM
9
#define SKSL_STRINGSTREAM
10
11
#include "include/private/SkSLString.h"
12
#include "src/sksl/SkSLOutputStream.h"
13
14
#ifdef SKSL_STANDALONE
15
16
namespace SkSL {
17
18
class StringStream : public OutputStream {
19
public:
20
    void write8(uint8_t b) override {
21
        fBuffer += (char) b;
22
    }
23
24
    void writeText(const char* s) override {
25
        fBuffer += s;
26
    }
27
28
    void write(const void* s, size_t size) override {
29
        fBuffer.append((const char*) s, size);
30
    }
31
32
    size_t bytesWritten() const {
33
        return fBuffer.size();
34
    }
35
36
    const String& str() const {
37
        return fBuffer;
38
    }
39
40
    void reset() {
41
        fBuffer = "";
42
    }
43
44
private:
45
    String fBuffer;
46
};
47
48
#else
49
50
#include "include/core/SkData.h"
51
#include "include/core/SkStream.h"
52
53
namespace SkSL {
54
55
class StringStream : public OutputStream {
56
public:
57
20.5k
    void write8(uint8_t b) override {
58
20.5k
        fStream.write8(b);
59
20.5k
    }
60
61
1.30M
    void writeText(const char* s) override {
62
1.30M
        fStream.writeText(s);
63
1.30M
    }
64
65
2.15M
    void write(const void* s, size_t size) override {
66
2.15M
        fStream.write(s, size);
67
2.15M
    }
68
69
0
    size_t bytesWritten() const {
70
0
        return fStream.bytesWritten();
71
0
    }
72
73
136k
    const String& str() const {
74
136k
        if (!fString.size()) {
75
114k
            sk_sp<SkData> data = fStream.detachAsData();
76
114k
            fString = String((const char*) data->data(), data->size());
77
114k
        }
78
136k
        return fString;
79
136k
    }
80
81
2.12k
    void reset() {
82
2.12k
        fStream.reset();
83
2.12k
        fString = "";
84
2.12k
    }
85
86
private:
87
    mutable SkDynamicMemoryWStream fStream;
88
    mutable String fString;
89
};
90
91
#endif // SKSL_STANDALONE
92
93
}  // namespace SkSL
94
95
#endif