74void zipRead(std::istream & is, uint32_t & value)
 
   76    unsigned char buf[
sizeof(value)];
 
   78    if(!is.read(
reinterpret_cast<char *
>(buf), 
sizeof(value)))
 
   80        throw IOException(
"an I/O error while reading zip archive data from file.");
 
   82    if(is.gcount() != 
sizeof(value))
 
   84        throw IOException(
"EOF or an I/O error while reading zip archive data from file."); 
 
 
   95void zipRead(std::istream & is, uint16_t & value)
 
   97    unsigned char buf[
sizeof(value)];
 
   99    if(!is.read(
reinterpret_cast<char *
>(buf), 
sizeof(value)))
 
  101        throw IOException(
"an I/O error while reading zip archive data from file.");
 
  103    if(is.gcount() != 
sizeof(value))
 
  105        throw IOException(
"EOF or an I/O error while reading zip archive data from file."); 
 
  109    value = (buf[0] <<  0)
 
 
  114void zipRead(std::istream & is, uint8_t & value)
 
  116    unsigned char buf[
sizeof(value)];
 
  118    if(!is.read(
reinterpret_cast<char *
>(buf), 
sizeof(value)))
 
  120        throw IOException(
"an I/O error while reading zip archive data from file.");
 
  122    if(is.gcount() != 
sizeof(value))
 
  124        throw IOException(
"EOF or an I/O error while reading zip archive data from file."); 
 
 
  134    buffer.resize(count);
 
  137        if(!is.read(
reinterpret_cast<char *
>(&buffer[0]), count))
 
  139            throw IOException(
"an I/O error while reading zip archive data from file.");
 
  141        if(is.gcount() != count)
 
  143            throw IOException(
"EOF or an I/O error while reading zip archive data from file."); 
 
 
  149void zipRead(std::istream & is, std::string & str, ssize_t 
const count)
 
  154        if(!is.read(
reinterpret_cast<char *
>(&str[0]), count))
 
  156            throw IOException(
"an I/O error while reading zip archive data from file.");
 
  158        if(is.gcount() != count)
 
  160            throw IOException(
"EOF or an I/O error while reading zip archive data from file."); 
 
 
  168    if(pos + 
sizeof(value) > is.size())
 
  170        throw IOException(
"EOF reached while reading zip archive data from file.");
 
  173    value = (is[pos + 0] <<  0)
 
  175          | (is[pos + 2] << 16)
 
  176          | (is[pos + 3] << 24);
 
  178    pos += 
sizeof(value);
 
 
  184    if(pos + 
sizeof(value) > is.size())
 
  186        throw IOException(
"EOF reached while reading zip archive data from file.");
 
  189    value = (is[pos + 0] <<  0)
 
  190          | (is[pos + 1] <<  8);
 
  192    pos += 
sizeof(value);
 
 
  198    if(pos + 
sizeof(value) > is.size())
 
  200        throw IOException(
"EOF reached while reading zip archive data from file.");
 
  205    pos += 
sizeof(value);
 
 
  211    if(pos + count > is.size())
 
  213        throw IOException(
"EOF reached while reading zip archive data from file.");
 
  217    buffer.insert(buffer.begin(), is.begin() + pos, is.begin() + pos + count);
 
 
  223void zipRead(
buffer_t const & is, 
size_t & pos, std::string & str, ssize_t 
const count)
 
  225    if(pos + count > is.size())
 
  227        throw IOException(
"EOF reached while reading zip archive data from file.");
 
  231    str.insert(str.begin(), is.begin() + pos, is.begin() + pos + count);
 
 
  237void zipWrite(std::ostream & os, uint32_t 
const & value)
 
  239    char buf[
sizeof(value)];
 
  243    buf[2] = value >> 16;
 
  244    buf[3] = value >> 24;
 
  246    if(!os.write(buf, 
sizeof(value)))
 
  248        throw IOException(
"an I/O error occurred while writing to a zip archive file.");
 
 
  253void zipWrite(std::ostream & os, uint16_t 
const & value)
 
  255    char buf[
sizeof(value)];
 
  260    if(!os.write(buf, 
sizeof(value)))
 
  262        throw IOException(
"an I/O error occurred while writing to a zip archive file.");
 
 
  267void zipWrite(std::ostream & os, uint8_t 
const & value)
 
  269    char buf[
sizeof(value)];
 
  273    if(!os.write(buf, 
sizeof(value)))
 
  275        throw IOException(
"an I/O error occurred while writing to a zip archive file.");
 
 
  282    if(!os.write(
reinterpret_cast<char const *
>(&buffer[0]), buffer.size()))
 
  284        throw IOException(
"an I/O error occurred while writing to a zip archive file.");
 
 
  289void zipWrite(std::ostream & os, std::string 
const & str)
 
  291    if(!os.write(&str[0], str.length()))
 
  293        throw IOException(
"an I/O error occurred while writing to a zip archive file.");
 
 
An IOException is used to signal an I/O error.
The zipios namespace includes the Zipios library definitions.
void zipRead(std::istream &is, uint32_t &value)
std::vector< unsigned char > buffer_t
A buffer of characters.
char const g_separator
The character used as the filename separator.
void zipWrite(std::ostream &os, uint32_t const &value)
Various functions used throughout the library.
Various exceptions used throughout the Zipios library, all based on zipios::Exception.