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

EngineDeviceDetection.hpp

1/* *********************************************************************
2 * This Original Work is copyright of 51 Degrees Mobile Experts Limited.
3 * Copyright 2026 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_ENGINE_DEVICE_DETECTION_HPP
24#define FIFTYONE_DEGREES_ENGINE_DEVICE_DETECTION_HPP
25
26#include <string>
27#include <vector>
28#include <map>
29#include <stdexcept>
30#include <stdlib.h>
31#include <sstream>
32#include <algorithm>
33#include "../common/EngineBase.hpp"
34#include "../common/RequiredPropertiesConfig.hpp"
35#include "ConfigDeviceDetection.hpp"
36#include "ResultsDeviceDetection.hpp"
37#include "EvidenceDeviceDetection.hpp"
38
39using namespace FiftyoneDegrees::Common;
40
41namespace FiftyoneDegrees {
42 namespace DeviceDetection {
85 public:
90
95 static string defaultElementDataKey;
96
102
108 RequiredPropertiesConfig *properties);
109
115
121
130 const char *userAgent) const = 0;
131
140 string &userAgent) const;
141
145 protected:
152 };
153 }
154}
155
156#endif
EngineBase(ConfigBase *config, RequiredPropertiesConfig *properties)
Construct a new instance of the engine class with the configuration and properties provided.
ConfigBase * config
Pointer to the configuration used to build the engine.
Definition EngineBase.hpp:262
C++ class wrapper for the fiftyoneDegreesPropertiesRequired structure.
Definition RequiredPropertiesConfig.hpp:59
C++ class wrapper for the fiftyoneDegreesConfigDeviceDetection configuration structure.
Definition ConfigDeviceDetection.hpp:65
virtual ResultsDeviceDetection * processDeviceDetection(const char *userAgent) const =0
Processes the User-Agent provided and returns the result.
static string defaultElementDataKey
The data key which will be used to store the results of processing.
Definition EngineDeviceDetection.hpp:95
EngineDeviceDetection(ConfigDeviceDetection *config, RequiredPropertiesConfig *properties)
Construct a new instance of the engine class with the configuration and properties provided.
virtual ResultsDeviceDetection * processDeviceDetection(string &userAgent) const
Processes the User-Agent provided and returns the result.
virtual void init(fiftyoneDegreesDataSetDeviceDetection *dataSet)
Initialise the engine with the data set provided.
virtual ResultsDeviceDetection * processDeviceDetection(EvidenceDeviceDetection *evidence) const =0
Processes the evidence provided and returns the result.
Device detection specific evidence class containing evidence to be processed by a device detection en...
Definition EvidenceDeviceDetection.hpp:64
Encapsulates the results of a device detection engine's processing.
Definition ResultsDeviceDetection.hpp:76
Shared classes.
Definition Collection.hpp:31
Device Detection specific classes.
Definition ComponentMetaDataBuilderHash.hpp:34
A C++ wrapper class for transform.h conversion routines.
Definition ComponentMetaDataBuilderHash.hpp:33
Definition GettingStarted.c:67
Device detection data set structure which contains the 'must have's for all device detection data set...
Definition dataset-dd.h:52