51Degrees Device Detection C/C++  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 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  * ********************************************************************* */
66 #include <stdint.h>
67 #ifdef _MSC_VER
68 #pragma warning (push)
69 #pragma warning (disable: 5105)
70 #include <windows.h>
71 #pragma warning (default: 5105)
72 #pragma warning (pop)
73 #endif
74 #include "data.h"
75 #include "exceptions.h"
76 #include "collection.h"
77 #include "string.h"
78 #include "component.h"
79 #include "property.h"
80 #include "value.h"
81 #include "common.h"
87 #pragma pack(push, 1)
88 typedef struct fiftyoneDegrees_profile_t {
89  const byte componentIndex;
91  const uint32_t profileId;
92  const uint32_t valueCount;
94 #pragma pack(pop)
102 #pragma pack(push, 4)
103 typedef struct fiftyoneDegrees_profile_offset_t {
104  const uint32_t profileId;
105  const uint32_t offset;
107 #pragma pack(pop)
117  void *state,
133  fiftyoneDegreesCollection *profileOffsets,
134  fiftyoneDegreesCollection *profiles,
135  const uint32_t profileId,
137  fiftyoneDegreesException *exception);
154  fiftyoneDegreesCollection *profileOffsets,
155  fiftyoneDegreesCollection *profiles,
156  uint32_t index,
158  fiftyoneDegreesException *exception);
173  const fiftyoneDegreesCollectionFile *file,
174  uint32_t offset,
175  fiftyoneDegreesData *data,
176  fiftyoneDegreesException *exception);
177 #endif
193  fiftyoneDegreesProfile *profile,
194  fiftyoneDegreesProperty *property,
195  void *state,
197  fiftyoneDegreesException *exception);
218  fiftyoneDegreesCollection *strings,
219  fiftyoneDegreesCollection *properties,
221  fiftyoneDegreesCollection *profiles,
222  fiftyoneDegreesCollection *profileOffsets,
223  const char *propertyName,
224  const char* valueName,
225  void *state,
227  fiftyoneDegreesException *exception);
240  fiftyoneDegreesCollection *profileOffsets,
241  const uint32_t profileId,
242  uint32_t *profileOffset,
243  fiftyoneDegreesException *exception);
249 #endif
const byte componentIndex
The index of the component the profile relates to.
Definition: profile.h:89
const uint32_t profileId
The unique Id of the profile.
Definition: profile.h:104
Used to store a handle to the underlying item that could be used to release the item when it's finish...
Definition: collection.h:310
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:103
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:447
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:101
const uint32_t offset
Offset to the profile in the profiles structure.
Definition: profile.h:105
Property structure containing all the meta data relating to a property.
Definition: property.h:85
const uint32_t valueCount
The number of values within the profile.
Definition: profile.h:92
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:111
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:116
Encapsulates a profile stored within a data set.
Definition: profile.h:88
const uint32_t profileId
Unique id of the profile.
Definition: profile.h:91
All the shared methods and fields required by file, memory and cached collections.
Definition: collection.h:410