Exemplo n.º 1
0
ERRORCODE ObjectLayoutRecord::WriteData(StorageDevicePtr device)
{
	SHORT count = elements.count();
	ERRORCODE error;

	if ((error = device->write(&record, sizeof(record))) == ERRORCODE_None
			&& (error = device->write_cstring(m_csName)) == ERRORCODE_None
			&& (error = device->write(&count, sizeof(count))) == ERRORCODE_None)
	{
		LayoutElementPtr element;

	/* Write all the elements. */

		for (element = (LayoutElementPtr)elements.first_element();
							element != NULL;
							element = (LayoutElementPtr)element->next_element())
		{
			if ((error = element->write(device)) != ERRORCODE_None)
			{
				break;
			}
		}
	}
	return error;
}
Exemplo n.º 2
0
ERRORCODE SplitArray::write_new_data(StorageDevicePtr device)
{
    ERRORCODE error = ERRORCODE_None;
    SHORT nStoredElemSize = SizeDifference();

    if ((error = device->write(&nStoredElemSize, sizeof (nStoredElemSize))) != ERRORCODE_None)
    {
        return error;
    }

    Array NewArray(nStoredElemSize);
    if ((error = NewArray.set_array_size(count())) != ERRORCODE_None)
    {
        return error;
    }

    LPBYTE lpSrcData, lpDestData;
    lpSrcData = (LPBYTE)data + OldSize();
    lpDestData = (LPBYTE)NewArray.get_element(0);

    for (int i = 0; i < count(); i++)
    {
        memcpy(lpDestData, lpSrcData, nStoredElemSize);
        lpDestData += nStoredElemSize;
        lpSrcData += NewSize();
    }

    error = NewArray.write(device);
    return error;
}
Exemplo n.º 3
0
ERRORCODE Array::write(StorageDevicePtr device)
{
	ERRORCODE error;

/* Write the element count. */

	if ((error = device->write(&element_count, sizeof(element_count))) != ERRORCODE_None)
	{
		return error;
	}

/* Write the data. */

	if (element_count != 0)
	{
		error = device->write(data, array_byte_size());
	}

	return error;
}
Exemplo n.º 4
0
ERRORCODE LayoutElement::write(StorageDevicePtr device)
{
	return device->write(&record, sizeof(record));
}
Exemplo n.º 5
0
ERRORCODE CTIFFInfo::write(StorageDevicePtr device)
{
	return device->write(&m_Info, sizeof(m_Info));
}