示例#1
0
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);
}
示例#2
0
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;
}