Example #1
0
bool CFileUtil::readVariant(IFileObject* file, CVariant& value)
{
	EVariantType type = VT_NONE;
	if ( !file->read(&type, sizeof(uint8)) ) return false;

	switch(type)
	{
		case VT_NONE:
		break;
		case VT_BOOLEAN:
			{
				bool readbool;
				if ( !file->read(&readbool, sizeof(bool)) ) return false;
				value.set(readbool);
			}
		break;
		case VT_UINT:
			{
				uint64 readuint;
				if ( !file->read(&readuint, sizeof(uint64)) ) return false;
				value.set(readuint);
			}
		break;
		case VT_INT:
			{
				int64 readint;
				if ( !file->read(&readint, sizeof(int64)) ) return false;
				value.set(readint);
			}
		break;
		case VT_DOUBLE:
			{
				double readdouble;
				if ( !file->read(&readdouble, sizeof(double)) ) return false;
				value.set(readdouble);
			}
		break;
		case VT_STRING:
			{
				CString readstr;
				if ( !CFileUtil::readString(file, readstr) ) return false;
				value.set(readstr);
			}
		break;
		default:
		return false;
	}

	return true;
}