IInputByteStream: различия между версиями
Перейти к навигации
Перейти к поиску
Ninok2801 (обсуждение | вклад) |
|||
Строка 2: | Строка 2: | ||
{{IInputByteStream methods|Собственные методы.}} | {{IInputByteStream methods|Собственные методы.}} | ||
===Пример использования.=== | |||
Ниже приведен пример функции, копирующей данные из входного потока в выходной. | |||
<source lang=cpp> | |||
bool copy(IInputByteStream* pFrom, IOutputByteStream* pTo) | |||
{ | |||
const std::size_t WINDOW_SIZE = 0x1000; | |||
std::uint8_t buf[WINDOW_SIZE]; | |||
std::uint64_t cbRead = 1; | |||
while(cbRead != 0) | |||
{ | |||
cbRead = WINDOW_SIZE; | |||
std::int32_t nError = pFrom->Read(buf, std::addressof(cbRead)); | |||
if (nError < 0) | |||
return false; //error | |||
nError = pTo->Write(buf, cbRead); | |||
if (nError < 0) | |||
return false; //error | |||
} | |||
return true; | |||
} | |||
</source> |
Версия 17:51, 21 марта 2017
Интерфейс реализации входного потока байт.
Методы, наследуемые от InterfaceBase.
Release | Закрывает текущий экземпляр, реализующий интерфейс. |
Методы, наследуемые от IStream.
IsInterfaceAvailable | Проверяет поддержку интерфейса, заданного идентификатором, текущей реализацией. |
RepresentAs | Создает представление реализации в виде интерфейса, заданного идентификатором. |
AddRef | Инкрементирует счетчик ссылок на реализацию потока. |
Методы, наследуемые от IInputStream.
Read | Считывает из потока один элемент. |
Собственные методы.
ReadArray | Считывает из потока массив байт. |
Пример использования.
Ниже приведен пример функции, копирующей данные из входного потока в выходной.
bool copy(IInputByteStream* pFrom, IOutputByteStream* pTo)
{
const std::size_t WINDOW_SIZE = 0x1000;
std::uint8_t buf[WINDOW_SIZE];
std::uint64_t cbRead = 1;
while(cbRead != 0)
{
cbRead = WINDOW_SIZE;
std::int32_t nError = pFrom->Read(buf, std::addressof(cbRead));
if (nError < 0)
return false; //error
nError = pTo->Write(buf, cbRead);
if (nError < 0)
return false; //error
}
return true;
}