/* * Copyright 2011-2016 Blender Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #pragma once #include "node_type.h" #include "util_map.h" #include "util_param.h" #include "util_vector.h" CCL_NAMESPACE_BEGIN struct Node; struct NodeType; struct Transform; /* Node */ struct Node { explicit Node(const NodeType *type, ustring name = ustring()); virtual ~Node(); /* set values */ void set(const SocketType& input, bool value); void set(const SocketType& input, int value); void set(const SocketType& input, uint value); void set(const SocketType& input, float value); void set(const SocketType& input, float2 value); void set(const SocketType& input, float3 value); void set(const SocketType& input, const char *value); void set(const SocketType& input, ustring value); void set(const SocketType& input, const Transform& value); void set(const SocketType& input, Node *value); /* set array values. the memory from the input array will taken over * by the node and the input array will be empty after return */ void set(const SocketType& input, array& value); void set(const SocketType& input, array& value); void set(const SocketType& input, array& value); void set(const SocketType& input, array& value); void set(const SocketType& input, array& value); void set(const SocketType& input, array& value); void set(const SocketType& input, array& value); void set(const SocketType& input, array& value); /* get values */ bool get_bool(const SocketType& input) const; int get_int(const SocketType& input) const; uint get_uint(const SocketType& input) const; float get_float(const SocketType& input) const; float2 get_float2(const SocketType& input) const; float3 get_float3(const SocketType& input) const; ustring get_string(const SocketType& input) const; Transform get_transform(const SocketType& input) const; Node *get_node(const SocketType& input) const; /* get array values */ const array& get_bool_array(const SocketType& input) const; const array& get_int_array(const SocketType& input) const; const array& get_float_array(const SocketType& input) const; const array& get_float2_array(const SocketType& input) const; const array& get_float3_array(const SocketType& input) const; const array& get_string_array(const SocketType& input) const; const array& get_transform_array(const SocketType& input) const; const array& get_node_array(const SocketType& input) const; /* generic values operations */ bool has_default_value(const SocketType& input) const; void set_default_value(const SocketType& input); bool equals_value(const Node& other, const SocketType& input) const; void copy_value(const SocketType& input, const Node& other, const SocketType& other_input); /* equals */ bool equals(const Node& other) const; ustring name; const NodeType *type; }; CCL_NAMESPACE_END