Шаблон:CreateFileAsBinaryDataStorage example: различия между версиями

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
 
Строка 1: Строка 1:
<source lang='cpp'>
<source lang='cpp'>
char l_filename[] = "./somefile";
char l_filename[] = "./somefile";
std::size_t cb_filename = sizeof(l_filename) - 1 /*term. 0*/;
std::size_t cb_filename = sizeof(l_filename) - 1 /*term. 0*/;


IIOBinaryData* pIO; //uninitialized pointer
IContiguousDataStorage* pIO = nullptr;
{
IDataStorage* pStorage = nullptr;
  IBinaryDataBase* pStorage; //uninitialized pointer
return_code_t err = CreateFileAsBinaryDataStorage(l_filename, cb_filename, FileRead | FileWrite, FileCreateAlways, &pStorage);
  int32_t err = CreateFileAsBinaryDataStorage(l_filename, cb_filename, FileRead | FileWrite, FileCreateAlways, std::addressof(pStorage));
if (err < 0)
 
goto cleanup; //failure of CreateFileAsBinaryDataStorage
  if (err < 0)
err = pStorage->IsInterfaceAvailable(ContiguousDataStorageType);
      return -1; //failure
if (err < 0)
  err = pStorage->IsInterfaceAvailable(IOBinaryDataType);
goto cleanup; //failure of IsInterfaceAvailable
  if (err < 0)
err = pStorage->RepresentAs(ContiguousDataStorageType, (void**) &pIO);
  {
if (err < 0)
      pStorage->Release();
goto cleanup; //failure of RepresentAs
      return -1; //failure of IsInterfaceAvailable
  }
//access the file via pIO...
  if (err == 1)
  {
cleanup:
      pStorage->Release();
if (pStorage)
      return 0; //Interface is not available
pStrorage->Release();
  }
if (pIO)
  err = pStorage->RepresentAs(IOBinaryDataType, (void**) std::addressof(pIO));
pIO->Release();
  if (err < 0)
  {
      pStorage->Release();
      return -1; //failure of RepresentAs
  }
  pStorage->Release();
}
//access file via pIO...
 
pIO->Release();
</source>
</source>

Текущая версия на 12:32, 14 августа 2019

	char l_filename[] = "./somefile";
	std::size_t cb_filename = sizeof(l_filename) - 1 /*term. 0*/;

	IContiguousDataStorage* pIO = nullptr;
	IDataStorage* pStorage = nullptr;
	return_code_t err = CreateFileAsBinaryDataStorage(l_filename, cb_filename, FileRead | FileWrite, FileCreateAlways, &pStorage);
	if (err < 0)
		goto cleanup; //failure of CreateFileAsBinaryDataStorage
	err = pStorage->IsInterfaceAvailable(ContiguousDataStorageType);
	if (err < 0)
		goto cleanup; //failure of IsInterfaceAvailable
	err = pStorage->RepresentAs(ContiguousDataStorageType, (void**) &pIO);
	if (err < 0)
		goto cleanup; //failure of RepresentAs
	
	//access the file via pIO...
	
cleanup:
	if (pStorage)
		pStrorage->Release();
	if (pIO)
		pIO->Release();