• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*****************************************************************************/
2 // Copyright 2006-2007 Adobe Systems Incorporated
3 // All Rights Reserved.
4 //
5 // NOTICE:  Adobe permits you to use, modify, and distribute this file in
6 // accordance with the terms of the Adobe license agreement accompanying it.
7 /*****************************************************************************/
8 
9 /* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_file_stream.h#1 $ */
10 /* $DateTime: 2012/05/30 13:28:51 $ */
11 /* $Change: 832332 $ */
12 /* $Author: tknoll $ */
13 
14 /** \file
15  * Simple, portable, file read/write support.
16  */
17 
18 /*****************************************************************************/
19 
20 #ifndef __dng_file_stream__
21 #define __dng_file_stream__
22 
23 /*****************************************************************************/
24 
25 #include "dng_stream.h"
26 
27 /*****************************************************************************/
28 
29 /// \brief A stream to/from a disk file. See dng_stream for read/write interface
30 
31 class dng_file_stream: public dng_stream
32 	{
33 
34 	private:
35 
36 		FILE *fFile;
37 
38 	public:
39 
40 		/// Open a stream on a file.
41 		/// \param filename Pathname in platform synax.
42 		/// \param output Set to true if writing, false otherwise.
43 		/// \param bufferSize size of internal buffer to use. Defaults to 4k.
44 
45 		dng_file_stream (const char *filename,
46 						 bool output = false,
47 						 uint32 bufferSize = kDefaultBufferSize);
48 
49 		virtual ~dng_file_stream ();
50 
51 	protected:
52 
53 		virtual uint64 DoGetLength ();
54 
55 		virtual void DoRead (void *data,
56 							 uint32 count,
57 							 uint64 offset);
58 
59 		virtual void DoWrite (const void *data,
60 							  uint32 count,
61 							  uint64 offset);
62 
63 	private:
64 
65 		// Hidden copy constructor and assignment operator.
66 
67 		dng_file_stream (const dng_file_stream &stream);
68 
69 		dng_file_stream & operator= (const dng_file_stream &stream);
70 
71 	};
72 
73 /*****************************************************************************/
74 
75 #endif
76 
77 /*****************************************************************************/
78