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 }