blob: 5e53088b9b39fd45fe54ab4e8f3801502c644e04 [file] [log] [blame]
package org.jetbrains.protocolReader;
class PrimitiveValueReader extends ValueReader {
private final String className;
private final String readPostfix;
final String defaultValue;
private final boolean asRawString;
PrimitiveValueReader(String name) {
this(name, false);
}
PrimitiveValueReader(String name, boolean nullable) {
this(name, null, nullable, false);
}
PrimitiveValueReader(String name, String defaultValue) {
this(name, defaultValue, false, false);
}
public PrimitiveValueReader(String name, String defaultValue, boolean nullable, boolean asRawString) {
super(nullable);
this.defaultValue = defaultValue;
this.asRawString = asRawString;
className = name;
if (Character.isLowerCase(className.charAt(0))) {
readPostfix = Character.toUpperCase(className.charAt(0)) + className.substring(1);
}
else {
readPostfix = asRawString ? ("Raw" + className) : className;
}
}
@Override
void writeReadCode(ClassScope methodScope, boolean subtyping, String fieldName, TextOutput out) {
if (asRawString) {
out.append("readRawString(");
addReaderParameter(subtyping, out);
}
else {
beginReadCall(readPostfix, subtyping, out, fieldName);
}
out.append(')');
}
@Override
void appendFinishedValueTypeName(TextOutput out) {
out.append(className);
}
@Override
public void writeArrayReadCode(ClassScope scope,
boolean subtyping,
boolean nullable,
String fieldName, TextOutput out) {
if (readPostfix.equals("String")) {
out.append("nextList");
}
else {
out.append("read").append(readPostfix).append("Array");
}
out.append('(').append(Util.READER_NAME);
out.append(')');
}
}