00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00024 #ifndef SHPALETTENODE_HPP
00025 #define SHPALETTENODE_HPP
00026
00027 #include <cstddef>
00028 #include "ShVariableNode.hpp"
00029
00030 namespace SH {
00031
00041 class SH_DLLEXPORT ShPaletteNode : public ShVariableNode {
00042 public:
00043 ShPaletteNode(int elements, ShSemanticType semantic, ShValueType valueType, std::size_t length);
00044
00046 void set_node(std::size_t index, const ShVariableNodePtr& node);
00047
00049 std::size_t palette_length() const;
00050
00052 ShVariableNodeCPtr get_node(std::size_t index) const;
00053
00055 ShVariableNodePtr get_node(std::size_t index);
00056
00057 private:
00058 std::size_t m_length;
00059 ShVariableNodePtr* m_nodes;
00060 };
00061
00062 typedef ShPointer<ShPaletteNode> ShPaletteNodePtr;
00063 typedef ShPointer<const ShPaletteNode> ShPaletteNodeCPtr;
00064
00065 }
00066
00067 #endif