NAVTOR SDK  v.3.0
Software Development Kit for fast and efficient development of ECDIS, ECS and generic marine applications
gdb_feature_catalog.h
Go to the documentation of this file.
1 #ifndef SDK_GDB_FEATURE_CATALOG_INTERFACE_H_
12 #define SDK_GDB_FEATURE_CATALOG_INTERFACE_H_
13 #pragma once
14 
18 
19 SDK_GDB_BEGIN_NAMESPACE
20 
21 // Classes declared in this file.
24 FWD_DECL_INTERFACE(IFeatureClassCatalog);
25 FWD_DECL_INTERFACE(IAttributeClassCatalog);
33 FWD_DECL_INTERFACE(IEnumClassValue);
35 
37 static const sdk::Uuid kClassCatalogFactoryCID = "ClassCatalogFactoryCID";
38 
42 public:
44  virtual GDBResult SDK_CALLTYPE Open(
45  const SDKString& filename,
46  IClassCatalog** class_catalog) throw() = 0;
47 
49  virtual GDBResult SDK_CALLTYPE Create(
50  const SDKString& filename,
51  IClassCatalog** class_catalog) throw() = 0;
52 
53  SDK_IMPLEMENT_IID(IClassCatalogFactory)
54  SDK_END_INTERFACE(IClassCatalogFactory)
55 };
56 SDK_DECLARE_IID(IClassCatalogFactory)
57 
58 typedef enum ClassType{
65 } ClassType;
66 
69 typedef enum ClassCatalogProperty {
84 
87 typedef enum AttributeClassType {
96  // TODO: Check with S-100
98 
101 typedef enum ClassProperty {
113 } ClassProperty;
114 
117 typedef enum FeatureClassType {
123  // TODO: Check with S-100
125 
128 typedef enum FeatureClassFlags {
134 
137 typedef enum ClassBindingProperty {
142 
145 typedef enum ClassValueProperty {
149  //Abbreviation
151 
160 
164 class IClassCatalog : public IGDBObject {
165 public:
167  virtual GDBResult SDK_CALLTYPE GetClassCount(
168  ClassType class_type,
169  SDKUInt64* count) const throw() = 0;
170 
174  virtual GDBResult SDK_CALLTYPE GetClass(
175  ClassType class_type,
176  SDKUInt64 index,
177  IClass** class_ref) const throw() = 0;
178 
180  virtual GDBResult SDK_CALLTYPE GetClasses(
181  ClassType class_type,
182  SDKUInt64 index,
183  SDKUInt64 count,
184  IClass** class_ref) const throw() = 0;
185 
187  virtual GDBResult SDK_CALLTYPE FindClassByCode(
188  ClassType class_type,
189  ClassCode class_code,
190  IClass** class_ref) const throw() = 0;
191 
193  virtual GDBResult SDK_CALLTYPE FindClassByAlias(
194  ClassType class_type,
195  const SDKString& alias,
196  IClass** class_ref) const throw() = 0;
197 
199  virtual GDBResult SDK_CALLTYPE GetProperty(
201  SDKAny& value) const throw() = 0;
202 
203  template< typename T >
204  GDBResult GetPropertyT(ClassCatalogProperty id, T& out) const throw() {
205  sdk::ScopedAny value;
206  GDBResult res = GetProperty(id, value);
207  if (SDK_FAILED(res))
208  return res;
209  return value.GetAs< T >(out) ? sdk::Ok : sdk::Err_InvalidArg;
210  }
211 
212  SDK_IMPLEMENT_IID(IClassCatalog)
213  SDK_END_INTERFACE(IClassCatalog)
214 };
215 SDK_DECLARE_IID(IClassCatalog)
216 
217 class IClass : public IGDBObject {
220 public:
222  virtual GDBResult SDK_CALLTYPE GetCode(
223  ClassCode* code) const throw() = 0;
224 
226  virtual GDBResult SDK_CALLTYPE GetBindings(
227  IEnumClassBinding** bindings) throw() = 0;
228 
230  virtual GDBResult SDK_CALLTYPE GetProperty(
231  ClassProperty id,
232  SDKAny& value) const throw() = 0;
233 
234  template< typename T >
235  GDBResult GetPropertyT(ClassProperty id, T& out) const throw() {
236  sdk::ScopedAny value;
237  GDBResult res = GetProperty(id, value);
238  if (SDK_FAILED(res))
239  return res;
240  return value.GetAs< T >(out) ? sdk::Ok : sdk::Err_InvalidArg;
241  }
242 
243  SDK_IMPLEMENT_IID(IClass)
244  SDK_END_INTERFACE(IClass)
245 };
246 SDK_DECLARE_IID(IClass)
247 
248 class IAttributeClass : public IClass {
251 public:
253  virtual GDBResult SDK_CALLTYPE GetAttributeClassType(
254  AttributeClassType& class_type) const throw() = 0;
255 
258  virtual GDBResult SDK_CALLTYPE GetListedValues(
259  IEnumClassListedValue** listed_values) const throw() = 0;
260 
263  virtual GDBResult SDK_CALLTYPE FindListedValue(SDKUInt64 code,
264  IClassListedValue** listed_value) const throw() = 0;
265 
267  virtual GDBResult SDK_CALLTYPE GetValueDefinition(
268  IClassValue** value) const throw() = 0;
269 
270  SDK_IMPLEMENT_IID(IAttributeClass)
271  SDK_END_INTERFACE(IAttributeClass)
272 };
273 SDK_DECLARE_IID(IAttributeClass)
274 
275 class IFeatureClass : public IClass {
278 public:
280  virtual GDBResult SDK_CALLTYPE GetFeatureClassType(
281  FeatureClassType* class_type) const throw() = 0;
282 
284  virtual GDBResult SDK_CALLTYPE GetFeatureClassFlag(
285  SDKUInt64* class_flag) const throw() = 0;
286 
287  SDK_IMPLEMENT_IID(IFeatureClass)
288  SDK_END_INTERFACE(IFeatureClass)
289 };
290 SDK_DECLARE_IID(IFeatureClass)
291 
292 class IEnumClassListedValue : public IEnumSDKComponent {
295 public:
296  SDK_IMPLEMENT_IID(IEnumClassListedValue)
297  SDK_END_INTERFACE(IEnumClassListedValue)
298 };
299 SDK_DECLARE_IID(IEnumClassListedValue)
300 
301 class IEnumClassBinding : public IEnumSDKComponent {
304 public:
305  SDK_IMPLEMENT_IID(IEnumClassBinding)
306  SDK_END_INTERFACE(IEnumClassBinding)
307 };
308 SDK_DECLARE_IID(IEnumClassBinding)
309 
310 class IClassBinding : public IGDBObject {
313 public:
315  virtual GDBResult SDK_CALLTYPE GetClass(
316  IClass** class_ref) const throw() = 0;
317 
319  virtual GDBResult SDK_CALLTYPE GetProperty(
321  SDKAny& value) const throw() = 0;
322 
324  virtual GDBResult SDK_CALLTYPE GetPermittedValues(
325  IEnumSDKAny** value) const throw() = 0;
326 
327  template< typename T >
328  GDBResult GetPropertyT(ClassBindingProperty id, T& out) const throw() {
329  sdk::ScopedAny value;
330  GDBResult res = GetProperty(id, value);
331  if (SDK_FAILED(res))
332  return res;
333  return value.GetAs< T >(out) ? sdk::Ok : sdk::Err_InvalidArg;
334  }
335 
336  SDK_IMPLEMENT_IID(IClassBinding)
337  SDK_END_INTERFACE(IClassBinding)
338 };
339 SDK_DECLARE_IID(IClassBinding)
340 
341 class IClassValue : public IGDBObject {
344 public:
346  virtual GDBResult SDK_CALLTYPE GetProperty(
348  SDKAny& value) const throw() = 0;
349 
350  SDK_IMPLEMENT_IID(IClassValue)
351  SDK_END_INTERFACE(IClassValue)
352 };
353 SDK_DECLARE_IID(IClassValue)
354 
355 class IClassListedValue : public IGDBObject {
358 public:
360  virtual GDBResult SDK_CALLTYPE GetProperty(
362  SDKAny& value) const throw() = 0;
363 
364  SDK_IMPLEMENT_IID(IClassListedValue)
365  SDK_END_INTERFACE(IClassListedValue)
366 };
367 SDK_DECLARE_IID(IClassListedValue)
368 
369 SDK_GDB_END_NAMESPACE
370 
371 #endif // SDK_GDB_FEATURE_CATALOG_INTERFACE_H_
kAttributeClassType_Real
@ kAttributeClassType_Real
Real.
Definition: gdb_feature_catalog.h:91
IAttributeClass
Attribute class.
Definition: gdb_feature_catalog.h:250
kFeatureClassFlag_Point
@ kFeatureClassFlag_Point
Point.
Definition: gdb_feature_catalog.h:130
kFeatureClassType_Undefined
@ kFeatureClassType_Undefined
Undefined.
Definition: gdb_feature_catalog.h:118
kClassCatalogProperty_Scope
@ kClassCatalogProperty_Scope
Scope of a Catalog.
Definition: gdb_feature_catalog.h:74
IClassValue
Indicator interface for a class value definition.
Definition: gdb_feature_catalog.h:343
IClassBinding
Interface for a class binding definition.
Definition: gdb_feature_catalog.h:312
kClassValueProperty_Definition
@ kClassValueProperty_Definition
Value class definition.
Definition: gdb_feature_catalog.h:147
kClassType_RoleClass
@ kClassType_RoleClass
Role class.
Definition: gdb_feature_catalog.h:64
kFeatureClassType_Aggregation
@ kFeatureClassType_Aggregation
Aggregation.
Definition: gdb_feature_catalog.h:122
kClassCatalogProperty_VersionNumber_Original
@ kClassCatalogProperty_VersionNumber_Original
Version number.
Definition: gdb_feature_catalog.h:76
IClassBinding::GetProperty
virtual GDBResult SDK_CALLTYPE GetProperty(ClassBindingProperty id, SDKAny &value) const =0
Returns the class binding property.
kClassBindingProperty_Multiplicity_Lower
@ kClassBindingProperty_Multiplicity_Lower
Multiplicity lower.
Definition: gdb_feature_catalog.h:139
IClassBinding::GetClass
virtual GDBResult SDK_CALLTYPE GetClass(IClass **class_ref) const =0
Returns a binding class.
ClassListedValueProperty
ClassListedValueProperty
Class listed value properties definition.
Definition: gdb_feature_catalog.h:154
FeatureClassFlags
FeatureClassFlags
Permitted geometry types.
Definition: gdb_feature_catalog.h:128
kClassType_AttributeClass
@ kClassType_AttributeClass
Attribute class.
Definition: gdb_feature_catalog.h:62
kClassProperty_Alias
@ kClassProperty_Alias
Alias aka Acronym.
Definition: gdb_feature_catalog.h:106
IClassCatalogFactory::Open
virtual GDBResult SDK_CALLTYPE Open(const SDKString &filename, IClassCatalog **class_catalog)=0
Opens the class catalog specified by the given file name.
IClassCatalog::FindClassByAlias
virtual GDBResult SDK_CALLTYPE FindClassByAlias(ClassType class_type, const SDKString &alias, IClass **class_ref) const =0
Returns the class specified by Alias.
kClassProperty_NoValue
@ kClassProperty_NoValue
Undefined value.
Definition: gdb_feature_catalog.h:109
ClassProperty
ClassProperty
Definition of class properties.
Definition: gdb_feature_catalog.h:101
kClassCatalogProperty_Producer_ContactInfo
@ kClassCatalogProperty_Producer_ContactInfo
Producer contact info.
Definition: gdb_feature_catalog.h:81
ClassCatalogProperty
ClassCatalogProperty
Class catalog properties.
Definition: gdb_feature_catalog.h:69
IClassCatalog::GetClasses
virtual GDBResult SDK_CALLTYPE GetClasses(ClassType class_type, SDKUInt64 index, SDKUInt64 count, IClass **class_ref) const =0
Populates an array with references to classes.
IClassCatalogFactory
Provides access to members that create and open a class catalog.
Definition: gdb_feature_catalog.h:41
kClassProperty_Definition
@ kClassProperty_Definition
Class definition.
Definition: gdb_feature_catalog.h:104
kAttributeClassType_Complex
@ kAttributeClassType_Complex
Complex.
Definition: gdb_feature_catalog.h:94
kClassProperty_MeasurementResolution
@ kClassProperty_MeasurementResolution
Resolution of measurement, 1 2 3 etc. Number of digits after decimal point.
Definition: gdb_feature_catalog.h:112
ClassValueProperty
ClassValueProperty
Class value definition.
Definition: gdb_feature_catalog.h:145
IAttributeClass::GetListedValues
virtual GDBResult SDK_CALLTYPE GetListedValues(IEnumClassListedValue **listed_values) const =0
Returns the listed value enumeration for the Enum type of an attribute class.
kClassListedValueProperty_Abbreviation
@ kClassListedValueProperty_Abbreviation
Abbreviation.
Definition: gdb_feature_catalog.h:158
IClassCatalog::FindClassByCode
virtual GDBResult SDK_CALLTYPE FindClassByCode(ClassType class_type, ClassCode class_code, IClass **class_ref) const =0
Returns a Class specified by ClassCode.
kClassCatalogProperty_VersionDate_Original
@ kClassCatalogProperty_VersionDate_Original
Version date.
Definition: gdb_feature_catalog.h:77
kClassCatalogProperty_Producer_IndividualName
@ kClassCatalogProperty_Producer_IndividualName
Producer individual name.
Definition: gdb_feature_catalog.h:78
kAttributeClassType_Enum
@ kAttributeClassType_Enum
Enumeration.
Definition: gdb_feature_catalog.h:90
sdk::Ok
@ Ok
Operation completed successfully.
Definition: sdk_results_enum.h:22
kClassCatalogProperty_Date
@ kClassCatalogProperty_Date
Issue date.
Definition: gdb_feature_catalog.h:72
kFeatureClassType_Meta
@ kFeatureClassType_Meta
Meta.
Definition: gdb_feature_catalog.h:120
IClassBinding::GetPermittedValues
virtual GDBResult SDK_CALLTYPE GetPermittedValues(IEnumSDKAny **value) const =0
Returns the permitted value enumeration of a binded class.
kAttributeClassType_Undefined
@ kAttributeClassType_Undefined
Undefined.
Definition: gdb_feature_catalog.h:88
kClassProperty_Abbreviation
@ kClassProperty_Abbreviation
Class abbreviation.
Definition: gdb_feature_catalog.h:108
kClassProperty_Remarks
@ kClassProperty_Remarks
Remarks.
Definition: gdb_feature_catalog.h:105
gdb_const.h
Geo database constants and structures.
IAttributeClass::GetValueDefinition
virtual GDBResult SDK_CALLTYPE GetValueDefinition(IClassValue **value) const =0
Returns the value definition of an attribute class.
kFeatureClassFlag_NoGeometry
@ kFeatureClassFlag_NoGeometry
No geometry.
Definition: gdb_feature_catalog.h:129
kClassCatalogProperty_Producer_Role
@ kClassCatalogProperty_Producer_Role
Producer role.
Definition: gdb_feature_catalog.h:82
sdk::Err_InvalidArg
@ Err_InvalidArg
Wrong argument passed to function.
Definition: sdk_results_enum.h:27
ClassCode
SDKUInt32 ClassCode
Definition of the ClassCode types.
Definition: gdb_const.h:229
IEnumClassBinding
Indicator interface for a class bindings enumeration.
Definition: gdb_feature_catalog.h:303
kClassProperty_Code
@ kClassProperty_Code
Class Code.
Definition: gdb_feature_catalog.h:102
kClassCatalogFactoryCID
static const sdk::Uuid kClassCatalogFactoryCID
The class catalog factory object CID.
Definition: gdb_feature_catalog.h:37
kClassProperty_MeasurementUnit
@ kClassProperty_MeasurementUnit
Unit of measurement.
Definition: gdb_feature_catalog.h:111
IClassCatalog
Provides access to members that can be used for accessing individual Classes.
Definition: gdb_feature_catalog.h:164
kFeatureClassFlag_Curve
@ kFeatureClassFlag_Curve
Curve.
Definition: gdb_feature_catalog.h:131
kClassBindingProperty_Sequential
@ kClassBindingProperty_Sequential
Sequential.
Definition: gdb_feature_catalog.h:138
kClassProperty_MeasurementType
@ kClassProperty_MeasurementType
Type of measurement.
Definition: gdb_feature_catalog.h:110
kClassCatalogProperty_Version
@ kClassCatalogProperty_Version
Version.
Definition: gdb_feature_catalog.h:71
IAttributeClass::FindListedValue
virtual GDBResult SDK_CALLTYPE FindListedValue(SDKUInt64 code, IClassListedValue **listed_value) const =0
Returns the listed value of for the Enum type of an attribute class.
IFeatureClass
Provides access to the feature class properties.
Definition: gdb_feature_catalog.h:277
IClassCatalogFactory::Create
virtual GDBResult SDK_CALLTYPE Create(const SDKString &filename, IClassCatalog **class_catalog)=0
Creates an empty class catalog.
SDK_FAILED
#define SDK_FAILED(res)
Checks failed result.
Definition: sdk_results_enum.h:69
IFeatureClass::GetFeatureClassFlag
virtual GDBResult SDK_CALLTYPE GetFeatureClassFlag(SDKUInt64 *class_flag) const =0
Returns feature class flag.
kClassProperty_Name
@ kClassProperty_Name
Class name.
Definition: gdb_feature_catalog.h:103
IClassValue::GetProperty
virtual GDBResult SDK_CALLTYPE GetProperty(ClassValueProperty id, SDKAny &value) const =0
Returns a class value property.
kClassBindingProperty_Multiplicity_Upper
@ kClassBindingProperty_Multiplicity_Upper
Multiplicity upper.
Definition: gdb_feature_catalog.h:140
kClassType_AssociationClass
@ kClassType_AssociationClass
Association class.
Definition: gdb_feature_catalog.h:63
ISDKComponent
Base interface for all SDK interfaces.
Definition: sdk_component_interface.h:41
kClassValueProperty_Symbol
@ kClassValueProperty_Symbol
Value class symbol.
Definition: gdb_feature_catalog.h:148
kClassCatalogProperty_PRSP
@ kClassCatalogProperty_PRSP
PRSP.
Definition: gdb_feature_catalog.h:70
kClassValueProperty_Name
@ kClassValueProperty_Name
Value class name.
Definition: gdb_feature_catalog.h:146
IClassCatalog::GetClass
virtual GDBResult SDK_CALLTYPE GetClass(ClassType class_type, SDKUInt64 index, IClass **class_ref) const =0
Gets the i-th Class from the ClassCatalog. The first Class in the ClassCollection has index 0,...
sdk::SDKAnyHandler
This class wraps the SDKAny type.
Definition: sdk_any_handler.h:32
kClassListedValueProperty_Definition
@ kClassListedValueProperty_Definition
Definition.
Definition: gdb_feature_catalog.h:157
FeatureClassType
FeatureClassType
Definition of the class type.
Definition: gdb_feature_catalog.h:117
kFeatureClassType_Geographic
@ kFeatureClassType_Geographic
Graphic.
Definition: gdb_feature_catalog.h:119
AttributeClassType
AttributeClassType
Provides access to an attribute class properties.
Definition: gdb_feature_catalog.h:87
IFeatureClass::GetFeatureClassType
virtual GDBResult SDK_CALLTYPE GetFeatureClassType(FeatureClassType *class_type) const =0
Returns feature class type.
IEnumClassListedValue
Indicator interface for a class listed value enumeration.
Definition: gdb_feature_catalog.h:294
IClassCatalog::GetClassCount
virtual GDBResult SDK_CALLTYPE GetClassCount(ClassType class_type, SDKUInt64 *count) const =0
Returns the number of classes in the ClassCatalog.
kAttributeClassType_Text
@ kAttributeClassType_Text
Text.
Definition: gdb_feature_catalog.h:89
kFeatureClassType_Theme
@ kFeatureClassType_Theme
Theme.
Definition: gdb_feature_catalog.h:121
kClassListedValueProperty_Label
@ kClassListedValueProperty_Label
Label.
Definition: gdb_feature_catalog.h:156
kAttributeClassType_Int
@ kAttributeClassType_Int
Integer.
Definition: gdb_feature_catalog.h:93
kFeatureClassFlag_Surface
@ kFeatureClassFlag_Surface
Surface.
Definition: gdb_feature_catalog.h:132
kAttributeClassType_Date
@ kAttributeClassType_Date
Date.
Definition: gdb_feature_catalog.h:92
IClassListedValue::GetProperty
virtual GDBResult SDK_CALLTYPE GetProperty(ClassListedValueProperty id, SDKAny &value) const =0
Returns a class listed value property.
IAttributeClass::GetAttributeClassType
virtual GDBResult SDK_CALLTYPE GetAttributeClassType(AttributeClassType &class_type) const =0
Returns the type of an attribute class.
enum_interface.h
Describes a basic enumeration interfaces.
IClass::GetCode
virtual GDBResult SDK_CALLTYPE GetCode(ClassCode *code) const =0
Returns the code of a class.
IClass::GetProperty
virtual GDBResult SDK_CALLTYPE GetProperty(ClassProperty id, SDKAny &value) const =0
Returns the value of the specified class property.
IClass
Class.
Definition: gdb_feature_catalog.h:219
kClassProperty_ClassType
@ kClassProperty_ClassType
see ClassType
Definition: gdb_feature_catalog.h:107
kClassCatalogProperty_Producer_PositionName
@ kClassCatalogProperty_Producer_PositionName
Producer position name.
Definition: gdb_feature_catalog.h:80
IClassCatalog::GetProperty
virtual GDBResult SDK_CALLTYPE GetProperty(ClassCatalogProperty id, SDKAny &value) const =0
Returns the value of the specified class collection property.
kAttributeClassType_List
@ kAttributeClassType_List
List.
Definition: gdb_feature_catalog.h:95
kClassCatalogProperty_Producer_OrganisationName
@ kClassCatalogProperty_Producer_OrganisationName
producer organization name
Definition: gdb_feature_catalog.h:79
IClassListedValue
Interface for an attribute class listed value definition.
Definition: gdb_feature_catalog.h:357
ClassBindingProperty
ClassBindingProperty
Interface for a class binding definition.
Definition: gdb_feature_catalog.h:137
FWD_DECL_INTERFACE
FWD_DECL_INTERFACE(ILWEParserWrapper)
Provides a wrapper around the message parser to get, add or remove the.
kClassCatalogProperty_Name
@ kClassCatalogProperty_Name
Catalog name.
Definition: gdb_feature_catalog.h:73
kClassCatalogProperty_TopicCategory
@ kClassCatalogProperty_TopicCategory
Field Of Application.
Definition: gdb_feature_catalog.h:75
IClass::GetBindings
virtual GDBResult SDK_CALLTYPE GetBindings(IEnumClassBinding **bindings)=0
Returns bindings of a class.
kClassListedValueProperty_Code
@ kClassListedValueProperty_Code
Code.
Definition: gdb_feature_catalog.h:155
kClassType_FeatureClass
@ kClassType_FeatureClass
Feature class.
Definition: gdb_feature_catalog.h:61
ClassType
ClassType
Defines the class type.
Definition: gdb_feature_catalog.h:60
sdk_any_handler.h
Wrappers for work with SDKAny instance.