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

daisytuner / sdfglib / 20606101998

30 Dec 2025 09:15PM UTC coverage: 39.289% (+0.002%) from 39.287%
20606101998

push

github

web-flow
Merge pull request #418 from daisytuner/formatting

formatting

14705 of 48717 branches covered (30.18%)

Branch coverage included in aggregate %.

2 of 19 new or added lines in 7 files covered. (10.53%)

1 existing line in 1 file now uncovered.

12576 of 20719 relevant lines covered (60.7%)

86.36 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

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

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

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

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

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

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

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

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

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

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

60
    return j;
×
61
}
×
62

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

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

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

80
    // Extract properties
81
    auto size = symbolic::parse(j.at("size"));
×
82
    auto num = symbolic::parse(j.at("num"));
×
83

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

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

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

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

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