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

daisytuner / sdfglib / 17651658650

11 Sep 2025 04:58PM UTC coverage: 61.012% (+1.3%) from 59.755%
17651658650

Pull #219

github

web-flow
Merge 742a12367 into f744ac9f5
Pull Request #219: stdlib Library Nodes and ConstantNodes

499 of 1681 new or added lines in 81 files covered. (29.68%)

95 existing lines in 36 files now uncovered.

9718 of 15928 relevant lines covered (61.01%)

108.0 hits per line

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

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

3
namespace sdfg {
4
namespace stdlib {
5

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

NEW
27
const symbolic::Expression& CallocNode::num() const { return num_; }
×
28

NEW
29
const symbolic::Expression& CallocNode::size() const { return size_; }
×
30

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

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

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

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

NEW
50
nlohmann::json CallocNodeSerializer::serialize(const data_flow::LibraryNode& library_node) {
×
NEW
51
    const CallocNode& node = static_cast<const CallocNode&>(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["size"] = serializer.expression(node.size());
×
NEW
58
    j["num"] = serializer.expression(node.num());
×
59

NEW
60
    return j;
×
NEW
61
}
×
62

NEW
63
data_flow::LibraryNode& CallocNodeSerializer::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("size"));
×
NEW
69
    assert(j.contains("num"));
×
70

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

NEW
76
    sdfg::serializer::JSONSerializer serializer;
×
NEW
77
    DebugInfoRegion debug_info = serializer.json_to_debug_info_region(j["debug_info"], builder.debug_info());
×
78

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

NEW
83
    return builder.add_library_node<CallocNode>(parent, debug_info, num, size);
×
NEW
84
}
×
85

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

NEW
94
void CallocNodeDispatcher::dispatch_code(
×
95
    codegen::PrettyPrinter& stream,
96
    codegen::PrettyPrinter& globals_stream,
97
    codegen::CodeSnippetFactory& library_snippet_factory
98
) {
NEW
99
    auto& Calloc_node = static_cast<const CallocNode&>(node_);
×
100

NEW
101
    stream << Calloc_node.outputs().at(0);
×
NEW
102
    stream << " = ";
×
NEW
103
    stream << "calloc(" << language_extension_.expression(Calloc_node.num()) << ", "
×
NEW
104
           << language_extension_.expression(Calloc_node.size()) << ")" << ";";
×
NEW
105
    stream << std::endl;
×
NEW
106
}
×
107

108
} // namespace stdlib
109
} // 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