remoter.compiler.builder.IntParamBuilder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of remoter Show documentation
Show all versions of remoter Show documentation
Remoter makes developing android remote services intuitive without messing with aidl.
The newest version!
package remoter.compiler.builder;
import com.squareup.javapoet.MethodSpec;
import javax.annotation.processing.Messager;
import javax.lang.model.element.Element;
import javax.lang.model.element.VariableElement;
import javax.lang.model.type.TypeKind;
import javax.lang.model.type.TypeMirror;
/**
* A {@link ParamBuilder} for int type parameters
*/
class IntParamBuilder extends ParamBuilder {
protected IntParamBuilder(Messager messager, Element element) {
super(messager, element);
}
@Override
public void writeParamsToProxy(VariableElement param, ParamType paramType, MethodSpec.Builder methodBuilder) {
if (param.asType().getKind() == TypeKind.ARRAY) {
if (paramType == ParamType.OUT) {
writeArrayOutParamsToProxy(param, methodBuilder);
} else {
methodBuilder.addStatement("data.writeIntArray(" + param.getSimpleName() + ")");
}
} else {
methodBuilder.addStatement("data.writeInt(" + param.getSimpleName() + ")");
}
}
@Override
public void readResultsFromStub(TypeMirror resultType, MethodSpec.Builder methodBuilder) {
if (resultType.getKind() == TypeKind.ARRAY) {
methodBuilder.addStatement("reply.writeIntArray(result)");
} else {
methodBuilder.addStatement("reply.writeInt(result)");
}
}
@Override
public void readResultsFromProxy(TypeMirror resultType, MethodSpec.Builder methodBuilder) {
if (resultType.getKind() == TypeKind.ARRAY) {
methodBuilder.addStatement("result = reply.createIntArray()");
} else {
methodBuilder.addStatement("result = reply.readInt()");
}
}
@Override
public void readOutResultsFromStub(VariableElement param, ParamType paramType, String paramName, MethodSpec.Builder methodBuilder) {
if (param.asType().getKind() == TypeKind.ARRAY) {
methodBuilder.addStatement("reply.writeIntArray(" + paramName + ")");
}
}
@Override
public void writeParamsToStub(VariableElement param, ParamType paramType, String paramName, MethodSpec.Builder methodBuilder) {
super.writeParamsToStub(param, paramType, paramName, methodBuilder);
if (param.asType().getKind() == TypeKind.ARRAY) {
if (paramType == ParamType.OUT) {
writeOutParamsToStub(param, paramType, paramName, methodBuilder);
} else {
methodBuilder.addStatement(paramName + " = data.createIntArray()");
}
} else {
methodBuilder.addStatement(paramName + " = data.readInt()");
}
}
@Override
public void readOutParamsFromProxy(VariableElement param, ParamType paramType, MethodSpec.Builder methodBuilder) {
if (param.asType().getKind() == TypeKind.ARRAY && paramType != ParamType.IN) {
methodBuilder.beginControlFlow("if (" + param.getSimpleName() +" != null)");
methodBuilder.addStatement("reply.readIntArray(" + param.getSimpleName() + ")");
methodBuilder.endControlFlow();
}
}
}