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

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,
134  fiftyoneDegreesCollection *profileOffsets,
135  fiftyoneDegreesCollection *profiles,
136  const uint32_t profileId,
138  fiftyoneDegreesException *exception);
155  fiftyoneDegreesCollection *profileOffsets,
156  fiftyoneDegreesCollection *profiles,
157  uint32_t index,
159  fiftyoneDegreesException *exception);
174  const fiftyoneDegreesCollectionFile *file,
175  uint32_t offset,
176  fiftyoneDegreesData *data,
177  fiftyoneDegreesException *exception);
178 #endif
194  fiftyoneDegreesProfile *profile,
195  fiftyoneDegreesProperty *property,
196  void *state,
198  fiftyoneDegreesException *exception);
219  fiftyoneDegreesCollection *strings,
220  fiftyoneDegreesCollection *properties,
222  fiftyoneDegreesCollection *profiles,
223  fiftyoneDegreesCollection *profileOffsets,
224  const char *propertyName,
225  const char* valueName,
226  void *state,
228  fiftyoneDegreesException *exception);
241  fiftyoneDegreesCollection *profileOffsets,
242  const uint32_t profileId,
243  uint32_t *profileOffset,
244  fiftyoneDegreesException *exception);
250 #endif
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:446
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
Property structure containing all the meta data relating to a property.
Definition: property.h:86
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:409