\r\n

51Degrees Device Detection C/C++  4.5

A device detection library that is used natively or by 51Degrees products

property.h

1 /* *********************************************************************
2  * This Original Work is copyright of 51 Degrees Mobile Experts Limited.
3  * Copyright 2023 51 Degrees Mobile Experts Limited, Davidson House,
4  * Forbury Square, Reading, Berkshire, United Kingdom RG1 3EU.
5  *
6  * This Original Work is licensed under the European Union Public Licence
7  * (EUPL) v.1.2 and is subject to its terms as set out below.
8  *
9  * If a copy of the EUPL was not distributed with this file, You can obtain
10  * one at https://opensource.org/licenses/EUPL-1.2.
11  *
12  * The 'Compatible Licences' set out in the Appendix to the EUPL (as may be
13  * amended by the European Commission) shall be deemed incompatible for
14  * the purposes of the Work and the provisions of the compatibility
15  * clause in Article 5 of the EUPL shall not apply.
16  *
17  * If using the Work as, or as part of, a network application, by
18  * including the attribution notice(s) required under Article 5 of the EUPL
19  * in the end user terms of the application under an appropriate heading,
20  * such notice(s) shall fulfill the requirements of that article.
21  * ********************************************************************* */
22 
23 #ifndef FIFTYONE_DEGREES_PROPERTY_H_INCLUDED
24 #define FIFTYONE_DEGREES_PROPERTY_H_INCLUDED
25 
52 #include <stdint.h>
53 #ifdef _MSC_VER
54 #pragma warning (push)
55 #pragma warning (disable: 5105)
56 #include <windows.h>
57 #pragma warning (default: 5105)
58 #pragma warning (pop)
59 #endif
60 #include "data.h"
61 #include "exceptions.h"
62 #include "collection.h"
63 #include "string.h"
64 #include "common.h"
65 #include "propertyValueType.h"
66 
70 #pragma pack(push, 1)
71 typedef struct property_t {
72  const byte componentIndex;
73  const byte displayOrder;
75  const byte isMandatory;
77  const byte isList;
79  const byte showValues;
80  const byte isObsolete;
82  const byte show;
83  const byte valueType;
84  const uint32_t defaultValueIndex;
86  const uint32_t nameOffset;
88  const uint32_t descriptionOffset;
90  const uint32_t categoryOffset;
92  const uint32_t urlOffset;
94  const uint32_t firstValueIndex;
95  const uint32_t lastValueIndex;
96  const uint32_t mapCount;
97  const uint32_t firstMapIndex;
100 #pragma pack(pop)
101 
105 #pragma pack(push, 1)
106 typedef struct property_type_record_t {
107  const uint32_t nameOffset;
109  const byte storedValueType;
111 #pragma pack(pop)
112 
125  const fiftyoneDegreesCollection *stringsCollection,
126  const fiftyoneDegreesProperty *property,
128  fiftyoneDegreesException *exception);
129 
138 EXTERNAL fiftyoneDegreesPropertyValueType fiftyoneDegreesPropertyGetStoredType(
139  const fiftyoneDegreesCollection *propertyTypesCollection,
140  const fiftyoneDegreesProperty *property,
141  fiftyoneDegreesException *exception);
142 
151 EXTERNAL fiftyoneDegreesPropertyValueType fiftyoneDegreesPropertyGetStoredTypeByIndex(
152  const fiftyoneDegreesCollection *propertyTypesCollection,
153  uint32_t index,
154  fiftyoneDegreesException *exception);
155 
168  const fiftyoneDegreesCollection *stringsCollection,
169  const fiftyoneDegreesProperty *property,
171  fiftyoneDegreesException *exception);
172 
185  const fiftyoneDegreesCollection *stringsCollection,
186  const fiftyoneDegreesProperty *property,
188  fiftyoneDegreesException *exception);
189 
202  const fiftyoneDegreesCollection *stringsCollection,
203  const fiftyoneDegreesProperty *property,
205  fiftyoneDegreesException *exception);
206 
216  fiftyoneDegreesCollection *properties,
217  uint32_t index,
218  fiftyoneDegreesException *exception);
219 
231  fiftyoneDegreesCollection *properties,
232  uint32_t index,
234  fiftyoneDegreesException *exception);
235 
248  fiftyoneDegreesCollection *properties,
249  fiftyoneDegreesCollection *strings,
250  const char *requiredPropertyName,
252  fiftyoneDegreesException *exception);
253 
258 #endif
const byte valueType
The type of value the property represents.
Definition: property.h:83
const uint32_t nameOffset
The offset in the strings structure to the property name.
Definition: property.h:107
Used to store a handle to the underlying item that could be used to release the item when it's finish...
Definition: collection.h:309
const byte componentIndex
Index of the component.
Definition: property.h:72
const fiftyoneDegreesString * fiftyoneDegreesPropertyGetDescription(const fiftyoneDegreesCollection *stringsCollection, const fiftyoneDegreesProperty *property, fiftyoneDegreesCollectionItem *item, fiftyoneDegreesException *exception)
Returns the string description of the property using the item provided.
const byte isList
True if the property is a list can return multiple values.
Definition: property.h:77
const uint32_t urlOffset
The offset in the strings structure to the property URL.
Definition: property.h:92
const uint32_t firstValueIndex
Index of the first possible value.
Definition: property.h:94
Property structure containing stored type of a property.
Definition: property.h:106
Definition: string.h:93
const byte show
True if the property should be shown in GUIs.
Definition: property.h:82
const uint32_t firstMapIndex
The first index in the list of maps the property is associated with.
Definition: property.h:97
const uint32_t descriptionOffset
The offset in the strings structure to the property description.
Definition: property.h:88
const uint32_t nameOffset
The offset in the strings structure to the property name.
Definition: property.h:86
const byte isObsolete
True if the property is obsolete and will be removed from future data sets.
Definition: property.h:80
fiftyoneDegreesProperty * fiftyoneDegreesPropertyGet(fiftyoneDegreesCollection *properties, uint32_t index, fiftyoneDegreesCollectionItem *item, fiftyoneDegreesException *exception)
Gets the property at the requested index from the properties collection provided.
Property structure containing all the meta data relating to a property.
Definition: property.h:71
const byte isMandatory
True if the property is mandatory and must be provided.
Definition: property.h:75
const byte showValues
True if the values should be shown in GUIs.
Definition: property.h:79
const fiftyoneDegreesString * fiftyoneDegreesPropertyGetUrl(const fiftyoneDegreesCollection *stringsCollection, const fiftyoneDegreesProperty *property, fiftyoneDegreesCollectionItem *item, fiftyoneDegreesException *exception)
Returns the string URL of the property using the item provided.
const fiftyoneDegreesProperty * fiftyoneDegreesPropertyGetByName(fiftyoneDegreesCollection *properties, fiftyoneDegreesCollection *strings, const char *requiredPropertyName, fiftyoneDegreesCollectionItem *item, fiftyoneDegreesException *exception)
Gets the property with the requested name from the properties collection provided.
fiftyoneDegreesPropertyValueType fiftyoneDegreesPropertyGetStoredType(const fiftyoneDegreesCollection *propertyTypesCollection, const fiftyoneDegreesProperty *property, fiftyoneDegreesException *exception)
Returns the type the property is stored as.
const uint32_t categoryOffset
The offset in the strings structure to the property category.
Definition: property.h:90
const uint32_t defaultValueIndex
The default value index for the property.
Definition: property.h:84
const fiftyoneDegreesString * fiftyoneDegreesPropertyGetName(const fiftyoneDegreesCollection *stringsCollection, const fiftyoneDegreesProperty *property, fiftyoneDegreesCollectionItem *item, fiftyoneDegreesException *exception)
Returns the string name of the property using the item provided.
Structure used to represent a 51Degrees exception and passed into methods that might generate excepti...
Definition: exceptions.h:111
const byte storedValueType
The type of value the property is stored as.
Definition: property.h:109
byte fiftyoneDegreesPropertyGetValueType(fiftyoneDegreesCollection *properties, uint32_t index, fiftyoneDegreesException *exception)
Gets the value type for the property at the index in the collection.
const uint32_t lastValueIndex
Index of the last possible value.
Definition: property.h:95
const uint32_t mapCount
Number of maps the property is associated with.
Definition: property.h:96
const byte displayOrder
The order the property should be displayed in relative to other properties.
Definition: property.h:73
All the shared methods and fields required by file, memory and cached collections.
Definition: collection.h:402
fiftyoneDegreesPropertyValueType fiftyoneDegreesPropertyGetStoredTypeByIndex(const fiftyoneDegreesCollection *propertyTypesCollection, uint32_t index, fiftyoneDegreesException *exception)
Returns the type the property is stored as.
const fiftyoneDegreesString * fiftyoneDegreesPropertyGetCategory(const fiftyoneDegreesCollection *stringsCollection, const fiftyoneDegreesProperty *property, fiftyoneDegreesCollectionItem *item, fiftyoneDegreesException *exception)
Returns the string category of the property using the item provided.