void GFF3Struct::getLocString(const Common::UString &field, LocString &str) const { const Field *f = getField(field); if (!f) return; if (f->type != kFieldTypeLocString) throw Common::Exception("GFF3: Field is not of a localized string type"); Common::SeekableReadStream &data = getData(*f); const uint32 size = data.readUint32LE(); Common::SeekableSubReadStream locStringData(&data, data.pos(), data.pos() + size); str.readLocString(locStringData); }
bool GFF3Struct::getLocString(const Common::UString &field, LocString &str) const { const Field *f = getField(field); if (!f || (f->type != kFieldTypeLocString)) return false; LocString locString; try { Common::SeekableReadStream &data = getData(*f); const uint32 size = data.readUint32LE(); Common::SeekableSubReadStream locStringData(&data, data.pos(), data.pos() + size); locString.readLocString(locStringData); } catch (...) { return false; } str.swap(locString); return true; }