#define FIFTYONE_DEGREES_ARRAY_TYPE(t, m)
Simple array structure definition macro used for generic types.
Definition array.h:55
size_t fiftyoneDegreesResultsHashGetValuesJson(fiftyoneDegreesResultsHash *results, char *const buffer, size_t const length, fiftyoneDegreesException *exception)
Sets the buffer to a JSON string that represents all the available properties and values in the resul...
fiftyoneDegreesResultsNoValueReason fiftyoneDegreesResultsHashGetNoValueReason(fiftyoneDegreesResultsHash *results, int requiredPropertyIndex, fiftyoneDegreesException *exception)
Gets the reason why a results does not contain valid values for a given property.
char * fiftyoneDegreesHashGetDeviceIdFromResult(fiftyoneDegreesDataSetHash *dataSet, fiftyoneDegreesResultHash *result, char *const buffer, size_t const length, fiftyoneDegreesException *exception)
Get the device id string from the single result provided.
#define FIFTYONE_DEGREES_RESULTS_HASH_MEMBERS
Macro defining the common members of a Hash result.
Definition hash.h:339
size_t fiftyoneDegreesResultsHashGetValuesString(fiftyoneDegreesResultsHash *results, const char *propertyName, char *const buffer, size_t const length, char *const separator, fiftyoneDegreesException *exception)
Sets the buffer the values associated in the results for the property name.
uint32_t fiftyoneDegreesHashGetProfileIdsForPropertyAndValue(fiftyoneDegreesResourceManager *manager, const char *propertyName, const char *valueName, uint32_t *profileIds, uint32_t length, fiftyoneDegreesException *exception)
Gets the ids of the profiles that contain the property and value provided.
EXTERNAL_VAR fiftyoneDegreesConfigHash fiftyoneDegreesHashDefaultConfig
Default detection configuration.
Definition hash.h:436
fiftyoneDegreesStatusCode fiftyoneDegreesHashReloadManagerFromFile(fiftyoneDegreesResourceManager *manager, const char *fileName, fiftyoneDegreesException *exception)
Reload the data set being used by the resource manager using the data file location specified.
fiftyoneDegreesResultHashArray fiftyoneDegreesResultsHash
Array of Hash results used to easily access and track the size of the array.
Definition hash.h:364
EXTERNAL_VAR fiftyoneDegreesConfigHash fiftyoneDegreesHashInMemoryConfig
DETECTION CONFIGURATIONS.
Definition hash.h:377
fiftyoneDegreesStatusCode fiftyoneDegreesHashInitManagerFromFileWithIndexedProperties(fiftyoneDegreesResourceManager *manager, fiftyoneDegreesConfigHash *config, fiftyoneDegreesPropertiesRequired *properties, const char *fileName, const char **indexedProperties, int indexedPropertiesCount, fiftyoneDegreesException *exception)
Initialises the resource manager as fiftyoneDegreesHashInitManagerFromFile does, and indexes the prof...
size_t fiftyoneDegreesResultsHashGetValuesStringAllProperties(fiftyoneDegreesResultsHash *results, char *const buffer, size_t const length, char *const separator, fiftyoneDegreesException *exception)
Sets the buffer to the values in the results of every required property index, one line for each inde...
fiftyoneDegreesDataSetHash * fiftyoneDegreesDataSetHashGet(fiftyoneDegreesResourceManager *manager)
Gets a safe reference to the Hash data set from the resource manager.
fiftyoneDegreesStatusCode fiftyoneDegreesHashInitManagerFromMemoryWithIndexedProperties(fiftyoneDegreesResourceManager *manager, fiftyoneDegreesConfigHash *config, fiftyoneDegreesPropertiesRequired *properties, void *memory, long size, const char **indexedProperties, int indexedPropertiesCount, fiftyoneDegreesException *exception)
Initialises the resource manager as fiftyoneDegreesHashInitManagerFromMemory does,...
void fiftyoneDegreesDataSetHashRelease(fiftyoneDegreesDataSetHash *dataSet)
Release the reference to a data set returned by the fiftyoneDegreesDataSetHashGet method.
const char * fiftyoneDegreesResultsHashGetNoValueReasonMessage(fiftyoneDegreesResultsNoValueReason reason)
Gets a fuller description of the reason why a value is missing.
char * fiftyoneDegreesHashGetDeviceIdFromResults(fiftyoneDegreesResultsHash *results, char *const buffer, size_t const length, fiftyoneDegreesException *exception)
Get the device id string from the results provided.
fiftyoneDegreesStatusCode fiftyoneDegreesHashReloadManagerFromOriginalFile(fiftyoneDegreesResourceManager *manager, fiftyoneDegreesException *exception)
Reload the data set being used by the resource manager using the data file location which was used wh...
bool fiftyoneDegreesResultsHashGetHasValues(fiftyoneDegreesResultsHash *results, int requiredPropertyIndex, fiftyoneDegreesException *exception)
Gets whether or not the results provided contain valid values for the property index provided.
EXTERNAL_VAR fiftyoneDegreesConfigHash fiftyoneDegreesHashLowMemoryConfig
Low memory configuration.
Definition hash.h:400
fiftyoneDegreesResultsHash * fiftyoneDegreesResultsHashCreate(fiftyoneDegreesResourceManager *manager, uint32_t userAgentCapacity, uint32_t overridesCapacity)
Allocates a results structure containing a reference to the Hash data set managed by the resource man...
void fiftyoneDegreesResultsHashFree(fiftyoneDegreesResultsHash *results)
Frees the results structure created by the fiftyoneDegreesResultsHashCreate method.
size_t fiftyoneDegreesHashSizeManagerFromFile(fiftyoneDegreesConfigHash *config, fiftyoneDegreesPropertiesRequired *properties, const char *fileName, fiftyoneDegreesException *exception)
EXTERNAL METHODS.
int fiftyoneDegreesResultsHashFromDeviceId(fiftyoneDegreesResultsHash *results, const char *deviceId, size_t deviceIdLength, fiftyoneDegreesException *exception)
Process a single Device Id and populate the device offsets in the results structure.
EXTERNAL_VAR fiftyoneDegreesConfigHash fiftyoneDegreesHashBalancedTempConfig
Balanced configuration modified to create a temporary file copy of the source data file to avoid lock...
Definition hash.h:425
fiftyoneDegreesStatusCode fiftyoneDegreesHashInitManagerFromMemory(fiftyoneDegreesResourceManager *manager, fiftyoneDegreesConfigHash *config, fiftyoneDegreesPropertiesRequired *properties, void *memory, long size, fiftyoneDegreesException *exception)
Initialises the resource manager with a Hash data set resource populated from the Hash data set point...
void fiftyoneDegreesResultsHashFromEvidence(fiftyoneDegreesResultsHash *results, fiftyoneDegreesEvidenceKeyValuePairArray *evidence, fiftyoneDegreesException *exception)
Processes the evidence value pairs in the evidence collection and populates the result in the results...
uint32_t fiftyoneDegreesHashIterateProfilesForPropertyAndValue(fiftyoneDegreesResourceManager *manager, const char *propertyName, const char *valueName, void *state, fiftyoneDegreesProfileIterateMethod callback, fiftyoneDegreesException *exception)
Iterates over the profiles in the data set calling the callback method for any profiles that contain ...
size_t fiftyoneDegreesHashSizeManagerFromMemory(fiftyoneDegreesConfigHash *config, fiftyoneDegreesPropertiesRequired *properties, void *memory, long size, fiftyoneDegreesException *exception)
Gets the total size in bytes which will be allocated when intialising a Hash resource and associated ...
fiftyoneDegreesStatusCode fiftyoneDegreesHashReloadManagerFromMemory(fiftyoneDegreesResourceManager *manager, void *source, long length, fiftyoneDegreesException *exception)
Reload the data set being used by the resource manager using a data file loaded into contiguous memor...
void fiftyoneDegreesResultsHashFromUserAgent(fiftyoneDegreesResultsHash *results, const char *userAgent, size_t userAgentLength, fiftyoneDegreesException *exception)
Process a single User-Agent and populate the device offsets in the results structure.
fiftyoneDegreesStatusCode fiftyoneDegreesHashInitManagerFromFile(fiftyoneDegreesResourceManager *manager, fiftyoneDegreesConfigHash *config, fiftyoneDegreesPropertiesRequired *properties, const char *fileName, fiftyoneDegreesException *exception)
Initialises the resource manager with a Hash data set resource populated from the Hash data file refe...
size_t fiftyoneDegreesResultsHashGetValuesStringByRequiredPropertyIndex(fiftyoneDegreesResultsHash *results, const int requiredPropertyIndex, char *const buffer, size_t const length, char *const separator, fiftyoneDegreesException *exception)
Sets the buffer the values associated in the results for the property name.
fiftyoneDegreesCollectionItem * fiftyoneDegreesResultsHashGetValues(fiftyoneDegreesResultsHash *results, int requiredPropertyIndex, fiftyoneDegreesException *exception)
Populates the list of values in the results instance with value structure instances associated with t...
EXTERNAL_VAR fiftyoneDegreesConfigHash fiftyoneDegreesHashHighPerformanceConfig
Highest performance configuration.
Definition hash.h:387
EXTERNAL_VAR fiftyoneDegreesConfigHash fiftyoneDegreesHashBalancedConfig
Uses caching to balance memory usage and performance.
Definition hash.h:415
@ FIFTYONE_DEGREES_HASH_MATCH_METHODS_LENGTH
The length of the enum.
Definition hash.h:132
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:163
fiftyoneDegreesResultsNoValueReason
Enum containing reasons which cause a value to not be present or valid.
Definition results.h:95
fiftyoneDegreesStatusCode
Status returned from the initialisation of a resource.
Definition status.h:81
Definition GettingStarted.c:67
Collection configuration structure which defines how the collection should be created by the create m...
Definition collection.h:295
Collection header structure which defines the size and location of the collection data.
Definition collection.h:282
All the shared methods and fields required by file, memory and cached collections.
Definition collection.h:408
Used to store a handle to the underlying item that could be used to release the item when it's finish...
Definition collection.h:315
Device detection configuration structure containing device detection specific configuration options,...
Definition config-dd.h:52
fiftyoneDegreesCollectionConfig maps
Maps collection config.
Definition hash.h:192
bool usePerformanceGraph
True if the performance optimized graph should be used for processing.
Definition hash.h:209
fiftyoneDegreesCollectionConfig rootNodes
Root nodes collection config.
Definition hash.h:197
bool usePredictiveGraph
True if the predictive optimized graph should be used for processing.
Definition hash.h:211
fiftyoneDegreesCollectionConfig properties
Properties collection config.
Definition hash.h:193
fiftyoneDegreesCollectionConfig nodes
Nodes collection config.
Definition hash.h:199
fiftyoneDegreesCollectionConfig values
Values collection config.
Definition hash.h:195
fiftyoneDegreesConfigDeviceDetection b
Base configuration.
Definition hash.h:188
fiftyoneDegreesCollectionConfig strings
Strings collection config.
Definition hash.h:189
int32_t drift
The maximum drift to allow when matching hashes.
Definition hash.h:206
bool traceRoute
True if the route through each graph should be traced during processing.
Definition hash.h:213
int32_t difference
The maximum difference to allow when matching hashes.
Definition hash.h:202
fiftyoneDegreesCollectionConfig profiles
Profiles collection config.
Definition hash.h:196
fiftyoneDegreesCollectionConfig components
Components collection config.
Definition hash.h:190
fiftyoneDegreesCollectionConfig profileOffsets
Profile offsets collection config.
Definition hash.h:200
Device detection data set structure which contains the 'must have's for all device detection data set...
Definition dataset-dd.h:52
Dataset header containing information about the dataset.
Definition hash.h:137
const fiftyoneDegreesDate nextUpdate
Date when the next data file will be available.
Definition hash.h:156
const int16_t age
Age of the data set format.
Definition hash.h:147
const int32_t copyrightOffset
Offset of the copyright string in the strings collection.
Definition hash.h:145
const int32_t versionMajor
Major version of the data file loaded.
Definition hash.h:138
const int32_t formatOffset
Offset of the data file format in the strings collection.
Definition hash.h:152
const int32_t versionBuild
Build version of the data file loaded.
Definition hash.h:140
const fiftyoneDegreesCollectionHeader profileOffsets
Size and location of the profile offsets collection.
Definition hash.h:175
const fiftyoneDegreesCollectionHeader rootNodes
Root nodes which point to the start of each graph used in detection.
Definition hash.h:170
const fiftyoneDegreesDate published
Date when the data file was published.
Definition hash.h:154
const int32_t nameOffset
Offset of the data file name in the strings collection.
Definition hash.h:150
const fiftyoneDegreesCollectionHeader properties
Size and location of the properties collection.
Definition hash.h:164
const fiftyoneDegreesCollectionHeader nodes
Size and location of the nodes collection.
Definition hash.h:173
const fiftyoneDegreesCollectionHeader values
Size and location of the values collection.
Definition hash.h:166
const int32_t versionRevision
Revision version of the data file loaded.
Definition hash.h:141
const int32_t versionMinor
Minor version of the data file loaded.
Definition hash.h:139
const fiftyoneDegreesCollectionHeader components
Size and location of the components collection.
Definition hash.h:160
const byte exportTag[16]
Tag identifying the data file export.
Definition hash.h:144
const int32_t minUserAgentCount
Minimum count for a User-Agent to be included in the data file export.
Definition hash.h:148
const fiftyoneDegreesCollectionHeader maps
Size and location of the maps collection.
Definition hash.h:162
const fiftyoneDegreesCollectionHeader strings
Size and location of the strings collection.
Definition hash.h:158
const fiftyoneDegreesCollectionHeader profiles
Size and location of the profiles collection.
Definition hash.h:168
Data set structure containing all the components used for detections.
Definition hash.h:270
fiftyoneDegreesCollection * profiles
Collection of all profiles.
Definition hash.h:288
uint32_t componentsAvailableCount
Number of components with properties.
Definition hash.h:283
fiftyoneDegreesHeaderPtrs ** componentHeaders
Array of headers for each component index.
Definition hash.h:278
const fiftyoneDegreesDataSetHashHeader header
Dataset header.
Definition hash.h:272
fiftyoneDegreesDataSetDeviceDetection b
Base data set.
Definition hash.h:271
fiftyoneDegreesList componentsList
List of component items from the components collection.
Definition hash.h:276
fiftyoneDegreesCollection * maps
Collection data file maps.
Definition hash.h:285
bool * componentsAvailable
Array of flags indicating if there are any properties available for the component with the matching i...
Definition hash.h:280
fiftyoneDegreesCollection * nodes
Collection of all hash nodes.
Definition hash.h:290
fiftyoneDegreesCollection * components
Collection of all components.
Definition hash.h:275
fiftyoneDegreesCollection * strings
Collection of all strings.
Definition hash.h:274
const fiftyoneDegreesConfigHash config
Copy of the configuration.
Definition hash.h:273
fiftyoneDegreesCollection * rootNodes
Collection of all root nodes.
Definition hash.h:289
fiftyoneDegreesCollection * profileOffsets
Collection of all offsets to profiles in the profiles collection.
Definition hash.h:291
fiftyoneDegreesCollection * properties
Collection of all properties.
Definition hash.h:286
fiftyoneDegreesCollection * values
Collection of all values.
Definition hash.h:287
fiftyoneDegreesHashValueProfiles * valueProfiles
Profiles holding each value of the properties named to index, or NULL when none were named.
Definition hash.h:294
Used to store the date when the dataset was produced and next date 51Degrees expect to provide a new ...
Definition date.h:62
Array of evidence key value pairs and a pointer to the next array if present or NULL of not present.
Definition evidence.h:195
Structure used to represent a 51Degrees exception and passed into methods that might generate excepti...
Definition exceptions.h:115
Trace node structure used to trace the route taken when evaluating a graph.
Definition graph.h:159
Data structure containing the root nodes for the combination of an evidence item and a component.
Definition hash.h:223
uint32_t predictiveNodeOffset
Offset in the nodes collection of the root node for the predictive graph.
Definition hash.h:226
uint32_t performanceNodeOffset
Offset in the nodes collection of the root node for the performance graph.
Definition hash.h:224
Index from each value of the properties named when the data set is initialised to the profiles holdin...
Definition hash.h:243
uint32_t propertiesCount
Number of properties named.
Definition hash.h:244
uint32_t * starts
Position in profiles of the first profile of each key, then profilesCount.
Definition hash.h:256
uint32_t keysCount
Number of values with a key.
Definition hash.h:245
uint32_t * profiles
Positions in the profile offsets collection.
Definition hash.h:258
uint32_t * propertyIndexes
Index in the properties collection of each property, or UINT32_MAX when the data file has no property...
Definition hash.h:249
uint32_t * firstKeys
Key of the first value of each property, then keysCount.
Definition hash.h:254
uint32_t * firstValueIndexes
Index in the values collection of the first value of each property.
Definition hash.h:252
uint32_t profilesCount
Number of entries in profiles.
Definition hash.h:246
const char ** names
Copy of each name the caller gave, in the order given, without nulls or repeats.
Definition hash.h:247
Defines a set of properties which are required by a caller.
Definition properties.h:229
Manager structure used to provide access to a shared and changing resource.
Definition resource.h:177
Array of items of type fiftyoneDegreesResultHash used to easily access and track the size of the arra...
Definition hash.h:352
Singular User-Agent result returned by a Hash process method.
Definition hash.h:309
byte componentIndex
Index of the component the result was taken for when the results were populated, or UINT8_MAX if none...
Definition hash.h:325
fiftyoneDegreesResultUserAgent b
Base User-Agent result.
Definition hash.h:310
int32_t iterations
Number of iterations required to get the device offset.
Definition hash.h:318
int32_t matchedNodes
The number of hashes matched in the User-Agent.
Definition hash.h:324
int32_t drift
The maximum drift for a matched substring from the character position where it was expected to be fou...
Definition hash.h:322
uint32_t * profileOffsets
Array of profile offsets where the index is the component index.
Definition hash.h:311
int32_t difference
The total difference in hash code values between the matched substring and the actual substring.
Definition hash.h:320
fiftyoneDegreesGraphTraceNode * trace
The graph trace constructed during processing if the option was enabled (and the executable was compi...
Definition hash.h:328
fiftyoneDegreesHashMatchMethod method
The method used to provide the match result.
Definition hash.h:316
bool * profileIsOverriden
Array of boolean flags indicating whether the result profile offset at the same index is one which ha...
Definition hash.h:313
Singular User-Agent result returned by a device detection process method.
Definition results-dd.h:49
