Program Listing for File node.cc#

↰ Return to documentation for file (src/node.cc)

#include "nodes-graph/node.h"


namespace ng {

std::mt19937 Node::generator_ = std::mt19937(std::random_device()());
std::uniform_int_distribution<std::size_t> Node::distribution_ = std::uniform_int_distribution<std::size_t>(1, MAX_NODE_RANDOM_ID);


Node::Node(
    const std::string& name,
    const node_id_t& id,
    const qualifier_t& qualifier,
    const std::set<socket_id_t>& input_sockets,
    const std::set<socket_id_t>& output_sockets,
    bool proxy
): name_(name),
   id_(id),
   qualifier_(qualifier),
   input_sockets_(input_sockets),
   output_sockets_(output_sockets),
   proxy_(proxy)
{}


std::size_t Node::make_random_id() {
    return distribution_(generator_);
}


void Node::seed_random_ids(uint32_t seed) {
    generator_.seed(seed);
    distribution_.reset();
}


bool Node::register_input_socket(const socket_id_t& socket_id) {
    return input_sockets_.insert(socket_id).second;
}


bool Node::register_output_socket(const socket_id_t& socket_id) {
    return output_sockets_.insert(socket_id).second;
}


bool Node::remove_input_socket(const socket_id_t& socket_id) {
    return input_sockets_.erase(socket_id) > 0;
}


bool Node::remove_output_socket(const socket_id_t& socket_id) {
    return output_sockets_.erase(socket_id) > 0;
}

} // namespace ng