private JavaAccumulatorFunctionExecutor generateFunctionCallCodeTemplate( final RuleBuildContext context,
final AccumulateDescr accumDescr,
final Declaration[] sourceDeclArr,
AccumulateFunctionCallDescr fc,
AccumulateFunction function,
final BoundIdentifiers usedIdentifiers,
final Declaration[] previousDeclarations,
final boolean readLocalsFromTuple ) {
final String className = "accumulateExpression" + context.getNextId();
final Map<String, Object> map = createVariableContext( className,
fc.getParams().length > 0 ? fc.getParams()[0] : "\"\"",
context,
previousDeclarations,
sourceDeclArr,
usedIdentifiers.getGlobals()
);
map.put( "readLocalsFromTuple",
readLocalsFromTuple ? Boolean.TRUE : Boolean.FALSE );
JavaAccumulatorFunctionExecutor accumulator = new JavaAccumulatorFunctionExecutor( function );
generateTemplates("returnValueMethod",
"returnValueInvoker",
context,
className,
map,
accumulator,
accumDescr);
return accumulator;
}