Ejemplo n.º 1
0
	bool ConvertItem(ReaderItem *Reader, WriterItem *Writer)
	{
		bool Status = false;

		if (Reader && Writer)
		{
			// convert object across
			if (Prog)
			{
				Prog->Value(Prog->Value() + Reader->Len);
				LgiYield();
			}

			Converted++;
			Status = true;

			// do children
			for (StorageItem *ri = Reader->Store->GetChild(); ri;
				ri = ri->GetNext())
			{
				ReaderItem *Reader1 = new ReaderItem(ri);
				if (Reader1 &&
					Reader1->Len > 0)
				{
					WriterItem *Writer2 = new WriterItem(Reader1);
					StorageItem *wi = Writer->Store->CreateSub(Writer2);
					if (Writer2 && wi)
					{
						wi->Object = Writer2;
						Writer2->Store = wi;

						Status &= ConvertItem(Reader1, Writer2);

						Writer2->Store->Object = 0;
						Writer2->Store = 0;
						DeleteObj(Writer2);
					}

					Reader1->Store->Object = 0;
					Reader1->Store = 0;
					DeleteObj(Reader1);
				}
			}
		}

		return Status;
	}