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

	switch(type)
	{
		case VT_NONE:
		break;
		case VT_BOOLEAN:
			{
				bool writebool;
				if ( !value.get(writebool) || !file->write(&writebool, sizeof(bool)) ) return false;
			}
		break;
		case VT_UINT:
			{
				uint64 writeuint;
				if ( !value.get(writeuint) || !file->write(&writeuint, sizeof(uint64)) ) return false;
			}
		break;
		case VT_INT:
			{
				int64 writeint;
				if ( !value.get(writeint) || !file->write(&writeint, sizeof(int64)) ) return false;
			}
		break;
		case VT_DOUBLE:
			{
				double writedouble;
				if ( !value.get(writedouble) || !file->write(&writedouble, sizeof(double)) ) return false;
			}
		break;
		case VT_STRING:
			{
				CString writestr;
				if ( !value.get(writestr) || !CFileUtil::writeString(file, writestr) ) return false;
			}
		break;
		default:
		return false;
	}

	return true;
}