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

storedBinaryValue.h

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_STORED_BINARY_VALUE_H_INCLUDED
24#define FIFTYONE_DEGREES_STORED_BINARY_VALUE_H_INCLUDED
25
26#ifdef FIFTYONE_DEGREES_IPI_SYMBOLS
27#include "ipiSymbols.h"
28#endif
29
38
39#include <stdint.h>
40#include <ctype.h>
41#include "exceptions.h"
42#include "collection.h"
43#include "float.h"
44#include "common.h"
45#include "ip.h"
46#include "propertyValueType.h"
47#include "string.h"
48
74#pragma pack(push, 1)
75typedef struct fiftyone_degrees_var_length_byte_array_t {
76 uint16_t size;
77 unsigned char firstByte;
79#pragma pack(pop)
80
84#pragma pack(push, 1)
85typedef union fiftyone_degrees_stored_binary_value_t {
89 int32_t intValue;
90 int16_t shortValue;
91 byte byteValue;
93#pragma pack(pop)
94
95#ifndef FIFTYONE_DEGREES_MEMORY_ONLY
96
113 fiftyoneDegreesException *exception);
114
115#endif
116
128 const fiftyoneDegreesCollection *strings,
129 uint32_t offset,
130 fiftyoneDegreesPropertyValueType storedValueType,
132 fiftyoneDegreesException *exception);
133
146 fiftyoneDegreesPropertyValueType storedValueType,
147 const char *target,
148 fiftyoneDegreesStringBuilder *tempBuilder,
149 fiftyoneDegreesException *exception);
150
161 fiftyoneDegreesPropertyValueType storedValueType,
162 int defaultValue);
163
174 fiftyoneDegreesPropertyValueType storedValueType,
175 double defaultValue);
176
187 fiftyoneDegreesPropertyValueType storedValueType,
188 bool defaultValue);
189
193
194#endif
int fiftyoneDegreesStoredBinaryValueCompareWithString(const fiftyoneDegreesStoredBinaryValue *value, fiftyoneDegreesPropertyValueType storedValueType, const char *target, fiftyoneDegreesStringBuilder *tempBuilder, fiftyoneDegreesException *exception)
Function to compare the current binary value to the target string value using the text format.
double fiftyoneDegreesStoredBinaryValueToDoubleOrDefault(const fiftyoneDegreesStoredBinaryValue *value, fiftyoneDegreesPropertyValueType storedValueType, double defaultValue)
Function to convert the binary value to double when possible.
int fiftyoneDegreesStoredBinaryValueToIntOrDefault(const fiftyoneDegreesStoredBinaryValue *value, fiftyoneDegreesPropertyValueType storedValueType, int defaultValue)
Function to convert the binary value to int when possible.
void * fiftyoneDegreesStoredBinaryValueRead(const fiftyoneDegreesCollectionFile *file, const fiftyoneDegreesCollectionKey *key, fiftyoneDegreesData *data, fiftyoneDegreesException *exception)
Reads a binary value from the source file at the offset within the string structure.
bool fiftyoneDegreesStoredBinaryValueToBoolOrDefault(const fiftyoneDegreesStoredBinaryValue *value, fiftyoneDegreesPropertyValueType storedValueType, bool defaultValue)
Function to convert the binary value to bool when possible.
const fiftyoneDegreesStoredBinaryValue * fiftyoneDegreesStoredBinaryValueGet(const fiftyoneDegreesCollection *strings, uint32_t offset, fiftyoneDegreesPropertyValueType storedValueType, fiftyoneDegreesCollectionItem *item, fiftyoneDegreesException *exception)
Gets the binary value at the required offset from the collection provided.
fiftyoneDegreesFloatInternal fiftyoneDegreesFloat
For some compilers such as clang and Microsoft C or computers where the IEEE single precision standar...
Definition float.h:191
Type of collection where the collection is streamed from file.
Definition collection.h:456
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
Explains to a collection (or cache) what the consumer is looking for.
Definition collectionKey.h:76
Data structure used for reusing memory which may have been allocated in a previous operation.
Definition data.h:105
Structure used to represent a 51Degrees exception and passed into methods that might generate excepti...
Definition exceptions.h:115
String buffer for building strings with memory checks.
Definition stringBuilder.h:86
Definition string.h:97
Definition storedBinaryValue.h:75
unsigned char firstByte
The first byte of the array.
Definition storedBinaryValue.h:77
uint16_t size
Size of the byte array in memory (starting from 'firstByte').
Definition storedBinaryValue.h:76
"Packed" value that can be present inside "strings" of dataset.
Definition storedBinaryValue.h:85
fiftyoneDegreesString stringValue
String value (ASCII or UTF-8).
Definition storedBinaryValue.h:86
byte byteValue
Single byte value.
Definition storedBinaryValue.h:91
int16_t shortValue
Short value.
Definition storedBinaryValue.h:90
int32_t intValue
Integer value.
Definition storedBinaryValue.h:89
fiftyoneDegreesVarLengthByteArray byteArrayValue
Byte array value (e.g.
Definition storedBinaryValue.h:87
fiftyoneDegreesFloat floatValue
single precision floating point value
Definition storedBinaryValue.h:88