Go to the documentation of this file. 1 #ifndef OGLPLUS_TEXGEN_BASE_OUTPUT_HPP
9 #define OGLPLUS_TEXGEN_BASE_OUTPUT_HPP
15 namespace eagine::oglp::texgen {
17 class base_output :
public output_intf {
20 std::set<input_intf*> _inputs;
23 std::ostream& input_defs(std::ostream&, compile_context&);
24 std::ostream& opening_expr(std::ostream&, compile_context&);
25 std::ostream& closing_expr(std::ostream&, compile_context&);
27 bool already_defined(compile_context&);
30 base_output(node_intf& parent) noexcept
33 node_intf& parent() noexcept {
41 render_param_bits required_params() override;
43 std::ostream& definitions(std::ostream&, compile_context&) override;
45 std::ostream& expression(std::ostream&, compile_context&) override;
47 bool is_connected(input_intf&) override;
49 bool connect(input_intf&) override;
51 bool disconnect(input_intf&) override;
53 void disconnect_all() override;
55 virtual
bool set_default_value(
span_size_t,
float) {
59 void notify_connected()
override;
61 void prepare_parent()
override;
63 bool render_parent(
const render_params&)
override;
65 std::intptr_t get_id() const noexcept;
68 void append_id(std::ostream&);
74 compile_context& context;
76 std::ostream&
operator<<(std::ostream& out,
const output_id&);
80 #if !OGLPLUS_LINK_LIBRARY || defined(OGLPLUS_IMPLEMENTING_LIBRARY)
81 #include <oglplus/texgen/base_output.inl>
84 #endif // OGLPLUS_TEXGEN_BASE_OUTPUT_HPP
std::ptrdiff_t span_size_t
Signed span size type used by eagine.
Definition: types.hpp:36
basic_string_span< const char > string_view
Alias for const string views.
Definition: string_span.hpp:116
static auto type_name(const T &) noexcept -> std::string
Returns the demangled name for type T.
Definition: type_name.hpp:24
static auto operator<<(std::ostream &out, const identifier_name< M > &n) -> std::ostream &
Operator for writing identifier_name into output streams.
Definition: identifier.hpp:159