NAVTOR SDK  v.3.0
Software Development Kit for fast and efficient development of ECDIS, ECS and generic marine applications
stream_interface.h
Go to the documentation of this file.
1 #ifndef SDK_BASE_SDK_STREAM_INTERFACE_H_
11 #define SDK_BASE_SDK_STREAM_INTERFACE_H_
12 
13 #include <base/inc/base_types.h>
14 #include <base/inc/sdk_ref_ptr.h>
17 
18 namespace sdk {
19 namespace base {
20 
21 FWD_DECL_INTERFACE(ISDKStream);
22 typedef SDKRefPtr<ISDKStream> SDKStreamSP;
23 
24 static const wchar_t* kSDKStreamProperty_Size = L"size";
25 static const wchar_t* kSDKStreamProperty_LastWriteTime = L"last write time";
26 
27 static const wchar_t* kSDKStreamProperty_ReclaimMemoryOnSetSize =
28  L"reclaim memory on set size";
29 
32 class ISDKStream : public ISDKComponent
33 {
34 public:
36  enum SeekOrigin
37  {
38  kBegin = 0,
39  kCurrent = 1,
40  kEnd = 2,
41  };
42 
43  typedef SDKUInt64 DataSize;
44  typedef SDKInt64 SeekSize;
45  typedef SDKUInt64 Position;
46 
48  virtual SDKResult SDK_CALLTYPE Read(void* buffer, const DataSize& size,
49  DataSize* read_size) throw() = 0;
50 
52  virtual SDKResult SDK_CALLTYPE Write(const void* buffer,
53  const DataSize& size, DataSize* written_size) throw() = 0;
54 
56  virtual SDKResult SDK_CALLTYPE Seek(const SeekOrigin& origin,
57  const SeekSize& seek_size, Position* new_position) throw() = 0;
58 
60  virtual SDKResult SDK_CALLTYPE SetSize(const DataSize& new_size) throw() = 0;
61 
63  virtual SDKResult SDK_CALLTYPE Flush() throw() = 0;
64 
66  virtual SDKResult SDK_CALLTYPE Clone(SDKStreamSP& cloned_stream) throw() = 0;
67 
70  virtual SDKResult SDK_CALLTYPE CopyTo(const SDKStreamSP& dest_stream,
71  const DataSize& size, DataSize* read_size,
72  DataSize* written_size) throw() = 0;
73 
74  SDK_IMPLEMENT_IID(ISDKStream)
75  SDK_END_INTERFACE(ISDKStream)
76 };
77 SDK_DECLARE_IID(ISDKStream)
78 
79 } // namespace base
80 } // namespace sdk
81 
82 #endif // SDK_BASE_SDK_STREAM_INTERFACE_H_
sdk::base::ISDKStream::Clone
virtual SDKResult SDK_CALLTYPE Clone(SDKStreamSP &cloned_stream)=0
Create a clone of the stream object.
base_types.h
SDK base types.
sdk_ref_ptr.h
Interfaces wrapper with reference count control.
sdk::base::ISDKStream::kBegin
@ kBegin
Seek from stream begin.
Definition: stream_interface.h:38
sdk::base::ISDKStream
Generic data stream interface.
Definition: stream_interface.h:32
sdk::base::ISDKStream::kEnd
@ kEnd
Seek from stream end.
Definition: stream_interface.h:40
properties_interface.h
Object generic properties interface.
sdk::base::ISDKStream::Write
virtual SDKResult SDK_CALLTYPE Write(const void *buffer, const DataSize &size, DataSize *written_size)=0
Writes the requested amount of data from buffer to stream.
sdk::base::ISDKStream::SeekSize
SDKInt64 SeekSize
Describes the seek position.
Definition: stream_interface.h:44
SDKResult
SDKInt32 SDKResult
Type of all error or return codes which SDK functions can end with.
Definition: sdk_results.h:17
sdk::base::ISDKStream::Flush
virtual SDKResult SDK_CALLTYPE Flush()=0
Writes any buffered data to the underlying device.
SDKRefPtr
A smart pointer class for managing SDK components interface pointers.
Definition: sdk_ref_ptr.h:23
sdk::base::ISDKStream::Seek
virtual SDKResult SDK_CALLTYPE Seek(const SeekOrigin &origin, const SeekSize &seek_size, Position *new_position)=0
Sets the current position within the stream.
sdk::base::ISDKStream::CopyTo
virtual SDKResult SDK_CALLTYPE CopyTo(const SDKStreamSP &dest_stream, const DataSize &size, DataSize *read_size, DataSize *written_size)=0
Copies the requested amount of data from one stream to another stream.
sdk_component_interface.h
Common base SDK interfaces.
sdk::base::ISDKStream::SetSize
virtual SDKResult SDK_CALLTYPE SetSize(const DataSize &new_size)=0
Sets a new size for the stream.
ISDKComponent
Base interface for all SDK interfaces.
Definition: sdk_component_interface.h:41
sdk::base::ISDKStream::SeekOrigin
SeekOrigin
Seek origin for stream seek operations.
Definition: stream_interface.h:36
sdk::base::ISDKStream::kCurrent
@ kCurrent
Seek from current position.
Definition: stream_interface.h:39
sdk::base::ISDKStream::Position
SDKUInt64 Position
Describes the current position.
Definition: stream_interface.h:45
sdk::base::ISDKStream::DataSize
SDKUInt64 DataSize
Describes the amount of data.
Definition: stream_interface.h:43
sdk::base::ISDKStream::Read
virtual SDKResult SDK_CALLTYPE Read(void *buffer, const DataSize &size, DataSize *read_size)=0
Reads the requested amount of data from stream to buffer.
FWD_DECL_INTERFACE
FWD_DECL_INTERFACE(ILWEParserWrapper)
Provides a wrapper around the message parser to get, add or remove the.