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

daisytuner / sdfglib / 17559474002

08 Sep 2025 05:49PM UTC coverage: 61.347% (+2.2%) from 59.145%
17559474002

Pull #219

github

web-flow
Merge 2ae413ec1 into b8fdeb232
Pull Request #219: stdlib Library Nodes and ConstantNodes

424 of 1301 new or added lines in 74 files covered. (32.59%)

89 existing lines in 31 files now uncovered.

9318 of 15189 relevant lines covered (61.35%)

109.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/srand.cpp
1
#include "sdfg/data_flow/library_nodes/stdlib/srand.h"
2

3
namespace sdfg {
4
namespace stdlib {
5

NEW
6
SrandNode::SrandNode(
×
7
    size_t element_id,
8
    const DebugInfo& debug_info,
9
    const graph::Vertex vertex,
10
    data_flow::DataFlowGraph& parent,
11
    const symbolic::Expression& seed
12
)
NEW
13
    : LibraryNode(
×
NEW
14
          element_id, debug_info, vertex, parent, LibraryNodeType_Srand, {}, {}, true, data_flow::ImplementationType_NONE
×
15
      ),
NEW
16
      seed_(seed) {}
×
17

NEW
18
const symbolic::Expression& SrandNode::seed() const { return seed_; }
×
19

NEW
20
void SrandNode::validate(const Function& function) const {}
×
21

NEW
22
symbolic::SymbolSet SrandNode::symbols() const { return symbolic::atoms(this->seed_); }
×
23

24
std::unique_ptr<data_flow::DataFlowNode> SrandNode::
NEW
25
    clone(size_t element_id, const graph::Vertex vertex, data_flow::DataFlowGraph& parent) const {
×
NEW
26
    return std::make_unique<SrandNode>(element_id, debug_info_, vertex, parent, seed_);
×
27
}
28

NEW
29
void SrandNode::replace(const symbolic::Expression& old_expression, const symbolic::Expression& new_expression) {
×
NEW
30
    this->seed_ = symbolic::subs(this->seed_, old_expression, new_expression);
×
NEW
31
}
×
32

NEW
33
nlohmann::json SrandNodeSerializer::serialize(const data_flow::LibraryNode& library_node) {
×
NEW
34
    const SrandNode& node = static_cast<const SrandNode&>(library_node);
×
35

NEW
36
    nlohmann::json j;
×
NEW
37
    j["code"] = node.code().value();
×
38

NEW
39
    sdfg::serializer::JSONSerializer serializer;
×
NEW
40
    j["seed"] = serializer.expression(node.seed());
×
41

NEW
42
    return j;
×
NEW
43
}
×
44

NEW
45
data_flow::LibraryNode& SrandNodeSerializer::deserialize(
×
46
    const nlohmann::json& j, builder::StructuredSDFGBuilder& builder, structured_control_flow::Block& parent
47
) {
48
    // Assertions for required fields
NEW
49
    assert(j.contains("code"));
×
NEW
50
    assert(j.contains("debug_info"));
×
NEW
51
    assert(j.contains("seed"));
×
52

NEW
53
    auto code = j["code"].get<std::string>();
×
NEW
54
    if (code != LibraryNodeType_Srand.value()) {
×
NEW
55
        throw InvalidSDFGException("Invalid library node code");
×
56
    }
57

NEW
58
    sdfg::serializer::JSONSerializer serializer;
×
NEW
59
    DebugInfo debug_info = serializer.json_to_debug_info(j["debug_info"]);
×
60

NEW
61
    SymEngine::Expression seed(j.at("seed"));
×
62

NEW
63
    return builder.add_library_node<SrandNode>(parent, debug_info, seed);
×
NEW
64
}
×
65

NEW
66
SrandNodeDispatcher::SrandNodeDispatcher(
×
67
    codegen::LanguageExtension& language_extension,
68
    const Function& function,
69
    const data_flow::DataFlowGraph& data_flow_graph,
70
    const SrandNode& node
71
)
NEW
72
    : codegen::LibraryNodeDispatcher(language_extension, function, data_flow_graph, node) {}
×
73

NEW
74
void SrandNodeDispatcher::dispatch_code(
×
75
    codegen::PrettyPrinter& stream,
76
    codegen::PrettyPrinter& globals_stream,
77
    codegen::CodeSnippetFactory& library_snippet_factory
78
) {
NEW
79
    auto& srand_node = static_cast<const SrandNode&>(node_);
×
80

NEW
81
    stream << "srand(" << language_extension_.expression(srand_node.seed()) << ")" << ";" << std::endl;
×
NEW
82
}
×
83

84
} // namespace stdlib
85
} // 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