source: trunk/nv/io/c_stream.hh @ 508

Last change on this file since 508 was 508, checked in by epyon, 9 years ago
  • nv::engine upgrades
  • default_resource_manager implementation
File size: 1.3 KB
RevLine 
[395]1// Copyright (C) 2012-2015 ChaosForge Ltd
[124]2// http://chaosforge.org/
3//
[395]4// This file is part of Nova libraries.
5// For conditions of distribution and use, see copying.txt file in root folder.
6
[124]7/**
8 * @file c_stream.hh
9 * @author Kornel Kisielewicz epyon@chaosforge.org
10 * @brief stream implementation via c f* functions
11 */
12
[395]13#ifndef NV_IO_C_STREAM_HH
14#define NV_IO_C_STREAM_HH
[124]15
[395]16#include <nv/common.hh>
[422]17#include <nv/stl/stream.hh>
[508]18#include <nv/stl/string.hh>
[124]19
20namespace nv
21{
22        class c_file_system;
23
24        class c_stream : public stream
25        {
26                friend class c_file_system;
27        protected:
28                c_stream();
[438]29                // TODO: const char* is prone to deletion - don't store it, or store differently!
[124]30                c_stream( void* pfile, const char* filename );
31        public:
32                virtual ~c_stream();
33                virtual size_t read( void* buffer, size_t size, size_t count );
[279]34                virtual size_t write( const void* buffer, size_t size, size_t count );
[442]35                virtual bool gets( char* buffer, size_t max_count );
[198]36                virtual bool seek( long offset, origin orig );
[484]37                virtual bool eof();
[124]38                virtual size_t tell();
39                virtual size_t size();
40                virtual void flush();
41        private:
[508]42                void*        m_file;      //!< FILE* structure, masked
43                const_string m_file_name; //!< File name
44                size_t       m_file_size; //!< Cached file size
[124]45        };
46
47} // namespace nv
48
[395]49#endif // NV_IO_C_STREAM_HH
Note: See TracBrowser for help on using the repository browser.