in src/cas/xmideserializer_handler.cpp [1075:1121]
int XmiDeserializerHandler::createArray( lowlevel::TyFSType typeCode,
vector<string>& stringList,
int xmiId) {
int arrayAddr;
switch (typeCode) {
case internal::gs_tyBooleanArrayType:
case internal::gs_tyByteArrayType:
case internal::gs_tyIntArrayType:
case internal::gs_tyFloatArrayType:
case internal::gs_tyLongArrayType:
case internal::gs_tyShortArrayType:
case internal::gs_tyDoubleArrayType:
case internal::gs_tyStringArrayType:
case internal::gs_tyFSArrayType: {
//cout << "createArray() type " << typeCode << " size " << stringList.size() << endl;
arrayAddr = iv_cas->getHeap()->createArrayFS(typeCode, stringList.size());
//cout << "created array FS now adding element values at address " << arrayAddr << endl;
for (size_t i=0; i < stringList.size();i++) {
addArrayElement(arrayAddr, typeCode,i,stringList.at(i));
}
break;
}
default: {
cerr << "Invalid Array type" << endl;
ErrorInfo errInfo;
errInfo.setErrorId((TyErrorId)UIMA_ERR_RESOURCE_CORRUPTED);
ErrorMessage msg(UIMA_MSG_ID_EXC_XML_SAXPARSE_FATALERROR);
assertWithMsg(sizeof(XMLCh) == sizeof(UChar), "Port required");
msg.addParam("createArray failed.");
stringstream str;
str << "xmiId=" << xmiId << " typecode= " << typeCode << endl;
msg.addParam(str.str().c_str());
errInfo.setMessage(msg);
errInfo.setSeverity(ErrorInfo::unrecoverable);
ExcIllFormedInputError exc(errInfo);
throw exc;
break;
}
}
//cout << "createArray " << xmiId << " addr=" << arrayAddr << endl;
deserializedFsAddrs.push_back(arrayAddr);
if (xmiId > 0) {
sharedData->addIdMapping(arrayAddr, xmiId);
}
return arrayAddr;
}