use of org.ballerinalang.model.values.BRefType in project ballerina by ballerina-lang.
the class CPU method extractValues.
@SuppressWarnings("rawtypes")
private static BRefType[] extractValues(WorkerData data, BType[] types, int[] regs) {
BRefType[] result = new BRefType[types.length];
for (int i = 0; i < regs.length; i++) {
BType paramType = types[i];
int argReg = regs[i];
switch(paramType.getTag()) {
case TypeTags.INT_TAG:
result[i] = new BInteger(data.longRegs[argReg]);
break;
case TypeTags.FLOAT_TAG:
result[i] = new BFloat(data.doubleRegs[argReg]);
break;
case TypeTags.STRING_TAG:
result[i] = new BString(data.stringRegs[argReg]);
break;
case TypeTags.BOOLEAN_TAG:
result[i] = new BBoolean(data.intRegs[argReg] > 0);
break;
case TypeTags.BLOB_TAG:
result[i] = new BBlob(data.byteRegs[argReg]);
break;
default:
result[i] = data.refRegs[argReg];
}
}
return result;
}
use of org.ballerinalang.model.values.BRefType in project ballerina by ballerina-lang.
the class CPU method execTypeConversionOpcodes.
@SuppressWarnings("rawtypes")
private static void execTypeConversionOpcodes(WorkerExecutionContext ctx, WorkerData sf, int opcode, int[] operands) {
int i;
int j;
int k;
BRefType bRefType;
String str;
switch(opcode) {
case InstructionCodes.I2F:
i = operands[0];
j = operands[1];
sf.doubleRegs[j] = (double) sf.longRegs[i];
break;
case InstructionCodes.I2S:
i = operands[0];
j = operands[1];
sf.stringRegs[j] = Long.toString(sf.longRegs[i]);
break;
case InstructionCodes.I2B:
i = operands[0];
j = operands[1];
sf.intRegs[j] = sf.longRegs[i] != 0 ? 1 : 0;
break;
case InstructionCodes.I2JSON:
i = operands[0];
j = operands[1];
sf.refRegs[j] = new BJSON(Long.toString(sf.longRegs[i]));
break;
case InstructionCodes.F2I:
i = operands[0];
j = operands[1];
sf.longRegs[j] = (long) sf.doubleRegs[i];
break;
case InstructionCodes.F2S:
i = operands[0];
j = operands[1];
sf.stringRegs[j] = Double.toString(sf.doubleRegs[i]);
break;
case InstructionCodes.F2B:
i = operands[0];
j = operands[1];
sf.intRegs[j] = sf.doubleRegs[i] != 0.0 ? 1 : 0;
break;
case InstructionCodes.F2JSON:
i = operands[0];
j = operands[1];
sf.refRegs[j] = new BJSON(Double.toString(sf.doubleRegs[i]));
break;
case InstructionCodes.S2I:
i = operands[0];
j = operands[1];
str = sf.stringRegs[i];
if (str == null) {
handleTypeConversionError(ctx, sf, j, null, TypeConstants.INT_TNAME);
break;
}
try {
sf.refRegs[j] = new BInteger(Long.parseLong(str));
} catch (NumberFormatException e) {
handleTypeConversionError(ctx, sf, j, TypeConstants.STRING_TNAME, TypeConstants.INT_TNAME);
}
break;
case InstructionCodes.S2F:
i = operands[0];
j = operands[1];
str = sf.stringRegs[i];
if (str == null) {
handleTypeConversionError(ctx, sf, j, null, TypeConstants.FLOAT_TNAME);
break;
}
try {
sf.refRegs[j] = new BFloat(Double.parseDouble(str));
} catch (NumberFormatException e) {
handleTypeConversionError(ctx, sf, j, TypeConstants.STRING_TNAME, TypeConstants.FLOAT_TNAME);
}
break;
case InstructionCodes.S2B:
i = operands[0];
j = operands[1];
sf.intRegs[j] = Boolean.parseBoolean(sf.stringRegs[i]) ? 1 : 0;
break;
case InstructionCodes.S2JSON:
i = operands[0];
j = operands[1];
str = StringEscapeUtils.escapeJson(sf.stringRegs[i]);
sf.refRegs[j] = str == null ? null : new BJSON("\"" + str + "\"");
break;
case InstructionCodes.B2I:
i = operands[0];
j = operands[1];
sf.longRegs[j] = sf.intRegs[i];
break;
case InstructionCodes.B2F:
i = operands[0];
j = operands[1];
sf.doubleRegs[j] = sf.intRegs[i];
break;
case InstructionCodes.B2S:
i = operands[0];
j = operands[1];
sf.stringRegs[j] = sf.intRegs[i] == 1 ? "true" : "false";
break;
case InstructionCodes.DT2XML:
i = operands[0];
j = operands[1];
bRefType = sf.refRegs[i];
if (bRefType == null) {
handleNullRefError(ctx);
break;
}
try {
sf.refRegs[j] = XMLUtils.tableToXML((BTable) bRefType, ctx.isInTransaction());
} catch (Exception e) {
sf.refRegs[j] = null;
handleTypeConversionError(ctx, sf, j, TypeConstants.TABLE_TNAME, TypeConstants.XML_TNAME);
}
break;
case InstructionCodes.DT2JSON:
i = operands[0];
j = operands[1];
bRefType = sf.refRegs[i];
if (bRefType == null) {
handleNullRefError(ctx);
break;
}
try {
sf.refRegs[j] = JSONUtils.toJSON((BTable) bRefType, ctx.isInTransaction());
} catch (Exception e) {
handleTypeConversionError(ctx, sf, j, TypeConstants.TABLE_TNAME, TypeConstants.XML_TNAME);
}
break;
case InstructionCodes.T2MAP:
convertStructToMap(ctx, operands, sf);
break;
case InstructionCodes.T2JSON:
convertStructToJSON(ctx, operands, sf);
break;
case InstructionCodes.MAP2T:
convertMapToStruct(ctx, operands, sf);
break;
case InstructionCodes.JSON2T:
convertJSONToStruct(ctx, operands, sf);
break;
case InstructionCodes.XMLATTRS2MAP:
i = operands[0];
j = operands[1];
bRefType = sf.refRegs[i];
if (bRefType == null) {
sf.refRegs[j] = null;
break;
}
sf.refRegs[j] = ((BXMLAttributes) sf.refRegs[i]).value();
break;
case InstructionCodes.S2XML:
i = operands[0];
j = operands[1];
k = operands[2];
str = sf.stringRegs[i];
if (str == null) {
sf.refRegs[j] = null;
sf.refRegs[k] = null;
break;
}
try {
sf.refRegs[j] = XMLUtils.parse(str);
sf.refRegs[k] = null;
} catch (BallerinaException e) {
sf.refRegs[j] = null;
handleTypeConversionError(ctx, sf, k, e.getMessage());
}
break;
case InstructionCodes.S2JSONX:
i = operands[0];
j = operands[1];
k = operands[2];
str = sf.stringRegs[i];
try {
sf.refRegs[j] = str == null ? null : new BJSON(str);
sf.refRegs[k] = null;
} catch (BallerinaException e) {
sf.refRegs[j] = null;
handleTypeConversionError(ctx, sf, k, e.getMessage());
}
break;
case InstructionCodes.XML2S:
i = operands[0];
j = operands[1];
sf.stringRegs[j] = sf.refRegs[i].stringValue();
break;
case InstructionCodes.ANY2SCONV:
i = operands[0];
j = operands[1];
bRefType = sf.refRegs[i];
if (bRefType == null) {
sf.stringRegs[j] = STRING_NULL_VALUE;
} else {
sf.stringRegs[j] = bRefType.stringValue();
}
break;
default:
throw new UnsupportedOperationException();
}
}
use of org.ballerinalang.model.values.BRefType in project ballerina by ballerina-lang.
the class CPU method execLoadOpcodes.
@SuppressWarnings({ "rawtypes", "unchecked" })
private static void execLoadOpcodes(WorkerExecutionContext ctx, WorkerData sf, int opcode, int[] operands) {
int i;
int j;
int k;
// Index of the local variable
int lvIndex;
int fieldIndex;
BIntArray bIntArray;
BFloatArray bFloatArray;
BStringArray bStringArray;
BBooleanArray bBooleanArray;
BBlobArray bBlobArray;
BRefValueArray bArray;
StructureType structureType;
BMap<String, BRefType> bMap;
BJSON jsonVal;
switch(opcode) {
case InstructionCodes.IMOVE:
lvIndex = operands[0];
i = operands[1];
sf.longRegs[i] = sf.longRegs[lvIndex];
break;
case InstructionCodes.FMOVE:
lvIndex = operands[0];
i = operands[1];
sf.doubleRegs[i] = sf.doubleRegs[lvIndex];
break;
case InstructionCodes.SMOVE:
lvIndex = operands[0];
i = operands[1];
sf.stringRegs[i] = sf.stringRegs[lvIndex];
break;
case InstructionCodes.BMOVE:
lvIndex = operands[0];
i = operands[1];
sf.intRegs[i] = sf.intRegs[lvIndex];
break;
case InstructionCodes.LMOVE:
lvIndex = operands[0];
i = operands[1];
sf.byteRegs[i] = sf.byteRegs[lvIndex];
break;
case InstructionCodes.RMOVE:
lvIndex = operands[0];
i = operands[1];
sf.refRegs[i] = sf.refRegs[lvIndex];
break;
case InstructionCodes.IALOAD:
i = operands[0];
j = operands[1];
k = operands[2];
bIntArray = (BIntArray) sf.refRegs[i];
if (bIntArray == null) {
handleNullRefError(ctx);
break;
}
try {
sf.longRegs[k] = bIntArray.get(sf.longRegs[j]);
} catch (Exception e) {
ctx.setError(BLangVMErrors.createError(ctx, e.getMessage()));
handleError(ctx);
}
break;
case InstructionCodes.FALOAD:
i = operands[0];
j = operands[1];
k = operands[2];
bFloatArray = (BFloatArray) sf.refRegs[i];
if (bFloatArray == null) {
handleNullRefError(ctx);
break;
}
try {
sf.doubleRegs[k] = bFloatArray.get(sf.longRegs[j]);
} catch (Exception e) {
ctx.setError(BLangVMErrors.createError(ctx, e.getMessage()));
handleError(ctx);
}
break;
case InstructionCodes.SALOAD:
i = operands[0];
j = operands[1];
k = operands[2];
bStringArray = (BStringArray) sf.refRegs[i];
if (bStringArray == null) {
handleNullRefError(ctx);
break;
}
try {
sf.stringRegs[k] = bStringArray.get(sf.longRegs[j]);
} catch (Exception e) {
ctx.setError(BLangVMErrors.createError(ctx, e.getMessage()));
handleError(ctx);
}
break;
case InstructionCodes.BALOAD:
i = operands[0];
j = operands[1];
k = operands[2];
bBooleanArray = (BBooleanArray) sf.refRegs[i];
if (bBooleanArray == null) {
handleNullRefError(ctx);
break;
}
try {
sf.intRegs[k] = bBooleanArray.get(sf.longRegs[j]);
} catch (Exception e) {
ctx.setError(BLangVMErrors.createError(ctx, e.getMessage()));
handleError(ctx);
}
break;
case InstructionCodes.LALOAD:
i = operands[0];
j = operands[1];
k = operands[2];
bBlobArray = (BBlobArray) sf.refRegs[i];
if (bBlobArray == null) {
handleNullRefError(ctx);
break;
}
try {
sf.byteRegs[k] = bBlobArray.get(sf.longRegs[j]);
} catch (Exception e) {
ctx.setError(BLangVMErrors.createError(ctx, e.getMessage()));
handleError(ctx);
}
break;
case InstructionCodes.RALOAD:
i = operands[0];
j = operands[1];
k = operands[2];
bArray = (BRefValueArray) sf.refRegs[i];
if (bArray == null) {
handleNullRefError(ctx);
break;
}
try {
sf.refRegs[k] = bArray.get(sf.longRegs[j]);
} catch (Exception e) {
ctx.setError(BLangVMErrors.createError(ctx, e.getMessage()));
handleError(ctx);
}
break;
case InstructionCodes.JSONALOAD:
i = operands[0];
j = operands[1];
k = operands[2];
jsonVal = (BJSON) sf.refRegs[i];
if (jsonVal == null) {
handleNullRefError(ctx);
break;
}
try {
sf.refRegs[k] = JSONUtils.getArrayElement(jsonVal, sf.longRegs[j]);
} catch (Exception e) {
ctx.setError(BLangVMErrors.createError(ctx, e.getMessage()));
handleError(ctx);
}
break;
case InstructionCodes.IGLOAD:
// Global variable index
i = operands[0];
// Stack registry index
j = operands[1];
sf.longRegs[j] = ctx.programFile.getGlobalMemoryBlock().getIntField(i);
break;
case InstructionCodes.FGLOAD:
i = operands[0];
j = operands[1];
sf.doubleRegs[j] = ctx.programFile.getGlobalMemoryBlock().getFloatField(i);
break;
case InstructionCodes.SGLOAD:
i = operands[0];
j = operands[1];
sf.stringRegs[j] = ctx.programFile.getGlobalMemoryBlock().getStringField(i);
break;
case InstructionCodes.BGLOAD:
i = operands[0];
j = operands[1];
sf.intRegs[j] = ctx.programFile.getGlobalMemoryBlock().getBooleanField(i);
break;
case InstructionCodes.LGLOAD:
i = operands[0];
j = operands[1];
sf.byteRegs[j] = ctx.programFile.getGlobalMemoryBlock().getBlobField(i);
break;
case InstructionCodes.RGLOAD:
i = operands[0];
j = operands[1];
sf.refRegs[j] = ctx.programFile.getGlobalMemoryBlock().getRefField(i);
break;
case InstructionCodes.IFIELDLOAD:
i = operands[0];
fieldIndex = operands[1];
j = operands[2];
structureType = (StructureType) sf.refRegs[i];
if (structureType == null) {
handleNullRefError(ctx);
break;
}
sf.longRegs[j] = structureType.getIntField(fieldIndex);
break;
case InstructionCodes.FFIELDLOAD:
i = operands[0];
fieldIndex = operands[1];
j = operands[2];
structureType = (StructureType) sf.refRegs[i];
if (structureType == null) {
handleNullRefError(ctx);
break;
}
sf.doubleRegs[j] = structureType.getFloatField(fieldIndex);
break;
case InstructionCodes.SFIELDLOAD:
i = operands[0];
fieldIndex = operands[1];
j = operands[2];
structureType = (StructureType) sf.refRegs[i];
if (structureType == null) {
handleNullRefError(ctx);
break;
}
sf.stringRegs[j] = structureType.getStringField(fieldIndex);
break;
case InstructionCodes.BFIELDLOAD:
i = operands[0];
fieldIndex = operands[1];
j = operands[2];
structureType = (StructureType) sf.refRegs[i];
if (structureType == null) {
handleNullRefError(ctx);
break;
}
sf.intRegs[j] = structureType.getBooleanField(fieldIndex);
break;
case InstructionCodes.LFIELDLOAD:
i = operands[0];
fieldIndex = operands[1];
j = operands[2];
structureType = (StructureType) sf.refRegs[i];
if (structureType == null) {
handleNullRefError(ctx);
break;
}
sf.byteRegs[j] = structureType.getBlobField(fieldIndex);
break;
case InstructionCodes.RFIELDLOAD:
i = operands[0];
fieldIndex = operands[1];
j = operands[2];
structureType = (StructureType) sf.refRegs[i];
if (structureType == null) {
handleNullRefError(ctx);
break;
}
sf.refRegs[j] = structureType.getRefField(fieldIndex);
break;
case InstructionCodes.MAPLOAD:
i = operands[0];
j = operands[1];
k = operands[2];
bMap = (BMap<String, BRefType>) sf.refRegs[i];
if (bMap == null) {
handleNullRefError(ctx);
break;
}
sf.refRegs[k] = bMap.get(sf.stringRegs[j]);
break;
case InstructionCodes.JSONLOAD:
i = operands[0];
j = operands[1];
k = operands[2];
jsonVal = (BJSON) sf.refRegs[i];
if (jsonVal == null) {
handleNullRefError(ctx);
break;
}
sf.refRegs[k] = JSONUtils.getElement(jsonVal, sf.stringRegs[j]);
break;
case InstructionCodes.ENUMERATORLOAD:
i = operands[0];
j = operands[1];
k = operands[2];
TypeRefCPEntry typeRefCPEntry = (TypeRefCPEntry) ctx.constPool[i];
BEnumType enumType = (BEnumType) typeRefCPEntry.getType();
sf.refRegs[k] = enumType.getEnumerator(j);
break;
default:
throw new UnsupportedOperationException();
}
}
use of org.ballerinalang.model.values.BRefType in project ballerina by ballerina-lang.
the class CPU method execStoreOpcodes.
@SuppressWarnings({ "rawtypes", "unchecked" })
private static void execStoreOpcodes(WorkerExecutionContext ctx, WorkerData sf, int opcode, int[] operands) {
int i;
int j;
int k;
int fieldIndex;
BIntArray bIntArray;
BFloatArray bFloatArray;
BStringArray bStringArray;
BBooleanArray bBooleanArray;
BBlobArray bBlobArray;
BRefValueArray bArray;
StructureType structureType;
BMap<String, BRefType> bMap;
BJSON jsonVal;
switch(opcode) {
case InstructionCodes.IASTORE:
i = operands[0];
j = operands[1];
k = operands[2];
bIntArray = (BIntArray) sf.refRegs[i];
if (bIntArray == null) {
handleNullRefError(ctx);
break;
}
try {
bIntArray.add(sf.longRegs[j], sf.longRegs[k]);
} catch (Exception e) {
ctx.setError(BLangVMErrors.createError(ctx, e.getMessage()));
handleError(ctx);
}
break;
case InstructionCodes.FASTORE:
i = operands[0];
j = operands[1];
k = operands[2];
bFloatArray = (BFloatArray) sf.refRegs[i];
if (bFloatArray == null) {
handleNullRefError(ctx);
break;
}
try {
bFloatArray.add(sf.longRegs[j], sf.doubleRegs[k]);
} catch (Exception e) {
ctx.setError(BLangVMErrors.createError(ctx, e.getMessage()));
handleError(ctx);
}
break;
case InstructionCodes.SASTORE:
i = operands[0];
j = operands[1];
k = operands[2];
bStringArray = (BStringArray) sf.refRegs[i];
if (bStringArray == null) {
handleNullRefError(ctx);
break;
}
try {
bStringArray.add(sf.longRegs[j], sf.stringRegs[k]);
} catch (Exception e) {
ctx.setError(BLangVMErrors.createError(ctx, e.getMessage()));
handleError(ctx);
}
break;
case InstructionCodes.BASTORE:
i = operands[0];
j = operands[1];
k = operands[2];
bBooleanArray = (BBooleanArray) sf.refRegs[i];
if (bBooleanArray == null) {
handleNullRefError(ctx);
break;
}
try {
bBooleanArray.add(sf.longRegs[j], sf.intRegs[k]);
} catch (Exception e) {
ctx.setError(BLangVMErrors.createError(ctx, e.getMessage()));
handleError(ctx);
}
break;
case InstructionCodes.LASTORE:
i = operands[0];
j = operands[1];
k = operands[2];
bBlobArray = (BBlobArray) sf.refRegs[i];
if (bBlobArray == null) {
handleNullRefError(ctx);
break;
}
try {
bBlobArray.add(sf.longRegs[j], sf.byteRegs[k]);
} catch (Exception e) {
ctx.setError(BLangVMErrors.createError(ctx, e.getMessage()));
handleError(ctx);
}
break;
case InstructionCodes.RASTORE:
i = operands[0];
j = operands[1];
k = operands[2];
bArray = (BRefValueArray) sf.refRegs[i];
if (bArray == null) {
handleNullRefError(ctx);
break;
}
try {
bArray.add(sf.longRegs[j], sf.refRegs[k]);
} catch (Exception e) {
ctx.setError(BLangVMErrors.createError(ctx, e.getMessage()));
handleError(ctx);
}
break;
case InstructionCodes.JSONASTORE:
i = operands[0];
j = operands[1];
k = operands[2];
jsonVal = (BJSON) sf.refRegs[i];
if (jsonVal == null) {
handleNullRefError(ctx);
break;
}
try {
JSONUtils.setArrayElement(jsonVal, sf.longRegs[j], (BJSON) sf.refRegs[k]);
} catch (Exception e) {
ctx.setError(BLangVMErrors.createError(ctx, e.getMessage()));
handleError(ctx);
}
break;
case InstructionCodes.IGSTORE:
// Stack reg index
i = operands[0];
// Global var index
j = operands[1];
ctx.programFile.getGlobalMemoryBlock().setIntField(j, sf.longRegs[i]);
break;
case InstructionCodes.FGSTORE:
i = operands[0];
j = operands[1];
ctx.programFile.getGlobalMemoryBlock().setFloatField(j, sf.doubleRegs[i]);
break;
case InstructionCodes.SGSTORE:
i = operands[0];
j = operands[1];
ctx.programFile.getGlobalMemoryBlock().setStringField(j, sf.stringRegs[i]);
break;
case InstructionCodes.BGSTORE:
i = operands[0];
j = operands[1];
ctx.programFile.getGlobalMemoryBlock().setBooleanField(j, sf.intRegs[i]);
break;
case InstructionCodes.LGSTORE:
i = operands[0];
j = operands[1];
ctx.programFile.getGlobalMemoryBlock().setBlobField(j, sf.byteRegs[i]);
break;
case InstructionCodes.RGSTORE:
i = operands[0];
j = operands[1];
ctx.programFile.getGlobalMemoryBlock().setRefField(j, sf.refRegs[i]);
break;
case InstructionCodes.IFIELDSTORE:
i = operands[0];
fieldIndex = operands[1];
j = operands[2];
structureType = (StructureType) sf.refRegs[i];
if (structureType == null) {
handleNullRefError(ctx);
break;
}
structureType.setIntField(fieldIndex, sf.longRegs[j]);
break;
case InstructionCodes.FFIELDSTORE:
i = operands[0];
fieldIndex = operands[1];
j = operands[2];
structureType = (StructureType) sf.refRegs[i];
if (structureType == null) {
handleNullRefError(ctx);
break;
}
structureType.setFloatField(fieldIndex, sf.doubleRegs[j]);
break;
case InstructionCodes.SFIELDSTORE:
i = operands[0];
fieldIndex = operands[1];
j = operands[2];
structureType = (StructureType) sf.refRegs[i];
if (structureType == null) {
handleNullRefError(ctx);
break;
}
structureType.setStringField(fieldIndex, sf.stringRegs[j]);
break;
case InstructionCodes.BFIELDSTORE:
i = operands[0];
fieldIndex = operands[1];
j = operands[2];
structureType = (StructureType) sf.refRegs[i];
if (structureType == null) {
handleNullRefError(ctx);
break;
}
structureType.setBooleanField(fieldIndex, sf.intRegs[j]);
break;
case InstructionCodes.LFIELDSTORE:
i = operands[0];
fieldIndex = operands[1];
j = operands[2];
structureType = (StructureType) sf.refRegs[i];
if (structureType == null) {
handleNullRefError(ctx);
break;
}
structureType.setBlobField(fieldIndex, sf.byteRegs[j]);
break;
case InstructionCodes.RFIELDSTORE:
i = operands[0];
fieldIndex = operands[1];
j = operands[2];
structureType = (StructureType) sf.refRegs[i];
if (structureType == null) {
handleNullRefError(ctx);
break;
}
structureType.setRefField(fieldIndex, sf.refRegs[j]);
break;
case InstructionCodes.MAPSTORE:
i = operands[0];
j = operands[1];
k = operands[2];
bMap = (BMap<String, BRefType>) sf.refRegs[i];
if (bMap == null) {
handleNullRefError(ctx);
break;
}
BMapType mapType = (BMapType) bMap.getType();
if (sf.refRegs[k] == null) {
bMap.put(sf.stringRegs[j], sf.refRegs[k]);
} else if (mapType.getConstrainedType() == BTypes.typeAny || mapType.getConstrainedType().equals(sf.refRegs[k].getType())) {
bMap.put(sf.stringRegs[j], sf.refRegs[k]);
} else if (sf.refRegs[k].getType().getTag() == TypeTags.STRUCT_TAG && mapType.getConstrainedType().getTag() == TypeTags.STRUCT_TAG && checkStructEquivalency((BStructType) sf.refRegs[k].getType(), (BStructType) mapType.getConstrainedType())) {
bMap.put(sf.stringRegs[j], sf.refRegs[k]);
} else {
ctx.setError(BLangVMErrors.createError(ctx, BLangExceptionHelper.getErrorMessage(RuntimeErrors.INVALID_MAP_INSERTION, mapType.getConstrainedType(), sf.refRegs[k].getType())));
handleError(ctx);
break;
}
break;
case InstructionCodes.JSONSTORE:
i = operands[0];
j = operands[1];
k = operands[2];
jsonVal = (BJSON) sf.refRegs[i];
if (jsonVal == null) {
handleNullRefError(ctx);
break;
}
JSONUtils.setElement(jsonVal, sf.stringRegs[j], (BJSON) sf.refRegs[k]);
break;
default:
throw new UnsupportedOperationException();
}
}
use of org.ballerinalang.model.values.BRefType in project ballerina by ballerina-lang.
the class BMapValueTest method testBMapOrder.
@Test
public void testBMapOrder() {
BMap<String, BRefType> map = new BMap<>();
map.put(new String("Entry1"), new BString("foo"));
map.put(new String("Entry2"), new BString("bar"));
map.put(new String("Entry3"), new BString("foobar"));
Set set = map.keySet();
String[] ar = new String[3];
Iterator itr = set.iterator();
for (int i = 0; i < set.size(); i++) {
ar[i] = itr.next().toString();
}
Assert.assertEquals(map.get(ar[0]).stringValue(), "foo");
Assert.assertEquals(map.get(ar[1]).stringValue(), "bar");
Assert.assertEquals(map.get(ar[2]).stringValue(), "foobar");
}
Aggregations