/*******************************************************************************
* Copyright © 2011, 2013 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*
*******************************************************************************/
package org.eclipse.edt.gen.java.templates;
import org.eclipse.edt.gen.java.CommonUtilities;
import org.eclipse.edt.gen.java.Context;
import org.eclipse.edt.mof.codegen.api.TabbedWriter;
import org.eclipse.edt.mof.egl.ArrayType;
import org.eclipse.edt.mof.egl.BoxingExpression;
public class BoxingExpressionTemplate extends JavaTemplate {
public void genExpression(BoxingExpression expr, Context ctx, TabbedWriter out) {
if (expr.getType() instanceof ArrayType) {
out.print("org.eclipse.edt.runtime.java.eglx.lang.EList.ezeBox(");
ctx.invoke(genExpression, expr.getExpr(), ctx, out);
if ((CommonUtilities.isBoxedOutputTemp(expr.getExpr(), ctx)))
out.print(".ezeUnbox()");
out.print(", \"");
out.print(expr.getType().getTypeSignature());
out.print("\")");
} else if (ctx.mapsToPrimitiveType(expr.getType())) {
ctx.invoke(genRuntimeTypeName, expr.getType(), ctx, out, TypeNameKind.EGLImplementation);
out.print(".ezeBox(");
ctx.invoke(genExpression, expr.getExpr(), ctx, out);
if ((CommonUtilities.isBoxedOutputTemp(expr.getExpr(), ctx)))
out.print(".ezeUnbox()");
ctx.invoke(genTypeDependentOptions, expr.getType(), ctx, out);
out.print(")");
} else {
if (ctx.getAttribute(expr, org.eclipse.edt.gen.Constants.SubKey_functionArgumentNeedsWrapping) != null
&& ((Boolean) ctx.getAttribute(expr, org.eclipse.edt.gen.Constants.SubKey_functionArgumentNeedsWrapping)).booleanValue())
out.print("org.eclipse.edt.runtime.java.eglx.lang.EAny.ezeWrap(");
else
out.print("org.eclipse.edt.runtime.java.eglx.lang.EAny.ezeBox(");
ctx.invoke(genExpression, expr.getExpr(), ctx, out);
if ((CommonUtilities.isBoxedOutputTemp(expr.getExpr(), ctx)))
out.print(".ezeUnbox()");
out.print(")");
}
}
}