.. _program_listing_file_src_ifcparse_IfcSpfStream.h: Program Listing for File IfcSpfStream.h ======================================= |exhale_lsh| :ref:`Return to documentation for file ` (``src/ifcparse/IfcSpfStream.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp /******************************************************************************** * * * This file is part of IfcOpenShell. * * * * IfcOpenShell is free software: you can redistribute it and/or modify * * it under the terms of the Lesser GNU General Public License as published by * * the Free Software Foundation, either version 3.0 of the License, or * * (at your option) any later version. * * * * IfcOpenShell is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * Lesser GNU General Public License for more details. * * * * You should have received a copy of the Lesser GNU General Public License * * along with this program. If not, see . * * * ********************************************************************************/ /********************************************************************************* * * * Reads a file and provides functions to access its * * contents randomly and character by character * * * ********************************************************************************/ #ifndef IFCSPFSTREAM_H #define IFCSPFSTREAM_H #include #include #ifdef USE_MMAP #include #endif #include "ifc_parse_api.h" namespace IfcParse { class IFC_PARSE_API IfcSpfStream { private: #ifdef USE_MMAP boost::iostreams::mapped_file_source mfs; #endif FILE* stream; const char* buffer; unsigned int ptr; unsigned int len; public: bool valid; bool eof; unsigned int size; #ifdef USE_MMAP IfcSpfStream(const std::string& fn, bool mmap=false); #else IfcSpfStream(const std::string& fn); #endif IfcSpfStream(std::istream& f, int len); IfcSpfStream(void* data, int len); ~IfcSpfStream(); char Peek(); char Read(unsigned int offset); void Inc(); void Close(); void Seek(unsigned int offset); unsigned int Tell(); bool is_eof_at(unsigned int); void increment_at(unsigned int&); char peek_at(unsigned int); }; } #endif