// --------------------------------------------------------------------------
	bool StructuredDataStorage::writeToFile(FilePtr& file, int objID, bool sizeStored)	{
		DTypePtr pd = getDataForObject(objID);
		
		if (!pd.isNull()) {
			uint32_t size = pd->size();
			
			// Write the size
			if (sizeStored)
				file->writeElem(&size, sizeof(uint32_t));
			
			// write the data itself
			pd->serialize(file);
			
			return true;
		}
		
		return false;
	}
//------------------------------------------------------
void DatabaseService::save(const std::string &filename, uint32_t saveMask) {
    // just prepare the progress and delegate to the broadcast
    FilePtr fp = FilePtr(new StdFile(filename, File::FILE_RW));

    FileGroupPtr tgtdb = FileGroupPtr(new DarkFileGroup());

    LOG_DEBUG("DatabaseService::save - Save to file %s, mask %X",
              filename.c_str(), saveMask);

    mLoadingStatus.reset();
    mLoadingStatus.totalCoarse += mListeners.size();

    broadcastOnDBSave(tgtdb, saveMask);

    // And write the saveMask as FILE_TYPE
    FilePtr fpf = tgtdb->createFile(
        "FILE_TYPE", 0,
        1); // The version is fixed, really. Nothing to invent here
    fpf->writeElem(&saveMask, sizeof(uint32_t));

    // And Write!
    tgtdb->write(fp);
}