コード例 #1
0
bool KeyedUnarchiver::UnarchiveFile(File *file)
{
	while(!file->IsEof())
	{
		VariantType key;
		key.Read(file);
		VariantType value;
		value.Read(file);
		objectMap[key.AsString()] = value;
	}
	return true;
}
コード例 #2
0
bool KeyedArchive::Load(File *archive)
{
	while(!archive->IsEof())
	{
		VariantType key;
		key.Read(archive);
		if (archive->IsEof())break;
		VariantType value;
		value.Read(archive);
		objectMap[key.AsString()] = value;
	}
	return true;
}
コード例 #3
0
ファイル: KeyedArchive.cpp プロジェクト: galek/dava.framework
bool KeyedArchive::Load(File *archive)
{
    char header[2];
    archive->Read(header, 2);
    if ((header[0] != 'K') || (header[1] != 'A'))
    {
        archive->Seek(0,File::SEEK_FROM_START);
        while(!archive->IsEof())
        {
            VariantType key;
            key.Read(archive);
            if (archive->IsEof())break;
            VariantType *value = new VariantType();
            value->Read(archive);
            objectMap[key.AsString()] = value;
        }
        return true;
    }
    
    uint16 version = 0;
    archive->Read(&version, 2);
    if (version != 1)
    {
        Logger::Error("[KeyedArchive] error loading keyed archive, because version is incorrect");
        return false;
    }
    uint32 numberOfItems = 0;
    archive->Read(&numberOfItems, 4);
    
    for (uint32 item = 0; item < numberOfItems; ++item)
	{
		VariantType key;
		key.Read(archive);
		if (archive->IsEof())break;
        VariantType *value = new VariantType();
        value->Read(archive);
		objectMap[key.AsString()] = value;
	}
	return true;
}