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

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
(Новая страница: «<source lang='cpp'> char l_filename[] = "./somefile"; std::size_t cb_filename = sizeof(l_filename) - 1 →‎term. 0: ; IIOBinaryData* pIO; //uninitialized pointer {…»)
 
 
(не показаны 2 промежуточные версии этого же участника)
Строка 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);
      return -1; //failure of IsInterfaceAvailable
if (err < 0)
  if (err == 1)
goto cleanup; //failure of RepresentAs
      return 0; //Interface is not available
  err = pStorage->RepresentAs(IOBinaryDataType, (void**) std::addressof(pIO));
//access the file via pIO...
  if (err < 0)
      return -1; //failure of RepresentAs
cleanup:
}
if (pStorage)
//access file via pIO...
pStrorage->Release();
if (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();