in src/cas/xmiwriter.cpp [346:401]
void XmiWriter::writeFeatureValue(ostream & os, FeatureStructure const & fs, Feature const & f) {
assert( fs.isValid() );
assert( f.isValid() );
Type t;
f.getRangeType(t);
assert( t.isValid() );
if ( t == iv_stringType || t.isStringSubType() ) {
if (!fs.isUntouchedFSValue(f) ) {
UnicodeStringRef ref = fs.getStringValue(f);
if (ref.getBuffer() != NULL) {
icu::UnicodeString us;
normalize( ref, us );
os << " " << f.getName() << "=\"";
os << us << "\"";
}
}
} else if (t == iv_integerType) {
os << " " << f.getName() << "=\"";
os << fs.getIntValue(f) << "\"";
} else if (t == iv_floatType) {
os << " " << f.getName() << "=\"";
os << fs.getFloatValue(f) << "\"";
} else if (t == iv_byteType) {
os << " " << f.getName() << "=\"";
int val = fs.getByteValue(f);
os << val << "\"";
} else if (t == iv_booleanType) {
os << " " << f.getName() << "=\"";
if (fs.getBooleanValue(f))
os << "true" << "\"";
else
os << "false" << "\"";
} else if (t == iv_shortType) {
os << " " << f.getName() << "=\"";
os << fs.getShortValue(f) << "\"";
} else if (t == iv_longType) {
os << " " << f.getName() << "=\"";
os << fs.getLongValue(f) << "\"";
} else if (t == iv_doubleType) {
os << " " << f.getName() << "=\"";
stringstream s;
s << fs.getDoubleValue(f);
os << s.str() << "\"";
} else {
FeatureStructure referencedFS = fs.getFSValue(f);
uima::lowlevel::TyFS lolFS = uima::internal::FSPromoter::demoteFS(referencedFS);
if (lolFS != uima::lowlevel::FSHeap::INVALID_FS) {
os << " " ;
os << f.getName() << "=\"";
//ptrdiff_t val = uima::internal::CASImpl::promoteCAS(iv_cas).getHeap().getUniqueID(lolFS);
int val = getXmiId(lolFS);
os << val << "\"";
}
}
}