NAVTOR SDK  v.3.0
Software Development Kit for fast and efficient development of ECDIS, ECS and generic marine applications
s63_products_file_interface.h
1 
11 #ifndef SDK_S63_PRODUCTS_FILE_INTERFACE_H_
12 #define SDK_S63_PRODUCTS_FILE_INTERFACE_H_
13 #pragma once
14 
15 #include <base/inc/platform.h>
16 #include <base/inc/sdk_component_base.h>
18 #include <base/inc/interfaces/collection/collection_interface.h>
20 
21 namespace sdk {
22 namespace s63 {
23 
24 FWD_DECL_INTERFACE(IS63ProductsFileRecord);
25 FWD_DECL_INTERFACE(IS63ProductsFileRecordsEnum);
26 FWD_DECL_INTERFACE(IS63ProductsFile);
27 
32 {
36 
54 
57 typedef enum ProductsFileVersion
58 {
63 
67 {
72 
76 {
78 
80 
82 
84 
86 
90 {
91 public:
93  virtual SDKResult SDK_CALLTYPE GetFieldValue(
94  const ProductsFileRecordFields& field_id, SDKAny& field_value) const throw() = 0;
95 
96  template< typename T >
97  SDKResult GetFieldValueT(
98  const ProductsFileRecordFields& field_id, T& out) const throw()
99  {
100  try
101  {
102  SDK_NAMESPACE::ScopedAny value;
103  SDKResult res = GetFieldValue(field_id, value);
104  if (SDK_FAILED(res))
105  return res;
106  if (ANY_IS_EMPTY(&value))
107  return kSDKResult_NotExist;
108  return value.GetAs< T >(out)
110  }
111  catch (...) {}
112 
114  }
115 
117  SDK_IMPLEMENT_IID(IS63ProductsFileRecord)
118  SDK_END_INTERFACE(IS63ProductsFileRecord)
119 };
120 SDK_DECLARE_IID(IS63ProductsFileRecord)
121 
125 {
126 public:
128  virtual SDKResult SDK_CALLTYPE Reset() throw() = 0;
130  virtual SDKResult SDK_CALLTYPE Next(
131  IS63ProductsFileRecordSP& products_file_record) const throw() = 0;
132 
133  // ALSO CAN IMPLEMENT sdk::ICollectionSDKComponent interface
134 
136  SDK_IMPLEMENT_IID(IS63ProductsFileRecordsEnum)
137  SDK_END_INTERFACE(IS63ProductsFileRecordsEnum)
138 };
139 SDK_DECLARE_IID(IS63ProductsFileRecordsEnum)
140 
143 class IS63ProductsFile : public sdk::ISDKProperties
144 {
145 public:
147  virtual SDKResult SDK_CALLTYPE GetIterator(
148  IS63ProductsFileRecordsEnumSP& iterator) const throw() = 0;
149 
151  virtual SDKResult SDK_CALLTYPE GetRecord(
152  const CellName& cell_name, IS63ProductsFileRecordSP& record) const throw() = 0;
153 
155  SDK_IMPLEMENT_IID(IS63ProductsFile)
156  SDK_END_INTERFACE(IS63ProductsFile)
157 };
158 SDK_DECLARE_IID(IS63ProductsFile)
159 
160 } // namespace s63
161 } // namespace sdk
162 
163 #endif // SDK_S63_SERIAL_FILE_INTERFACE_H_
sdk::s63::kProductsFileVersion_Version2
@ kProductsFileVersion_Version2
S-63 products file format version 2.
Definition: s63_products_file_interface.h:61
sdk::s63::kProductsFileRecordField_CellName
@ kProductsFileRecordField_CellName
kSDKAnyType_SDKStringPtr
Definition: s63_products_file_interface.h:34
sdk::s63::kProductsFileRecordField_ProductName
@ kProductsFileRecordField_ProductName
kSDKAnyType_SDKStringPtr
Definition: s63_products_file_interface.h:37
sdk::s63::kProductsFileRecordField_CellLimitEasternmostLongitude
@ kProductsFileRecordField_CellLimitEasternmostLongitude
kSDKAnyType_Double
Definition: s63_products_file_interface.h:46
sdk::s63::kS63ProductsFileProp_ContentType
@ kS63ProductsFileProp_ContentType
Content type of the Source PRODUCTS.TXT file (kSDKAnyType_Uint32, one of ProductsFileContentType).
Definition: s63_products_file_interface.h:83
sdk::s63::kProductsFileRecordField_BaseCellIssueDate
@ kProductsFileRecordField_BaseCellIssueDate
kSDKAnyType_SDKTime
Definition: s63_products_file_interface.h:38
sdk::s63::kProductsFileRecordField_CellLimitSouthernmostLatitude
@ kProductsFileRecordField_CellLimitSouthernmostLatitude
kSDKAnyType_Double
Definition: s63_products_file_interface.h:43
sdk::s63::kProductsFileContentType_Partial
@ kProductsFileContentType_Partial
The products file contains PARTIAL content.
Definition: s63_products_file_interface.h:69
sdk::s63::ProductsFileContentType
ProductsFileContentType
Known content types of the PRODUCTS.TXT file.
Definition: s63_products_file_interface.h:66
sdk::s63::kProductsFileRecordField_BaseCellUpdateNumber
@ kProductsFileRecordField_BaseCellUpdateNumber
kSDKAnyType_Uint32
Definition: s63_products_file_interface.h:49
sdk::s63::kProductsFileRecordField_BaseCellEdition
@ kProductsFileRecordField_BaseCellEdition
kSDKAnyType_Uint32
Definition: s63_products_file_interface.h:39
s63_cell_permits_interface.h
Set of interfaces for S-63 cell permits description.
properties_interface.h
Object generic properties interface.
sdk::s63::kProductsFileVersion_Version1
@ kProductsFileVersion_Version1
S-63 products file format version 1.
Definition: s63_products_file_interface.h:60
sdk::s63::S63ProductsFileProps
S63ProductsFileProps
Set of available properties for the S-63 Products File container.
Definition: s63_products_file_interface.h:75
sdk::s63::kProductsFileRecordField_LatestUpdateNumber
@ kProductsFileRecordField_LatestUpdateNumber
kSDKAnyType_Uint32
Definition: s63_products_file_interface.h:41
sdk::s63::IS63ProductsFile
PRODUCTS.TXT file container.
Definition: s63_products_file_interface.h:143
sdk::s63::kS63ProductsFileProp_FileVersion
@ kS63ProductsFileProp_FileVersion
Version of the source PRODUCTS.TXT file (kSDKAnyType_Uint32, one of ProductsFileVersion).
Definition: s63_products_file_interface.h:81
sdk::s63::kProductsFileRecordField_Compression
@ kProductsFileRecordField_Compression
kSDKAnyType_Uint32
Definition: s63_products_file_interface.h:47
kSDKResult_Succeeded
static const SDKResult kSDKResult_Succeeded
Operation completed successfully.
Definition: sdk_results.h:22
sdk::s63::kProductsFileRecordField_BaseCellLocation
@ kProductsFileRecordField_BaseCellLocation
kSDKAnyType_SDKStringPtr
Definition: s63_products_file_interface.h:51
sdk::s63::kProductsFileRecordField_IsOfficial
@ kProductsFileRecordField_IsOfficial
kSDKAnyType_Bool (true if record locates in :ENC section, false otherwise)
Definition: s63_products_file_interface.h:33
sdk::s63::kProductsFileRecordField_CancelledCellReplacement
@ kProductsFileRecordField_CancelledCellReplacement
kSDKAnyType_SDKStringPtr
Definition: s63_products_file_interface.h:52
SDKResult
SDKInt32 SDKResult
Type of all error or return codes which SDK functions can end with.
Definition: sdk_results.h:17
sdk::s63::kProductsFileRecordField_IssueDateLatestUpdate
@ kProductsFileRecordField_IssueDateLatestUpdate
kSDKAnyType_SDKTime
Definition: s63_products_file_interface.h:40
sdk::s63::CellName
SDKUInt8 CellName[8]
Cell name.
Definition: s63_cell_permits_interface.h:25
kSDKResult_UnknownError
static const SDKResult kSDKResult_UnknownError
Unknown error occurred during operation.
Definition: sdk_results.h:49
sdk::ISDKProperties
Provides access to members that control the properties.
Definition: properties_interface.h:32
sdk::s63::kProductsFileRecordField_RecordString
@ kProductsFileRecordField_RecordString
kSDKAnyType_SDKStringPtr (source string from PRODUCTS.TXT file)
Definition: s63_products_file_interface.h:35
sdk::s63::kS63ProductsFileProp_RecordsCount
@ kS63ProductsFileProp_RecordsCount
Total number of records (kSDKAnyType_Uint32).
Definition: s63_products_file_interface.h:77
SDK_FAILED
#define SDK_FAILED(res)
Checks failed result.
Definition: sdk_results_enum.h:69
sdk::s63::kProductsFileContentType_Full
@ kProductsFileContentType_Full
The products file contains FULL content.
Definition: s63_products_file_interface.h:70
platform.h
Describes the platform constants.
sdk::s63::kProductsFileRecordField_CellLimitNothernmostLatitude
@ kProductsFileRecordField_CellLimitNothernmostLatitude
kSDKAnyType_Double
Definition: s63_products_file_interface.h:45
sdk::s63::kProductsFileContentType_Unknown
@ kProductsFileContentType_Unknown
Unknown content type of the products file.
Definition: s63_products_file_interface.h:68
sdk::s63::kProductsFileRecordField_FileSize
@ kProductsFileRecordField_FileSize
kSDKAnyType_Uint32
Definition: s63_products_file_interface.h:42
sdk::s63::IS63ProductsFileRecord
Container to store a single PRODUCTS.TXT file record.
Definition: s63_products_file_interface.h:89
sdk::s63::kProductsFileRecordField_LastUpdateNumberForPreviousEdition
@ kProductsFileRecordField_LastUpdateNumberForPreviousEdition
kSDKAnyType_Uint32
Definition: s63_products_file_interface.h:50
sdk::s63::IS63ProductsFileRecordsEnum::Reset
virtual SDKResult SDK_CALLTYPE Reset()=0
Resets the iterator state.
sdk::s63::kProductsFileRecordField_Encryption
@ kProductsFileRecordField_Encryption
kSDKAnyType_Uint32
Definition: s63_products_file_interface.h:48
sdk::s63::IS63ProductsFileRecordsEnum
PRODUCTS.TXT file records iterator.
Definition: s63_products_file_interface.h:124
sdk::s63::ProductsFileRecordFields
ProductsFileRecordFields
List of available fields for a single PRODUCTS.TXT file record. See 6.2.3 of IHO S-63 Data Protection...
Definition: s63_products_file_interface.h:31
kSDKResult_NotExist
static const SDKResult kSDKResult_NotExist
Something does not exist.
Definition: sdk_results.h:79
kSDKResult_InvalidArgument
static const SDKResult kSDKResult_InvalidArgument
Wrong argument passed to function.
Definition: sdk_results.h:55
sdk::s63::kProductsFileRecordField_CellLimitWesternmostLongitude
@ kProductsFileRecordField_CellLimitWesternmostLongitude
kSDKAnyType_Double
Definition: s63_products_file_interface.h:44
sdk::s63::ProductsFileVersion
ProductsFileVersion
Known versions of the PRODUCTS.TXT file.
Definition: s63_products_file_interface.h:57
FWD_DECL_INTERFACE
FWD_DECL_INTERFACE(ILWEParserWrapper)
Provides a wrapper around the message parser to get, add or remove the.
sdk::s63::IS63ProductsFileRecordsEnum::Next
virtual SDKResult SDK_CALLTYPE Next(IS63ProductsFileRecordSP &products_file_record) const =0
Returns the next instance of the products file record.
sdk::s63::IS63ProductsFileRecord::GetFieldValue
virtual SDKResult SDK_CALLTYPE GetFieldValue(const ProductsFileRecordFields &field_id, SDKAny &field_value) const =0
Returns the appropriate PRODUCTS.TXT field value for a single record.
sdk::s63::kProductsFileVersion_Unknown
@ kProductsFileVersion_Unknown
Unknown version of the products file format.
Definition: s63_products_file_interface.h:59
sdk::s63::kS63ProductsFileProp_DateTime
@ kS63ProductsFileProp_DateTime
Date/Time of the source PRODUCTS.TXT file (kSDKAnyType_SDKTime).
Definition: s63_products_file_interface.h:79