• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

daisytuner / sdfglib / 17656823807

11 Sep 2025 08:42PM UTC coverage: 60.447% (+1.1%) from 59.335%
17656823807

Pull #219

github

web-flow
Merge d5416236f into 6c1992b40
Pull Request #219: stdlib Library Nodes and ConstantNodes

460 of 1635 new or added lines in 81 files covered. (28.13%)

93 existing lines in 35 files now uncovered.

9385 of 15526 relevant lines covered (60.45%)

107.21 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/data_flow/library_nodes/stdlib/memset.cpp
1
#include "sdfg/data_flow/library_nodes/stdlib/memset.h"
2

3
namespace sdfg {
4
namespace stdlib {
5

NEW
6
MemsetNode::MemsetNode(
×
7
    size_t element_id,
8
    const DebugInfo& debug_info,
9
    const graph::Vertex vertex,
10
    data_flow::DataFlowGraph& parent,
11
    const symbolic::Expression& value,
12
    const symbolic::Expression& num
13
)
NEW
14
    : LibraryNode(
×
NEW
15
          element_id,
×
NEW
16
          debug_info,
×
NEW
17
          vertex,
×
NEW
18
          parent,
×
19
          LibraryNodeType_Memset,
NEW
20
          {"_ptr"},
×
NEW
21
          {},
×
22
          true,
23
          data_flow::ImplementationType_NONE
24
      ),
NEW
25
      num_(num), value_(value) {}
×
26

NEW
27
const symbolic::Expression& MemsetNode::value() const { return value_; }
×
28

NEW
29
const symbolic::Expression& MemsetNode::num() const { return num_; }
×
30

NEW
31
void MemsetNode::validate(const Function& function) const {}
×
32

NEW
33
symbolic::SymbolSet MemsetNode::symbols() const {
×
NEW
34
    auto value_symbols = symbolic::atoms(this->value_);
×
NEW
35
    auto num_symbols = symbolic::atoms(this->num_);
×
NEW
36
    num_symbols.insert(value_symbols.begin(), value_symbols.end());
×
NEW
37
    return num_symbols;
×
NEW
38
}
×
39

40
std::unique_ptr<data_flow::DataFlowNode> MemsetNode::
NEW
41
    clone(size_t element_id, const graph::Vertex vertex, data_flow::DataFlowGraph& parent) const {
×
NEW
42
    return std::make_unique<MemsetNode>(element_id, debug_info_, vertex, parent, value_, num_);
×
43
}
44

NEW
45
void MemsetNode::replace(const symbolic::Expression& old_expression, const symbolic::Expression& new_expression) {
×
NEW
46
    this->value_ = symbolic::subs(this->value_, old_expression, new_expression);
×
NEW
47
    this->num_ = symbolic::subs(this->num_, old_expression, new_expression);
×
NEW
48
}
×
49

NEW
50
nlohmann::json MemsetNodeSerializer::serialize(const data_flow::LibraryNode& library_node) {
×
NEW
51
    const MemsetNode& node = static_cast<const MemsetNode&>(library_node);
×
52

NEW
53
    nlohmann::json j;
×
NEW
54
    j["code"] = node.code().value();
×
55

NEW
56
    sdfg::serializer::JSONSerializer serializer;
×
NEW
57
    j["value"] = serializer.expression(node.value());
×
NEW
58
    j["num"] = serializer.expression(node.num());
×
59

NEW
60
    return j;
×
NEW
61
}
×
62

NEW
63
data_flow::LibraryNode& MemsetNodeSerializer::deserialize(
×
64
    const nlohmann::json& j, builder::StructuredSDFGBuilder& builder, structured_control_flow::Block& parent
65
) {
NEW
66
    assert(j.contains("code"));
×
NEW
67
    assert(j.contains("debug_info"));
×
NEW
68
    assert(j.contains("value"));
×
NEW
69
    assert(j.contains("num"));
×
70

NEW
71
    auto code = j["code"].get<std::string>();
×
NEW
72
    if (code != LibraryNodeType_Memset.value()) {
×
NEW
73
        throw InvalidSDFGException("Invalid library node code");
×
74
    }
75

76
    // Extract debug info using JSONSerializer
NEW
77
    sdfg::serializer::JSONSerializer serializer;
×
NEW
78
    DebugInfo debug_info = serializer.json_to_debug_info(j["debug_info"]);
×
79

80
    // Extract properties
NEW
81
    SymEngine::Expression value(j.at("value"));
×
NEW
82
    SymEngine::Expression num(j.at("num"));
×
83

NEW
84
    return builder.add_library_node<MemsetNode>(parent, debug_info, value, num);
×
NEW
85
}
×
86

NEW
87
MemsetNodeDispatcher::MemsetNodeDispatcher(
×
88
    codegen::LanguageExtension& language_extension,
89
    const Function& function,
90
    const data_flow::DataFlowGraph& data_flow_graph,
91
    const MemsetNode& node
92
)
NEW
93
    : codegen::LibraryNodeDispatcher(language_extension, function, data_flow_graph, node) {}
×
94

NEW
95
void MemsetNodeDispatcher::dispatch_code(
×
96
    codegen::PrettyPrinter& stream,
97
    codegen::PrettyPrinter& globals_stream,
98
    codegen::CodeSnippetFactory& library_snippet_factory
99
) {
NEW
100
    auto& node = static_cast<const MemsetNode&>(node_);
×
101

NEW
102
    stream << "memset(" << node.outputs().at(0) << ", " << language_extension_.expression(node.value()) << ", "
×
NEW
103
           << language_extension_.expression(node.num()) << ")" << ";";
×
NEW
104
    stream << std::endl;
×
NEW
105
}
×
106

107
} // namespace stdlib
108
} // namespace sdfg
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc