51Degrees Device Detection C/C++  4.1Newer Version 4.2

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


1 /* *********************************************************************
2  * This Original Work is copyright of 51 Degrees Mobile Experts Limited.
3  * Copyright 2019 51 Degrees Mobile Experts Limited, 5 Charlotte Close,
4  * Caversham, Reading, Berkshire, United Kingdom RG4 7BY.
5  *
6  * This Original Work is licensed under the European Union Public Licence (EUPL)
7  * 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  * ********************************************************************* */
66 #include <stdint.h>
67 #ifdef _MSC_VER
68 #include <windows.h>
69 #endif
70 #include "data.h"
71 #include "exceptions.h"
72 #include "collection.h"
73 #include "string.h"
74 #include "component.h"
75 #include "property.h"
76 #include "value.h"
78 #ifdef __cplusplus
79 #define EXTERNAL extern "C"
80 #else
81 #define EXTERNAL
82 #endif
88 #pragma pack(push, 1)
89 typedef struct fiftyoneDegrees_profile_t {
90  const byte componentIndex;
92  const uint32_t profileId;
93  const uint32_t valueCount;
95 #pragma pack(pop)
103 #pragma pack(push, 4)
104 typedef struct fiftyoneDegrees_profile_offset_t {
105  const uint32_t profileId;
106  const uint32_t offset;
108 #pragma pack(pop)
118  void *state,
131  fiftyoneDegreesCollection *components,
132  fiftyoneDegreesProfile *profile,
134  fiftyoneDegreesException *exception);
149  fiftyoneDegreesCollection *profileOffsets,
150  fiftyoneDegreesCollection *profiles,
151  const uint32_t profileId,
153  fiftyoneDegreesException *exception);
170  fiftyoneDegreesCollection *profileOffsets,
171  fiftyoneDegreesCollection *profiles,
172  uint32_t index,
174  fiftyoneDegreesException *exception);
189  const fiftyoneDegreesCollectionFile *file,
190  uint32_t offset,
191  fiftyoneDegreesData *data,
192  fiftyoneDegreesException *exception);
193 #endif
209  fiftyoneDegreesProfile *profile,
210  fiftyoneDegreesProperty *property,
211  void *state,
213  fiftyoneDegreesException *exception);
234  fiftyoneDegreesCollection *strings,
235  fiftyoneDegreesCollection *properties,
237  fiftyoneDegreesCollection *profiles,
238  fiftyoneDegreesCollection *profileOffsets,
239  const char *propertyName,
240  const char* valueName,
241  void *state,
243  fiftyoneDegreesException *exception);
256  fiftyoneDegreesCollection *profileOffsets,
257  const uint32_t profileId,
258  uint32_t *profileOffset,
259  fiftyoneDegreesException *exception);
265 #endif
A component of a data set.
Definition: component.h:80
const byte componentIndex
The index of the component the profile relates to.
Definition: profile.h:90
const uint32_t profileId
The unique Id of the profile.
Definition: profile.h:105
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
uint32_t fiftyoneDegreesProfileIterateValuesForProperty(fiftyoneDegreesCollection *values, fiftyoneDegreesProfile *profile, fiftyoneDegreesProperty *property, void *state, fiftyoneDegreesProfileIterateMethod callback, fiftyoneDegreesException *exception)
Iterate over all values contained in the profile which relate to the specified property,...
Structure containing the unique id of the profile, and the offset needed to retrieve the actual profi...
Definition: profile.h:104
fiftyoneDegreesProfile * fiftyoneDegreesProfileGetByProfileId(fiftyoneDegreesCollection *profileOffsets, fiftyoneDegreesCollection *profiles, const uint32_t profileId, fiftyoneDegreesCollectionItem *item, fiftyoneDegreesException *exception)
Gets the profile associated with the profileId or NULL if there is no corresponding profile.
Type of collection where the collection is streamed from file.
Definition: collection.h:444
uint32_t fiftyoneDegreesProfileIterateProfilesForPropertyAndValue(fiftyoneDegreesCollection *strings, fiftyoneDegreesCollection *properties, fiftyoneDegreesCollection *values, fiftyoneDegreesCollection *profiles, fiftyoneDegreesCollection *profileOffsets, const char *propertyName, const char *valueName, void *state, fiftyoneDegreesProfileIterateMethod callback, fiftyoneDegreesException *exception)
Iterate all profiles which contain the specified value, calling the callback method for each.
fiftyoneDegreesProfile * fiftyoneDegreesProfileGetByIndex(fiftyoneDegreesCollection *profileOffsets, fiftyoneDegreesCollection *profiles, uint32_t index, fiftyoneDegreesCollectionItem *item, fiftyoneDegreesException *exception)
Gets a pointer to the profile at the index provided.
Data structure used for reusing memory which may have been allocated in a previous operation.
Definition: data.h:106
const uint32_t offset
Offset to the profile in the profiles structure.
Definition: profile.h:106
fiftyoneDegreesComponent * fiftyoneDegreesProfileGetComponent(fiftyoneDegreesCollection *components, fiftyoneDegreesProfile *profile, fiftyoneDegreesCollectionItem *item, fiftyoneDegreesException *exception)
Gets the Component associated with the property.
Property structure containing all the meta data relating to a property.
Definition: property.h:82
const uint32_t valueCount
The number of values within the profile.
Definition: profile.h:93
uint32_t * fiftyoneDegreesProfileGetOffsetForProfileId(fiftyoneDegreesCollection *profileOffsets, const uint32_t profileId, uint32_t *profileOffset, fiftyoneDegreesException *exception)
Gets the offset in the profiles collection for the profile with the profileId or NULL if there is no ...
Structure used to represent a 51Degrees exception and passed into methods that might generate excepti...
Definition: exceptions.h:116
void * fiftyoneDegreesProfileReadFromFile(const fiftyoneDegreesCollectionFile *file, uint32_t offset, fiftyoneDegreesData *data, fiftyoneDegreesException *exception)
Read a profile from the file collection provided and store in the data pointer.
bool(* fiftyoneDegreesProfileIterateMethod)(void *state, fiftyoneDegreesCollectionItem *item)
Definition of a callback function which is passed an item of a type determined by the iteration metho...
Definition: profile.h:117
Encapsulates a profile stored within a data set.
Definition: profile.h:89
const uint32_t profileId
Unique id of the profile.
Definition: profile.h:92
All the shared methods and fields required by file, memory and cached collections.
Definition: collection.h:407