1
|
#include "hello.h"
|
3
|
#define HELLO_ARGS_DESC\
"{uppercase={optional, description='capitalize or not'},"\
"numtimes={value={type={int, min=1, max=10}, usageName='times'},"\
"optional, description='number of times to print message'}}"
|
4
|
APT_DEFINE_OSH_NAME(HelloWorldOp, hello, HELLO_ARGS_DESC);
|
5
|
APT_IMPLEMENT_RTTI_ONEBASE(HelloWorldOp, APT_Operator);
|
6
|
APT_IMPLEMENT_PERSISTENT(HelloWorldOp);
|
7
|
HelloWorldOp::HelloWorldOp()
: numTimes_(1),
uppercase_(false)
{}
|
11
|
void HelloWorldOp::setNumTimes(APT_Int32 numTimes)
{
numTimes_ = numTimes;
}
|
15
18
|
void HelloWorldOp::setUpperCase(bool uppercase)
{
uppercase_ = uppercase;
}
|
19
|
APT_Status HelloWorldOp::initializeFromArgs_(const APT_PropertyList &args,
APT_Operator::InitializeContext context)
{
APT_Status status=APT_StatusOk;
if (context == APT_Operator::eRun) return status;
for (int i = 0; i < args.count(); i++)
{
const APT_Property& prop = args[i];
if (prop.name() == "numtimes")
numTimes_ = (int) prop.valueList().getProperty("value", 0).
valueDFloat();
else if (prop.name() == "uppercase")
uppercase_ = true;
}
return status;
}
|
33
|
void HelloWorldOp::serialize(APT_Archive& archive, APT_UInt8)
{
archive || numTimes_;
archive || uppercase_;
}
|
38
|
APT_Status HelloWorldOp::describeOperator()
{
setKind(eParallel);
setInputDataSets(1);
setOutputDataSets(1);
setInputInterfaceSchema("record (in:*)", 0);
setOutputInterfaceSchema("record (out:*)", 0);
declareTransfer("in", "out", 0, 0);
return APT_StatusOk;
}
|
48
|
APT_Status HelloWorldOp::runLocally()
{
APT_Status status = APT_StatusOk;
APT_InputCursor inCur;
setupInputCursor(&inCur, 0);
APT_OutputCursor outCur;
setupOutputCursor(&outCur, 0);
while(inCur.getRecord() && status == APT_StatusOk)
{
transfer(0);
outCur.putRecord();
int i;
for (i=0; i<numTimes_; i++)
{
if (uppercase_)
cout << "HELLO, WORLD" << endl;
else
cout << "hello, world" << endl;
}
}
return status;
}
|