00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00027 #include "ShProgram.hpp"
00028 #include "ShBackend.hpp"
00029 #include "ShStream.hpp"
00030
00031 namespace SH {
00032
00033 ShProgram::ShProgram()
00034 : ShMetaForwarder(0),
00035 m_node(0)
00036 {
00037 }
00038
00039 ShProgram::ShProgram(const std::string& target)
00040 : ShMetaForwarder(0),
00041 m_node(new ShProgramNode(target))
00042 {
00043 real_meta(m_node.object());
00044 }
00045
00046 ShProgram::ShProgram(const ShProgram& other)
00047 : ShMetaForwarder(other.m_node.object()),
00048 m_node(other.m_node)
00049 {
00050 }
00051
00052 ShProgram::ShProgram(const ShProgramNodePtr& node)
00053 : ShMetaForwarder(node.object()),
00054 m_node(node)
00055 {
00056 }
00057
00058 ShProgram& ShProgram::operator=(const ShProgram& other)
00059 {
00060 m_node = other.m_node;
00061 real_meta(m_node.object());
00062 return *this;
00063 }
00064
00065
00066
00067 ShProgram ShProgram::operator()(const ShStream& s0) const
00068 {
00069 return (*this) << s0;
00070 }
00071
00072 ShProgram ShProgram::operator()(const ShStream& s0,
00073 const ShStream& s1) const
00074 {
00075 return (*this) << s0 << s1;
00076 }
00077
00078 ShProgram ShProgram::operator()(const ShStream& s0,
00079 const ShStream& s1,
00080 const ShStream& s2) const
00081 {
00082 return (*this) << s0 << s1 << s2;
00083 }
00084
00085 ShProgram ShProgram::operator()(const ShStream& s0,
00086 const ShStream& s1,
00087 const ShStream& s2,
00088 const ShStream& s3) const
00089 {
00090 return (*this) << s0 << s1 << s2 << s3;
00091 }
00092
00093 ShProgram ShProgram::operator()(const ShStream& s0,
00094 const ShStream& s1,
00095 const ShStream& s2,
00096 const ShStream& s3,
00097 const ShStream& s4) const
00098 {
00099 return (*this) << s0 << s1 << s2 << s3 << s4;
00100 }
00101
00102 }